xref: /kvmtool/include/kvm/devices.h (revision 8f160708e68f4322cd698052d17ade8708d0982c)
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