1*21ff329dSWill Deacon #ifndef KVM__DEVICES_H 2*21ff329dSWill Deacon #define KVM__DEVICES_H 3*21ff329dSWill Deacon 4*21ff329dSWill Deacon #include <linux/rbtree.h> 5*21ff329dSWill Deacon #include <linux/types.h> 6*21ff329dSWill Deacon 7*21ff329dSWill Deacon enum device_bus_type { 8*21ff329dSWill Deacon DEVICE_BUS_PCI, 9*21ff329dSWill Deacon DEVICE_BUS_MMIO, 10*21ff329dSWill Deacon DEVICE_BUS_MAX, 11*21ff329dSWill Deacon }; 12*21ff329dSWill Deacon 13*21ff329dSWill Deacon struct device_header { 14*21ff329dSWill Deacon enum device_bus_type bus_type; 15*21ff329dSWill Deacon void *data; 16*21ff329dSWill Deacon int dev_num; 17*21ff329dSWill Deacon struct rb_node node; 18*21ff329dSWill Deacon }; 19*21ff329dSWill Deacon 20*21ff329dSWill Deacon int device__register(struct device_header *dev); 21*21ff329dSWill Deacon struct device_header *device__find_dev(enum device_bus_type bus_type, 22*21ff329dSWill Deacon u8 dev_num); 23*21ff329dSWill Deacon 24*21ff329dSWill Deacon struct device_header *device__first_dev(enum device_bus_type bus_type); 25*21ff329dSWill Deacon struct device_header *device__next_dev(struct device_header *dev); 26*21ff329dSWill Deacon 27*21ff329dSWill Deacon #endif /* KVM__DEVICES_H */ 28