[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v1 06/37] vhost-pci-slave: set up the fundamental ha
From: |
Wei Wang |
Subject: |
[Qemu-devel] [PATCH v1 06/37] vhost-pci-slave: set up the fundamental handlers for the server socket |
Date: |
Sat, 17 Dec 2016 18:43:16 +0800 |
Signed-off-by: Wei Wang <address@hidden>
---
hw/virtio/vhost-pci-slave.c | 53 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/hw/virtio/vhost-pci-slave.c b/hw/virtio/vhost-pci-slave.c
index 5ff9a09..2278f63 100644
--- a/hw/virtio/vhost-pci-slave.c
+++ b/hw/virtio/vhost-pci-slave.c
@@ -15,9 +15,59 @@
#include "qapi/error.h"
#include "qemu/error-report.h"
#include "hw/virtio/vhost-pci-slave.h"
+#include "hw/virtio/vhost-user.h"
VhostPCISlave *vp_slave;
+static void vp_slave_event(void *opaque, int event)
+{
+ switch (event) {
+ case CHR_EVENT_OPENED:
+ break;
+ case CHR_EVENT_CLOSED:
+ break;
+ }
+}
+
+static int vp_slave_can_read(void *opaque)
+{
+ return VHOST_USER_HDR_SIZE;
+}
+
+static void vp_slave_read(void *opaque, const uint8_t *buf, int size)
+{
+ VhostUserMsg msg;
+ uint8_t *p = (uint8_t *) &msg;
+ CharBackend *chr_be = (CharBackend *)opaque;
+
+ if (size != VHOST_USER_HDR_SIZE) {
+ error_report("Wrong message size received %d", size);
+ return;
+ }
+
+ memcpy(p, buf, VHOST_USER_HDR_SIZE);
+
+ if (msg.size) {
+ p += VHOST_USER_HDR_SIZE;
+ size = qemu_chr_fe_read_all(chr_be, p, msg.size);
+ if (size != msg.size) {
+ error_report("Wrong message size received %d != %d",
+ size, msg.size);
+ return;
+ }
+ }
+
+ if (msg.request > VHOST_USER_MAX)
+ error_report("vhost-pci-slave read incorrect msg");
+
+ switch(msg.request) {
+ default:
+ error_report("vhost-pci-slave does not support msg request = %d",
+ msg.request);
+ break;
+ }
+}
+
static CharDriverState *vp_slave_parse_chardev(const char *id)
{
CharDriverState *chr = qemu_chr_find(id);
@@ -40,6 +90,9 @@ int vhost_pci_slave_init(QemuOpts *opts)
return -1;
}
qemu_chr_fe_init(&vp_slave->chr_be, chr, &error_abort);
+ qemu_chr_fe_set_handlers(&vp_slave->chr_be, vp_slave_can_read,
+ vp_slave_read, vp_slave_event,
+ &vp_slave->chr_be, NULL, true);
return 0;
}
--
2.7.4
- [Qemu-devel] [PATCH v1 00/37] Implementation of vhost-pci for inter-vm commucation, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 01/37] vhost-pci-net: the fundamental vhost-pci-net device emulation, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 02/37] vhost-pci-net: the fundamental implementation of vhost-pci-net-pci, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 04/37] vl: add the vhost-pci-slave command line option, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 03/37] vhost-user: share the vhost-user protocol related structures, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 05/37] vhost-pci-slave: start the implementation of vhost-pci-slave, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 06/37] vhost-pci-slave: set up the fundamental handlers for the server socket,
Wei Wang <=
- [Qemu-devel] [PATCH v1 08/37] vhost-pci-slave/msg: VHOST_USER_SET_FEATURES, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 07/37] vhost-pci-slave/msg: VHOST_USER_GET_FEATURES, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 09/37] vhost-pci-slave/msg: VHOST_USER_GET_PROTOCOL_FEATURES, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 10/37] vhost-pci-slave/msg: VHOST_USER_SET_PROTOCOL_FEATURES, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 11/37] vhost-user/msg: VHOST_USER_PROTOCOL_F_SET_DEVICE_ID, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 12/37] vhost-pci-slave/msg: VHOST_USER_SET_DEVICE_ID, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 14/37] vhost-pci-slave/msg: VHOST_USER_SET_OWNER, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 13/37] vhost-pci-slave/msg: VHOST_USER_GET_QUEUE_NUM, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 15/37] vhost-pci-slave/msg: VHOST_USER_SET_MEM_TABLE, Wei Wang, 2016/12/17
- [Qemu-devel] [PATCH v1 17/37] vhost-pci-slave/msg: VHOST_USER_SET_VRING_BASE, Wei Wang, 2016/12/17