On Fri, Dec 28, 2012 at 06:31:59PM +0800, Jason Wang wrote:
> Some device (such as virtio-net) needs the ability to destroy or re-order the
> virtqueues, this patch adds a helper to do this.
> 
> Signed-off-by: Jason Wang <jasowang>

Actually del_queue unlike what the subject says :)

> ---
>  hw/virtio.c |    9 +++++++++
>  hw/virtio.h |    2 ++
>  2 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/virtio.c b/hw/virtio.c
> index f40a8c5..bc3c9c3 100644
> --- a/hw/virtio.c
> +++ b/hw/virtio.c
> @@ -700,6 +700,15 @@ VirtQueue *virtio_add_queue(VirtIODevice *vdev, int 
> queue_size,
>      return &vdev->vq[i];
>  }
>  
> +void virtio_del_queue(VirtIODevice *vdev, int n)
> +{
> +    if (n < 0 || n >= VIRTIO_PCI_QUEUE_MAX) {
> +        abort();
> +    }
> +
> +    vdev->vq[n].vring.num = 0;
> +}
> +
>  void virtio_irq(VirtQueue *vq)
>  {
>      trace_virtio_irq(vq);
> diff --git a/hw/virtio.h b/hw/virtio.h
> index 7c17f7b..f6cb0f9 100644
> --- a/hw/virtio.h
> +++ b/hw/virtio.h
> @@ -138,6 +138,8 @@ VirtQueue *virtio_add_queue(VirtIODevice *vdev, int 
> queue_size,
>                              void (*handle_output)(VirtIODevice *,
>                                                    VirtQueue *));
>  
> +void virtio_del_queue(VirtIODevice *vdev, int n);
> +
>  void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
>                      unsigned int len);
>  void virtqueue_flush(VirtQueue *vq, unsigned int count);
> -- 
> 1.7.1

Reply via email to