#include <linux/vfio.h>
#include <linux/eventfd.h>
#include <linux/file.h>
#include <linux/module.h>
#include <linux/slab.h>
#include "vfio.h"
static struct workqueue_struct *vfio_irqfd_cleanup_wq;
static DEFINE_SPINLOCK(virqfd_lock);
int __init vfio_virqfd_init(void)
{ … }
void vfio_virqfd_exit(void)
{ … }
static void virqfd_deactivate(struct virqfd *virqfd)
{ … }
static int virqfd_wakeup(wait_queue_entry_t *wait, unsigned mode, int sync, void *key)
{ … }
static void virqfd_ptable_queue_proc(struct file *file,
wait_queue_head_t *wqh, poll_table *pt)
{ … }
static void virqfd_shutdown(struct work_struct *work)
{ … }
static void virqfd_inject(struct work_struct *work)
{ … }
static void virqfd_flush_inject(struct work_struct *work)
{ … }
int vfio_virqfd_enable(void *opaque,
int (*handler)(void *, void *),
void (*thread)(void *, void *),
void *data, struct virqfd **pvirqfd, int fd)
{ … }
EXPORT_SYMBOL_GPL(…);
void vfio_virqfd_disable(struct virqfd **pvirqfd)
{ … }
EXPORT_SYMBOL_GPL(…);
void vfio_virqfd_flush_thread(struct virqfd **pvirqfd)
{ … }
EXPORT_SYMBOL_GPL(…);