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