mirror of
https://github.com/mii443/qemu.git
synced 2025-08-27 17:39:37 +00:00
libvhost-user: add vu_queue_unpop()
vhost-user-input will make use of this function to undo some queue pop in case the virtio queue does not have enough room. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20190308140454.32437-11-marcandre.lureau@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
committed by
Michael S. Tsirkin
parent
922ef483ec
commit
b13919ab64
@ -1966,6 +1966,22 @@ vu_queue_pop(VuDev *dev, VuVirtq *vq, size_t sz)
|
|||||||
return elem;
|
return elem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
vu_queue_detach_element(VuDev *dev, VuVirtq *vq, VuVirtqElement *elem,
|
||||||
|
size_t len)
|
||||||
|
{
|
||||||
|
vq->inuse--;
|
||||||
|
/* unmap, when DMA support is added */
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
vu_queue_unpop(VuDev *dev, VuVirtq *vq, VuVirtqElement *elem,
|
||||||
|
size_t len)
|
||||||
|
{
|
||||||
|
vq->last_avail_idx--;
|
||||||
|
vu_queue_detach_element(dev, vq, elem, len);
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
vu_queue_rewind(VuDev *dev, VuVirtq *vq, unsigned int num)
|
vu_queue_rewind(VuDev *dev, VuVirtq *vq, unsigned int num)
|
||||||
{
|
{
|
||||||
|
@ -458,6 +458,20 @@ void vu_queue_notify(VuDev *dev, VuVirtq *vq);
|
|||||||
*/
|
*/
|
||||||
void *vu_queue_pop(VuDev *dev, VuVirtq *vq, size_t sz);
|
void *vu_queue_pop(VuDev *dev, VuVirtq *vq, size_t sz);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* vu_queue_unpop:
|
||||||
|
* @dev: a VuDev context
|
||||||
|
* @vq: a VuVirtq queue
|
||||||
|
* @elem: The #VuVirtqElement
|
||||||
|
* @len: number of bytes written
|
||||||
|
*
|
||||||
|
* Pretend the most recent element wasn't popped from the virtqueue. The next
|
||||||
|
* call to vu_queue_pop() will refetch the element.
|
||||||
|
*/
|
||||||
|
void vu_queue_unpop(VuDev *dev, VuVirtq *vq, VuVirtqElement *elem,
|
||||||
|
size_t len);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* vu_queue_rewind:
|
* vu_queue_rewind:
|
||||||
* @dev: a VuDev context
|
* @dev: a VuDev context
|
||||||
|
Reference in New Issue
Block a user