summary refs log tree commit diff stats
path: root/include/hw/xen/xen-block.h
diff options
context:
space:
mode:
authorPaul Durrant <paul.durrant@citrix.com>2019-01-08 14:48:59 +0000
committerAnthony PERARD <anthony.perard@citrix.com>2019-01-14 13:45:40 +0000
commitb6af8926fb858c4f1426e5acb2cfc1f0580ec98a (patch)
tree51cdeee977b3bd6cad7fef1985c1273fbf826654 /include/hw/xen/xen-block.h
parentd4683cf952d3bdcbcbfcfd982d77cb6b02041040 (diff)
downloadfocaccia-qemu-b6af8926fb858c4f1426e5acb2cfc1f0580ec98a.tar.gz
focaccia-qemu-b6af8926fb858c4f1426e5acb2cfc1f0580ec98a.zip
xen: add implementations of xen-block connect and disconnect functions...
...and wire in the dataplane.

This patch adds the remaining code to make the xen-block XenDevice
functional. The parameters that a block frontend expects to find are
populated in the backend xenstore area, and the 'ring-ref' and
'event-channel' values specified in the frontend xenstore area are
mapped/bound and used to set up the dataplane.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Reviewed-by: Anthony Perard <anthony.perard@citrix.com>
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Diffstat (limited to 'include/hw/xen/xen-block.h')
-rw-r--r--include/hw/xen/xen-block.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/hw/xen/xen-block.h b/include/hw/xen/xen-block.h
index 29413256e9..c4223f9be1 100644
--- a/include/hw/xen/xen-block.h
+++ b/include/hw/xen/xen-block.h
@@ -9,6 +9,9 @@
 #define HW_XEN_BLOCK_H
 
 #include "hw/xen/xen-bus.h"
+#include "hw/block/block.h"
+#include "hw/block/dataplane/xen-block.h"
+#include "sysemu/iothread.h"
 
 typedef enum XenBlockVdevType {
     XEN_BLOCK_VDEV_TYPE_INVALID,
@@ -28,11 +31,17 @@ typedef struct XenBlockVdev {
 
 typedef struct XenBlockProperties {
     XenBlockVdev vdev;
+    BlockConf conf;
+    unsigned int max_ring_page_order;
+    IOThread *iothread;
 } XenBlockProperties;
 
 typedef struct XenBlockDevice {
     XenDevice xendev;
     XenBlockProperties props;
+    const char *device_type;
+    unsigned int info;
+    XenBlockDataPlane *dataplane;
 } XenBlockDevice;
 
 typedef void (*XenBlockDeviceRealize)(XenBlockDevice *blockdev, Error **errp);