diff options
Diffstat (limited to 'roms/edk2/OvmfPkg/XenBusDxe/XenBusDxe.h')
-rw-r--r-- | roms/edk2/OvmfPkg/XenBusDxe/XenBusDxe.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/roms/edk2/OvmfPkg/XenBusDxe/XenBusDxe.h b/roms/edk2/OvmfPkg/XenBusDxe/XenBusDxe.h new file mode 100644 index 000000000..b1dcc3549 --- /dev/null +++ b/roms/edk2/OvmfPkg/XenBusDxe/XenBusDxe.h @@ -0,0 +1,128 @@ +/** @file
+ Function declaration and internal data for XenBusDxe.
+
+ Copyright (C) 2014, Citrix Ltd.
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef __EFI_XENBUS_DXE_H__
+#define __EFI_XENBUS_DXE_H__
+
+#include <Uefi.h>
+
+//
+// Libraries
+//
+#include <Library/UefiBootServicesTableLib.h>
+#include <Library/MemoryAllocationLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/BaseLib.h>
+#include <Library/UefiLib.h>
+#include <Library/DevicePathLib.h>
+#include <Library/DebugLib.h>
+#include <Library/PcdLib.h>
+
+
+//
+// UEFI Driver Model Protocols
+//
+#include <Protocol/DriverBinding.h>
+
+
+//
+// Consumed Protocols
+//
+#include <Protocol/XenIo.h>
+
+
+//
+// Produced Protocols
+//
+#include <Protocol/XenBus.h>
+
+
+//
+// Driver Version
+//
+#define XENBUS_DXE_VERSION 0x00000010
+
+
+//
+// Protocol instances
+//
+extern EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding;
+extern EFI_COMPONENT_NAME2_PROTOCOL gXenBusDxeComponentName2;
+extern EFI_COMPONENT_NAME_PROTOCOL gXenBusDxeComponentName;
+
+
+//
+// Include files with function prototypes
+//
+#include "DriverBinding.h"
+#include "ComponentName.h"
+
+//
+// Other stuff
+//
+#include <IndustryStandard/Xen/xen.h>
+
+typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH;
+typedef struct _XENBUS_DEVICE XENBUS_DEVICE;
+
+// Have the state of the driver.
+#define XENBUS_DEVICE_SIGNATURE SIGNATURE_32 ('X','B','s','t')
+struct _XENBUS_DEVICE {
+ UINT32 Signature;
+ EFI_DRIVER_BINDING_PROTOCOL *This;
+ EFI_HANDLE ControllerHandle;
+ XENIO_PROTOCOL *XenIo;
+ EFI_EVENT ExitBootEvent;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ LIST_ENTRY ChildList;
+
+ shared_info_t *SharedInfo;
+};
+
+// There is one of this struct allocated for every child.
+#define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd')
+typedef struct {
+ UINTN Signature;
+ LIST_ENTRY Link;
+ EFI_HANDLE Handle;
+ XENBUS_PROTOCOL XenBusIo;
+ XENBUS_DEVICE *Dev;
+ XENBUS_DEVICE_PATH *DevicePath;
+} XENBUS_PRIVATE_DATA;
+
+#define XENBUS_PRIVATE_DATA_FROM_THIS(a) \
+ CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE)
+#define XENBUS_PRIVATE_DATA_FROM_LINK(a) \
+ CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE)
+
+/*
+ * Helpers
+ */
+
+/**
+ Atomically test and clear a bit.
+
+ @param Bit Bit index to test in *Address
+ @param Address The Address to the buffer that contain the bit to test.
+
+ @return Value of the Bit before it was cleared.
+**/
+INT32
+EFIAPI
+TestAndClearBit (
+ IN INT32 Bit,
+ IN VOID *Address
+ );
+
+CHAR8*
+AsciiStrDup (
+ IN CONST CHAR8* Str
+ );
+
+#endif
|