]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/XenBusDxe/XenBusDxe.h
OvmfPkg/XenBusDxe: Introduce XenBus support itself.
[mirror_edk2.git] / OvmfPkg / XenBusDxe / XenBusDxe.h
index 6be5c58d920f11b065a72359afeedefbacf995d1..11640223ebf4dba90cf9817be67d0cd1497640aa 100644 (file)
@@ -82,6 +82,7 @@ extern EFI_COMPONENT_NAME_PROTOCOL  gXenBusDxeComponentName;
 #define PCI_DEVICE_ID_XEN_PLATFORM       0x0001\r
 \r
 \r
+typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH;\r
 typedef struct _XENBUS_DEVICE XENBUS_DEVICE;\r
 \r
 // Have the state of the driver.\r
@@ -92,11 +93,29 @@ struct _XENBUS_DEVICE {
   EFI_HANDLE                    ControllerHandle;\r
   EFI_PCI_IO_PROTOCOL           *PciIo;\r
   EFI_EVENT                     ExitBootEvent;\r
+  EFI_DEVICE_PATH_PROTOCOL      *DevicePath;\r
+  LIST_ENTRY                    ChildList;\r
 \r
   VOID                          *Hyperpage;\r
   shared_info_t                 *SharedInfo;\r
 };\r
 \r
+// There is one of this struct allocated for every child.\r
+#define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd')\r
+typedef struct {\r
+    UINTN Signature;\r
+    LIST_ENTRY Link;\r
+    EFI_HANDLE Handle;\r
+    XENBUS_PROTOCOL XenBusIo;\r
+    XENBUS_DEVICE *Dev;\r
+    XENBUS_DEVICE_PATH *DevicePath;\r
+} XENBUS_PRIVATE_DATA;\r
+\r
+#define XENBUS_PRIVATE_DATA_FROM_THIS(a) \\r
+  CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE)\r
+#define XENBUS_PRIVATE_DATA_FROM_LINK(a) \\r
+  CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE)\r
+\r
 /*\r
  * Helpers\r
  */\r