static int virtio_pci_set_host_notifier_internal(VirtIOPCIProxy *proxy,

                                                 int n, bool assign, bool set_handler)

{

    VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus);

    VirtQueue *vq = virtio_get_queue(vdev, n);

    EventNotifier *notifier = virtio_queue_get_host_notifier(vq);

    int r = 0;



    if (assign) {

        r = event_notifier_init(notifier, 1);

        if (r < 0) {

            error_report("%s: unable to init event notifier: %d",

                         __func__, r);

            return r;

        }

        virtio_queue_set_host_notifier_fd_handler(vq, true, set_handler);

        memory_region_add_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,

                                  true, n, notifier);

    } else {

        memory_region_del_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,

                                  true, n, notifier);

        virtio_queue_set_host_notifier_fd_handler(vq, false, false);

        event_notifier_cleanup(notifier);

    }

    return r;

}

static int virtio_pci_set_host_notifier_internal(VirtIOPCIProxy *proxy,

                                                 int n, bool assign, bool set_handler)

{

    VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus);

    VirtQueue *vq = virtio_get_queue(vdev, n);

    EventNotifier *notifier = virtio_queue_get_host_notifier(vq);

    int r = 0;



    if (assign) {

        r = event_notifier_init(notifier, 1);

        if (r < 0) {

            error_report("%s: unable to init event notifier: %d",

                         __func__, r);

            return r;

        }

        virtio_queue_set_host_notifier_fd_handler(vq, true, set_handler);

        memory_region_add_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,

                                  true, n, notifier);

    } else {

        memory_region_del_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,

                                  true, n, notifier);

        virtio_queue_set_host_notifier_fd_handler(vq, false, false);

        event_notifier_cleanup(notifier);

    }

    return r;

}

        memory_region_add_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,                                   true, n, notifier);         memory_region_del_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,                                   true, n, notifier);
static int FUNC_0(VirtIOPCIProxy *VAR_0,

                                                 int VAR_1, bool VAR_2, bool VAR_3)

{

    VirtIODevice *vdev = virtio_bus_get_device(&VAR_0->bus);

    VirtQueue *vq = virtio_get_queue(vdev, VAR_1);

    EventNotifier *notifier = virtio_queue_get_host_notifier(vq);

    int VAR_4 = 0;



    if (VAR_2) {

        VAR_4 = event_notifier_init(notifier, 1);

        if (VAR_4 < 0) {

            error_report("%s: unable to init event notifier: %d",

                         __func__, VAR_4);

            return VAR_4;

        }

        virtio_queue_set_host_notifier_fd_handler(vq, true, VAR_3);

        memory_region_add_eventfd(&VAR_0->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,

                                  true, VAR_1, notifier);

    } else {

        memory_region_del_eventfd(&VAR_0->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,

                                  true, VAR_1, notifier);

        virtio_queue_set_host_notifier_fd_handler(vq, false, false);

        event_notifier_cleanup(notifier);

    }

    return VAR_4;

}

static int FUNC_0(VirtIOPCIProxy *VAR_0,
int VAR_1, bool VAR_2, bool VAR_3)
{ VirtIODevice *vdev = virtio_bus_get_device(&VAR_0->bus); VirtQueue *vq = virtio_get_queue(vdev, VAR_1); EventNotifier *notifier = virtio_queue_get_host_notifier(vq); int VAR_4 = 0; if (VAR_2) { VAR_4 = event_notifier_init(notifier, 1); if (VAR_4 < 0) { error_report("%s: unable to init event notifier: %d",
__func__, VAR_4); return VAR_4; } virtio_queue_set_host_notifier_fd_handler(vq, true, VAR_3); memory_region_add_eventfd(&VAR_0->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,
true, VAR_1, notifier); } else { memory_region_del_eventfd(&VAR_0->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,
true, VAR_1, notifier); virtio_queue_set_host_notifier_fd_handler(vq, false, false); event_notifier_cleanup(notifier); } return VAR_4; }