xref: /kvmtool/include/kvm/ioeventfd.h (revision ed83730f9750e40ad0351cab8b22e09b2820da03)
1 #ifndef KVM__IOEVENTFD_H
2 #define KVM__IOEVENTFD_H
3 
4 #include <linux/types.h>
5 #include <linux/list.h>
6 #include <sys/eventfd.h>
7 #include "kvm/util.h"
8 
9 struct kvm;
10 
11 struct ioevent {
12 	u64			io_addr;
13 	u8			io_len;
14 	void			(*fn)(struct kvm *kvm, void *ptr);
15 	struct kvm		*fn_kvm;
16 	void			*fn_ptr;
17 	int			fd;
18 	u64			datamatch;
19 	u32			flags;
20 
21 	struct list_head	list;
22 };
23 
24 #define IOEVENTFD_FLAG_PIO		(1 << 0)
25 #define IOEVENTFD_FLAG_USER_POLL	(1 << 1)
26 
27 int ioeventfd__init(struct kvm *kvm);
28 int ioeventfd__exit(struct kvm *kvm);
29 int ioeventfd__add_event(struct ioevent *ioevent, int flags);
30 int ioeventfd__del_event(u64 addr, u64 datamatch);
31 
32 #endif
33