blob: a1cb8410ed14ee884a18eef6124c80353ef7534a [file] [log] [blame]
#ifndef KVM__IOEVENTFD_H
#define KVM__IOEVENTFD_H
#include <linux/types.h>
#include <linux/list.h>
#include <sys/eventfd.h>
#include "kvm/util.h"
struct kvm;
struct ioevent {
u64 io_addr;
u8 io_len;
void (*fn)(struct kvm *kvm, void *ptr);
struct kvm *fn_kvm;
void *fn_ptr;
int fd;
u64 datamatch;
u32 flags;
struct list_head list;
};
#define IOEVENTFD_FLAG_PIO (1 << 0)
#define IOEVENTFD_FLAG_USER_POLL (1 << 1)
int ioeventfd__init(struct kvm *kvm);
int ioeventfd__exit(struct kvm *kvm);
int ioeventfd__add_event(struct ioevent *ioevent, int flags);
int ioeventfd__del_event(u64 addr, u64 datamatch);
#endif