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> 621ff329dSWill Deacon 721ff329dSWill Deacon enum device_bus_type { 821ff329dSWill Deacon DEVICE_BUS_PCI, 921ff329dSWill Deacon DEVICE_BUS_MMIO, 10*bb7b03f3SWill Deacon DEVICE_BUS_IOPORT, 1121ff329dSWill Deacon DEVICE_BUS_MAX, 1221ff329dSWill Deacon }; 1321ff329dSWill Deacon 1421ff329dSWill Deacon struct device_header { 1521ff329dSWill Deacon enum device_bus_type bus_type; 1621ff329dSWill Deacon void *data; 1721ff329dSWill Deacon int dev_num; 1821ff329dSWill Deacon struct rb_node node; 1921ff329dSWill Deacon }; 2021ff329dSWill Deacon 2121ff329dSWill Deacon int device__register(struct device_header *dev); 22*bb7b03f3SWill Deacon void device__unregister(struct device_header *dev); 2321ff329dSWill Deacon struct device_header *device__find_dev(enum device_bus_type bus_type, 2421ff329dSWill Deacon u8 dev_num); 2521ff329dSWill Deacon 2621ff329dSWill Deacon struct device_header *device__first_dev(enum device_bus_type bus_type); 2721ff329dSWill Deacon struct device_header *device__next_dev(struct device_header *dev); 2821ff329dSWill Deacon 2921ff329dSWill Deacon #endif /* KVM__DEVICES_H */ 30