void virtio_queue_set_notification(VirtQueue *vq, int enable)

{

    vq->notification = enable;

    if (virtio_has_feature(vq->vdev, VIRTIO_RING_F_EVENT_IDX)) {

        vring_set_avail_event(vq, vring_avail_idx(vq));

    } else if (enable) {

        vring_used_flags_unset_bit(vq, VRING_USED_F_NO_NOTIFY);

    } else {

        vring_used_flags_set_bit(vq, VRING_USED_F_NO_NOTIFY);

    }

    if (enable) {

        /* Expose avail event/used flags before caller checks the avail idx. */

        smp_mb();

    }

}

void virtio_queue_set_notification(VirtQueue *vq, int enable)

{

    vq->notification = enable;

    if (virtio_has_feature(vq->vdev, VIRTIO_RING_F_EVENT_IDX)) {

        vring_set_avail_event(vq, vring_avail_idx(vq));

    } else if (enable) {

        vring_used_flags_unset_bit(vq, VRING_USED_F_NO_NOTIFY);

    } else {

        vring_used_flags_set_bit(vq, VRING_USED_F_NO_NOTIFY);

    }

    if (enable) {

        

        smp_mb();

    }

}

void FUNC_0(VirtQueue *VAR_0, int VAR_1)

{

    VAR_0->notification = VAR_1;

    if (virtio_has_feature(VAR_0->vdev, VIRTIO_RING_F_EVENT_IDX)) {

        vring_set_avail_event(VAR_0, vring_avail_idx(VAR_0));

    } else if (VAR_1) {

        vring_used_flags_unset_bit(VAR_0, VRING_USED_F_NO_NOTIFY);

    } else {

        vring_used_flags_set_bit(VAR_0, VRING_USED_F_NO_NOTIFY);

    }

    if (VAR_1) {

        

        smp_mb();

    }

}

void FUNC_0(VirtQueue *VAR_0, int VAR_1)
{ VAR_0->notification = VAR_1; if (virtio_has_feature(VAR_0->vdev, VIRTIO_RING_F_EVENT_IDX)) { vring_set_avail_event(VAR_0, vring_avail_idx(VAR_0)); } else if (VAR_1) { vring_used_flags_unset_bit(VAR_0, VRING_USED_F_NO_NOTIFY); } else { vring_used_flags_set_bit(VAR_0, VRING_USED_F_NO_NOTIFY); } if (VAR_1) { smp_mb(); } }