[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 10/12] libvhost-user: add vu_queue_unpop()
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH v4 10/12] libvhost-user: add vu_queue_unpop() |
Date: |
Wed, 27 Feb 2019 11:30:15 +0100 |
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 <address@hidden>
---
contrib/libvhost-user/libvhost-user.h | 14 ++++++++++++++
contrib/libvhost-user/libvhost-user.c | 16 ++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/contrib/libvhost-user/libvhost-user.h
b/contrib/libvhost-user/libvhost-user.h
index b0c798fa1a..01738bf44a 100644
--- a/contrib/libvhost-user/libvhost-user.h
+++ b/contrib/libvhost-user/libvhost-user.h
@@ -459,6 +459,20 @@ void vu_queue_notify(VuDev *dev, VuVirtq *vq);
*/
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:
* @dev: a VuDev context
diff --git a/contrib/libvhost-user/libvhost-user.c
b/contrib/libvhost-user/libvhost-user.c
index fcf5014240..df72d3e440 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -1966,6 +1966,22 @@ vu_queue_pop(VuDev *dev, VuVirtq *vq, size_t sz)
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
vu_queue_rewind(VuDev *dev, VuVirtq *vq, unsigned int num)
{
--
2.21.0
- [Qemu-devel] [PATCH v4 00/12] vhost-user-backend & vhost-user-input, Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 06/12] Add vhost-user-backend, Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 12/12] contrib: add vhost-user-input, Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 10/12] libvhost-user: add vu_queue_unpop(),
Marc-André Lureau <=
- [Qemu-devel] [PATCH v4 05/12] vhost-user: wrap some read/write with retry handling, Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 03/12] vhost-user: simplify vhost_user_init/vhost_user_cleanup, Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 11/12] Add vhost-user-input-pci, Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 02/12] vhost-user: define conventions for vhost-user backends, Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 04/12] libvhost-user: exit by default on VHOST_USER_NONE, Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 08/12] vhost-user: add vhost_user_input_get_config(), Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 07/12] vhost-user: split vhost_user_read(), Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 01/12] libvhost-user: fix clang enum-conversion warning, Marc-André Lureau, 2019/02/27
- [Qemu-devel] [PATCH v4 09/12] libvhost-user-glib: export vug_source_new(), Marc-André Lureau, 2019/02/27