]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/XenBusDxe/XenBusDxe.h
IntelFrameworkModule/ThunkKb: ReadKeyStrokeEx always return key state
[mirror_edk2.git] / OvmfPkg / XenBusDxe / XenBusDxe.h
index bcd9f3cef361607614708518453d525c0a38621c..953e4b72e85e67992380e6a7a698b1ff89c22259 100644 (file)
 //\r
 // Consumed Protocols\r
 //\r
-#include <Protocol/PciIo.h>\r
+#include <Protocol/XenIo.h>\r
 \r
 \r
 //\r
 // Produced Protocols\r
 //\r
+#include <Protocol/XenBus.h>\r
 \r
 \r
 //\r
@@ -70,8 +71,63 @@ extern EFI_COMPONENT_NAME_PROTOCOL  gXenBusDxeComponentName;
 //\r
 // Other stuff\r
 //\r
-#define PCI_VENDOR_ID_XEN                0x5853\r
-#define PCI_DEVICE_ID_XEN_PLATFORM       0x0001\r
-\r
+#include <IndustryStandard/Xen/xen.h>\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
+#define XENBUS_DEVICE_SIGNATURE SIGNATURE_32 ('X','B','s','t')\r
+struct _XENBUS_DEVICE {\r
+  UINT32                        Signature;\r
+  EFI_DRIVER_BINDING_PROTOCOL   *This;\r
+  EFI_HANDLE                    ControllerHandle;\r
+  XENIO_PROTOCOL                *XenIo;\r
+  EFI_EVENT                     ExitBootEvent;\r
+  EFI_DEVICE_PATH_PROTOCOL      *DevicePath;\r
+  LIST_ENTRY                    ChildList;\r
+\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
+\r
+/**\r
+  Atomically test and clear a bit.\r
+\r
+  @param Bit      Bit index to test in *Address\r
+  @param Address  The Address to the buffer that contain the bit to test.\r
+\r
+  @return Value of the Bit before it was cleared.\r
+**/\r
+INT32\r
+EFIAPI\r
+TestAndClearBit (\r
+  IN INT32 Bit,\r
+  IN VOID  *Address\r
+  );\r
+\r
+CHAR8*\r
+AsciiStrDup (\r
+  IN CONST CHAR8* Str\r
+  );\r
 \r
 #endif\r