#ifndef DEVICE_PATH_H #define DEVICE_PATH_H enum device_path_type { DEVICE_PATH_NONE = 0, DEVICE_PATH_ROOT, DEVICE_PATH_DEFAULT_CPU, DEVICE_PATH_PCI, DEVICE_PATH_PNP, DEVICE_PATH_I2C, DEVICE_PATH_APIC, DEVICE_PATH_PCI_DOMAIN, DEVICE_APIC_CLUSTER, }; struct pci_domain_path { unsigned domain; }; struct pci_path { unsigned devfn; }; struct pnp_path { unsigned port; unsigned device; }; struct i2c_path { unsigned device; }; struct apic_path { unsigned apic_id; }; struct apic_cluster_path { unsigned cluster; }; struct device_path { enum device_path_type type; union { struct pci_path pci; struct pnp_path pnp; struct i2c_path i2c; struct apic_path apic; struct pci_domain_path pci_domain; struct apic_cluster_path apic_cluster; } u; }; #define DEVICE_PATH_MAX 30 extern int path_eq(struct device_path *path1, struct device_path *path2); #endif /* DEVICE_PATH_H */