121ff329dSWill Deacon #ifndef KVM__DEVICES_H 221ff329dSWill Deacon #define KVM__DEVICES_H 321ff329dSWill Deacon 421ff329dSWill Deacon #include <linux/rbtree.h> 521ff329dSWill Deacon #include <linux/types.h> 6*8f160708SAlexandru Elisei #include <linux/compiler.h> 721ff329dSWill Deacon 821ff329dSWill Deacon enum device_bus_type { 921ff329dSWill Deacon DEVICE_BUS_PCI, 1021ff329dSWill Deacon DEVICE_BUS_MMIO, 11bb7b03f3SWill Deacon DEVICE_BUS_IOPORT, 1221ff329dSWill Deacon DEVICE_BUS_MAX, 1321ff329dSWill Deacon }; 1421ff329dSWill Deacon 1521ff329dSWill Deacon struct device_header { 1621ff329dSWill Deacon enum device_bus_type bus_type; 1721ff329dSWill Deacon void *data; 1821ff329dSWill Deacon int dev_num; 1921ff329dSWill Deacon struct rb_node node; 2021ff329dSWill Deacon }; 2121ff329dSWill Deacon 22*8f160708SAlexandru Elisei int __must_check device__register(struct device_header *dev); 23bb7b03f3SWill Deacon void device__unregister(struct device_header *dev); 2421ff329dSWill Deacon struct device_header *device__find_dev(enum device_bus_type bus_type, 2521ff329dSWill Deacon u8 dev_num); 2621ff329dSWill Deacon 2721ff329dSWill Deacon struct device_header *device__first_dev(enum device_bus_type bus_type); 2821ff329dSWill Deacon struct device_header *device__next_dev(struct device_header *dev); 2921ff329dSWill Deacon 3021ff329dSWill Deacon #endif /* KVM__DEVICES_H */ 31