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