]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/XenBusDxe/XenBusDxe.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[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
8f39d79d 25#include <Library/PcdLib.h>\r
e65e8802 26\r
e65e8802
AP
27//\r
28// UEFI Driver Model Protocols\r
29//\r
30#include <Protocol/DriverBinding.h>\r
31\r
e65e8802
AP
32//\r
33// Consumed Protocols\r
34//\r
d9fdfd85 35#include <Protocol/XenIo.h>\r
e65e8802 36\r
e65e8802
AP
37//\r
38// Produced Protocols\r
39//\r
12a16f2d 40#include <Protocol/XenBus.h>\r
e65e8802 41\r
e65e8802
AP
42//\r
43// Driver Version\r
44//\r
45#define XENBUS_DXE_VERSION 0x00000010\r
46\r
e65e8802
AP
47//\r
48// Protocol instances\r
49//\r
ac0a286f 50extern EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding;\r
e65e8802 51extern EFI_COMPONENT_NAME2_PROTOCOL gXenBusDxeComponentName2;\r
ac0a286f 52extern EFI_COMPONENT_NAME_PROTOCOL gXenBusDxeComponentName;\r
e65e8802
AP
53\r
54//\r
55// Include files with function prototypes\r
56//\r
57#include "DriverBinding.h"\r
58#include "ComponentName.h"\r
59\r
60//\r
61// Other stuff\r
62//\r
abcbbb14
AP
63#include <IndustryStandard/Xen/xen.h>\r
64\r
ac0a286f
MK
65typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH;\r
66typedef struct _XENBUS_DEVICE XENBUS_DEVICE;\r
a154f420
AP
67\r
68// Have the state of the driver.\r
ac0a286f 69#define XENBUS_DEVICE_SIGNATURE SIGNATURE_32 ('X','B','s','t')\r
a154f420 70struct _XENBUS_DEVICE {\r
ac0a286f
MK
71 UINT32 Signature;\r
72 EFI_DRIVER_BINDING_PROTOCOL *This;\r
73 EFI_HANDLE ControllerHandle;\r
74 XENIO_PROTOCOL *XenIo;\r
75 EFI_EVENT ExitBootEvent;\r
76 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
77 LIST_ENTRY ChildList;\r
78\r
79 shared_info_t *SharedInfo;\r
a154f420
AP
80};\r
81\r
86d968e0 82// There is one of this struct allocated for every child.\r
ac0a286f 83#define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd')\r
86d968e0 84typedef struct {\r
ac0a286f
MK
85 UINTN Signature;\r
86 LIST_ENTRY Link;\r
87 EFI_HANDLE Handle;\r
88 XENBUS_PROTOCOL XenBusIo;\r
89 XENBUS_DEVICE *Dev;\r
90 XENBUS_DEVICE_PATH *DevicePath;\r
86d968e0
AP
91} XENBUS_PRIVATE_DATA;\r
92\r
93#define XENBUS_PRIVATE_DATA_FROM_THIS(a) \\r
94 CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE)\r
95#define XENBUS_PRIVATE_DATA_FROM_LINK(a) \\r
96 CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE)\r
97\r
6342f1fe
AP
98/*\r
99 * Helpers\r
100 */\r
101\r
102/**\r
103 Atomically test and clear a bit.\r
104\r
105 @param Bit Bit index to test in *Address\r
106 @param Address The Address to the buffer that contain the bit to test.\r
107\r
108 @return Value of the Bit before it was cleared.\r
109**/\r
110INT32\r
111EFIAPI\r
112TestAndClearBit (\r
ac0a286f
MK
113 IN INT32 Bit,\r
114 IN VOID *Address\r
6342f1fe
AP
115 );\r
116\r
ac0a286f 117CHAR8 *\r
02a6bcff 118AsciiStrDup (\r
ac0a286f 119 IN CONST CHAR8 *Str\r
02a6bcff
AP
120 );\r
121\r
e65e8802 122#endif\r