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