static int virtio_pci_start_ioeventfd(VirtIOPCIProxy *proxy)

{

    int n, r;



    if (!(proxy->flags & VIRTIO_PCI_FLAG_USE_IOEVENTFD) ||

        proxy->ioeventfd_disabled ||

        proxy->ioeventfd_started) {

        return 0;

    }



    for (n = 0; n < VIRTIO_PCI_QUEUE_MAX; n++) {

        if (!virtio_queue_get_num(proxy->vdev, n)) {

            continue;

        }



        r = virtio_pci_set_host_notifier_internal(proxy, n, true);

        if (r < 0) {

            goto assign_error;

        }



        virtio_pci_set_host_notifier_fd_handler(proxy, n, true);

    }

    proxy->ioeventfd_started = true;

    return 0;



assign_error:

    while (--n >= 0) {

        if (!virtio_queue_get_num(proxy->vdev, n)) {

            continue;

        }



        virtio_pci_set_host_notifier_fd_handler(proxy, n, false);

        virtio_pci_set_host_notifier_internal(proxy, n, false);

    }

    proxy->ioeventfd_started = false;

    proxy->ioeventfd_disabled = true;

    return r;

}

static int virtio_pci_start_ioeventfd(VirtIOPCIProxy *proxy)

{

    int n, r;



    if (!(proxy->flags & VIRTIO_PCI_FLAG_USE_IOEVENTFD) ||

        proxy->ioeventfd_disabled ||

        proxy->ioeventfd_started) {

        return 0;

    }



    for (n = 0; n < VIRTIO_PCI_QUEUE_MAX; n++) {

        if (!virtio_queue_get_num(proxy->vdev, n)) {

            continue;

        }



        r = virtio_pci_set_host_notifier_internal(proxy, n, true);

        if (r < 0) {

            goto assign_error;

        }



        virtio_pci_set_host_notifier_fd_handler(proxy, n, true);

    }

    proxy->ioeventfd_started = true;

    return 0;



assign_error:

    while (--n >= 0) {

        if (!virtio_queue_get_num(proxy->vdev, n)) {

            continue;

        }



        virtio_pci_set_host_notifier_fd_handler(proxy, n, false);

        virtio_pci_set_host_notifier_internal(proxy, n, false);

    }

    proxy->ioeventfd_started = false;

    proxy->ioeventfd_disabled = true;

    return r;

}

static int virtio_pci_start_ioeventfd(VirtIOPCIProxy *proxy)         return 0;     return 0;         virtio_pci_set_host_notifier_internal(proxy, n, false);     proxy->ioeventfd_disabled = true;     return r;         return 0;         virtio_pci_set_host_notifier_internal(proxy, n, false);     return 0;
static int FUNC_0(VirtIOPCIProxy *VAR_0)

{

    int VAR_1, VAR_2;



    if (!(VAR_0->flags & VIRTIO_PCI_FLAG_USE_IOEVENTFD) ||

        VAR_0->ioeventfd_disabled ||

        VAR_0->ioeventfd_started) {

        return 0;

    }



    for (VAR_1 = 0; VAR_1 < VIRTIO_PCI_QUEUE_MAX; VAR_1++) {

        if (!virtio_queue_get_num(VAR_0->vdev, VAR_1)) {

            continue;

        }



        VAR_2 = virtio_pci_set_host_notifier_internal(VAR_0, VAR_1, true);

        if (VAR_2 < 0) {

            goto assign_error;

        }



        virtio_pci_set_host_notifier_fd_handler(VAR_0, VAR_1, true);

    }

    VAR_0->ioeventfd_started = true;

    return 0;



assign_error:

    while (--VAR_1 >= 0) {

        if (!virtio_queue_get_num(VAR_0->vdev, VAR_1)) {

            continue;

        }



        virtio_pci_set_host_notifier_fd_handler(VAR_0, VAR_1, false);

        virtio_pci_set_host_notifier_internal(VAR_0, VAR_1, false);

    }

    VAR_0->ioeventfd_started = false;

    VAR_0->ioeventfd_disabled = true;

    return VAR_2;

}

static int FUNC_0(VirtIOPCIProxy *VAR_0)
{ int VAR_1, VAR_2; if (!(VAR_0->flags & VIRTIO_PCI_FLAG_USE_IOEVENTFD) ||
VAR_0->ioeventfd_disabled ||
VAR_0->ioeventfd_started) { return 0; } for (VAR_1 = 0; VAR_1 < VIRTIO_PCI_QUEUE_MAX; VAR_1++) { if (!virtio_queue_get_num(VAR_0->vdev, VAR_1)) { continue; } VAR_2 = virtio_pci_set_host_notifier_internal(VAR_0, VAR_1, true); if (VAR_2 < 0) { goto assign_error; } virtio_pci_set_host_notifier_fd_handler(VAR_0, VAR_1, true); } VAR_0->ioeventfd_started = true; return 0; assign_error:
while (--VAR_1 >= 0) { if (!virtio_queue_get_num(VAR_0->vdev, VAR_1)) { continue; } virtio_pci_set_host_notifier_fd_handler(VAR_0, VAR_1, false); virtio_pci_set_host_notifier_internal(VAR_0, VAR_1, false); } VAR_0->ioeventfd_started = false; VAR_0->ioeventfd_disabled = true; return VAR_2; }