mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
libqos/virtio: return length written into used descriptor
When a 9p request is flushed (ie, cancelled) by the guest, the device is expected to simply mark the request as used, without sending a 9p reply (ie, without writing anything into the used buffer). To be able to test this, we need access to the length written by the device into the used descriptor. This patch adds a uint32_t * argument to qvirtqueue_get_buf() and qvirtio_wait_used_elem() for this purpose. All existing users are updated accordingly. Signed-off-by: Greg Kurz <groug@kaod.org> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
354b86f85f
commit
be3a678160
6 changed files with 38 additions and 25 deletions
|
@ -108,7 +108,7 @@ static void rx_test(QVirtioDevice *dev,
|
|||
ret = iov_send(socket, iov, 2, 0, sizeof(len) + sizeof(test));
|
||||
g_assert_cmpint(ret, ==, sizeof(test) + sizeof(len));
|
||||
|
||||
qvirtio_wait_used_elem(dev, vq, free_head, QVIRTIO_NET_TIMEOUT_US);
|
||||
qvirtio_wait_used_elem(dev, vq, free_head, NULL, QVIRTIO_NET_TIMEOUT_US);
|
||||
memread(req_addr + VNET_HDR_SIZE, buffer, sizeof(test));
|
||||
g_assert_cmpstr(buffer, ==, "TEST");
|
||||
|
||||
|
@ -131,7 +131,7 @@ static void tx_test(QVirtioDevice *dev,
|
|||
free_head = qvirtqueue_add(vq, req_addr, 64, false, false);
|
||||
qvirtqueue_kick(dev, vq, free_head);
|
||||
|
||||
qvirtio_wait_used_elem(dev, vq, free_head, QVIRTIO_NET_TIMEOUT_US);
|
||||
qvirtio_wait_used_elem(dev, vq, free_head, NULL, QVIRTIO_NET_TIMEOUT_US);
|
||||
guest_free(alloc, req_addr);
|
||||
|
||||
ret = qemu_recv(socket, &len, sizeof(len), 0);
|
||||
|
@ -182,7 +182,7 @@ static void rx_stop_cont_test(QVirtioDevice *dev,
|
|||
rsp = qmp("{ 'execute' : 'cont'}");
|
||||
QDECREF(rsp);
|
||||
|
||||
qvirtio_wait_used_elem(dev, vq, free_head, QVIRTIO_NET_TIMEOUT_US);
|
||||
qvirtio_wait_used_elem(dev, vq, free_head, NULL, QVIRTIO_NET_TIMEOUT_US);
|
||||
memread(req_addr + VNET_HDR_SIZE, buffer, sizeof(test));
|
||||
g_assert_cmpstr(buffer, ==, "TEST");
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue