]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/XenBusDxe/XenBusDxe.h
OvmfPkg/Csm/LegacyBiosDxe: Fix Legacy16GetTableAddress call for E820 data
[mirror_edk2.git] / OvmfPkg / XenBusDxe / XenBusDxe.h
CommitLineData
e65e8802
AP
1/** @file\r
2 Function declaration and internal data for XenBusDxe.\r
3\r
4 Copyright (C) 2014, Citrix Ltd.\r
5\r
b26f0cf9 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
e65e8802
AP
7\r
8**/\r
9\r
10#ifndef __EFI_XENBUS_DXE_H__\r
11#define __EFI_XENBUS_DXE_H__\r
12\r
13#include <Uefi.h>\r
14\r
15//\r
16// Libraries\r
17//\r
18#include <Library/UefiBootServicesTableLib.h>\r
19#include <Library/MemoryAllocationLib.h>\r
20#include <Library/BaseMemoryLib.h>\r
21#include <Library/BaseLib.h>\r
22#include <Library/UefiLib.h>\r
23#include <Library/DevicePathLib.h>\r
24#include <Library/DebugLib.h>\r
25\r
26\r
27//\r
28// UEFI Driver Model Protocols\r
29//\r
30#include <Protocol/DriverBinding.h>\r
31\r
32\r
33//\r
34// Consumed Protocols\r
35//\r
d9fdfd85 36#include <Protocol/XenIo.h>\r
e65e8802
AP
37\r
38\r
39//\r
40// Produced Protocols\r
41//\r
12a16f2d 42#include <Protocol/XenBus.h>\r
e65e8802
AP
43\r
44\r
45//\r
46// Driver Version\r
47//\r
48#define XENBUS_DXE_VERSION 0x00000010\r
49\r
50\r
51//\r
52// Protocol instances\r
53//\r
54extern EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding;\r
55extern EFI_COMPONENT_NAME2_PROTOCOL gXenBusDxeComponentName2;\r
56extern EFI_COMPONENT_NAME_PROTOCOL gXenBusDxeComponentName;\r
57\r
58\r
59//\r
60// Include files with function prototypes\r
61//\r
62#include "DriverBinding.h"\r
63#include "ComponentName.h"\r
64\r
65//\r
66// Other stuff\r
67//\r
abcbbb14
AP
68#include <IndustryStandard/Xen/xen.h>\r
69\r
86d968e0 70typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH;\r
a154f420
AP
71typedef struct _XENBUS_DEVICE XENBUS_DEVICE;\r
72\r
73// Have the state of the driver.\r
74#define XENBUS_DEVICE_SIGNATURE SIGNATURE_32 ('X','B','s','t')\r
75struct _XENBUS_DEVICE {\r
76 UINT32 Signature;\r
77 EFI_DRIVER_BINDING_PROTOCOL *This;\r
78 EFI_HANDLE ControllerHandle;\r
d9fdfd85 79 XENIO_PROTOCOL *XenIo;\r
a154f420 80 EFI_EVENT ExitBootEvent;\r
86d968e0
AP
81 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
82 LIST_ENTRY ChildList;\r
abcbbb14 83\r
abcbbb14 84 shared_info_t *SharedInfo;\r
a154f420
AP
85};\r
86\r
86d968e0
AP
87// There is one of this struct allocated for every child.\r
88#define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd')\r
89typedef struct {\r
90 UINTN Signature;\r
91 LIST_ENTRY Link;\r
92 EFI_HANDLE Handle;\r
93 XENBUS_PROTOCOL XenBusIo;\r
94 XENBUS_DEVICE *Dev;\r
95 XENBUS_DEVICE_PATH *DevicePath;\r
96} XENBUS_PRIVATE_DATA;\r
97\r
98#define XENBUS_PRIVATE_DATA_FROM_THIS(a) \\r
99 CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE)\r
100#define XENBUS_PRIVATE_DATA_FROM_LINK(a) \\r
101 CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE)\r
102\r
6342f1fe
AP
103/*\r
104 * Helpers\r
105 */\r
106\r
107/**\r
108 Atomically test and clear a bit.\r
109\r
110 @param Bit Bit index to test in *Address\r
111 @param Address The Address to the buffer that contain the bit to test.\r
112\r
113 @return Value of the Bit before it was cleared.\r
114**/\r
115INT32\r
116EFIAPI\r
117TestAndClearBit (\r
118 IN INT32 Bit,\r
e482753b 119 IN VOID *Address\r
6342f1fe
AP
120 );\r
121\r
02a6bcff
AP
122CHAR8*\r
123AsciiStrDup (\r
124 IN CONST CHAR8* Str\r
125 );\r
126\r
e65e8802 127#endif\r