]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/XenBusDxe/XenBusDxe.h
OvmfPkg/AmdSevDxe: sort #includes, and entries in INF file sections
[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
6 This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#ifndef __EFI_XENBUS_DXE_H__\r
17#define __EFI_XENBUS_DXE_H__\r
18\r
19#include <Uefi.h>\r
20\r
21//\r
22// Libraries\r
23//\r
24#include <Library/UefiBootServicesTableLib.h>\r
25#include <Library/MemoryAllocationLib.h>\r
26#include <Library/BaseMemoryLib.h>\r
27#include <Library/BaseLib.h>\r
28#include <Library/UefiLib.h>\r
29#include <Library/DevicePathLib.h>\r
30#include <Library/DebugLib.h>\r
31\r
32\r
33//\r
34// UEFI Driver Model Protocols\r
35//\r
36#include <Protocol/DriverBinding.h>\r
37\r
38\r
39//\r
40// Consumed Protocols\r
41//\r
d9fdfd85 42#include <Protocol/XenIo.h>\r
e65e8802
AP
43\r
44\r
45//\r
46// Produced Protocols\r
47//\r
12a16f2d 48#include <Protocol/XenBus.h>\r
e65e8802
AP
49\r
50\r
51//\r
52// Driver Version\r
53//\r
54#define XENBUS_DXE_VERSION 0x00000010\r
55\r
56\r
57//\r
58// Protocol instances\r
59//\r
60extern EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding;\r
61extern EFI_COMPONENT_NAME2_PROTOCOL gXenBusDxeComponentName2;\r
62extern EFI_COMPONENT_NAME_PROTOCOL gXenBusDxeComponentName;\r
63\r
64\r
65//\r
66// Include files with function prototypes\r
67//\r
68#include "DriverBinding.h"\r
69#include "ComponentName.h"\r
70\r
71//\r
72// Other stuff\r
73//\r
abcbbb14
AP
74#include <IndustryStandard/Xen/xen.h>\r
75\r
86d968e0 76typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH;\r
a154f420
AP
77typedef struct _XENBUS_DEVICE XENBUS_DEVICE;\r
78\r
79// Have the state of the driver.\r
80#define XENBUS_DEVICE_SIGNATURE SIGNATURE_32 ('X','B','s','t')\r
81struct _XENBUS_DEVICE {\r
82 UINT32 Signature;\r
83 EFI_DRIVER_BINDING_PROTOCOL *This;\r
84 EFI_HANDLE ControllerHandle;\r
d9fdfd85 85 XENIO_PROTOCOL *XenIo;\r
a154f420 86 EFI_EVENT ExitBootEvent;\r
86d968e0
AP
87 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
88 LIST_ENTRY ChildList;\r
abcbbb14 89\r
abcbbb14 90 shared_info_t *SharedInfo;\r
a154f420
AP
91};\r
92\r
86d968e0
AP
93// There is one of this struct allocated for every child.\r
94#define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd')\r
95typedef struct {\r
96 UINTN Signature;\r
97 LIST_ENTRY Link;\r
98 EFI_HANDLE Handle;\r
99 XENBUS_PROTOCOL XenBusIo;\r
100 XENBUS_DEVICE *Dev;\r
101 XENBUS_DEVICE_PATH *DevicePath;\r
102} XENBUS_PRIVATE_DATA;\r
103\r
104#define XENBUS_PRIVATE_DATA_FROM_THIS(a) \\r
105 CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE)\r
106#define XENBUS_PRIVATE_DATA_FROM_LINK(a) \\r
107 CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE)\r
108\r
6342f1fe
AP
109/*\r
110 * Helpers\r
111 */\r
112\r
113/**\r
114 Atomically test and clear a bit.\r
115\r
116 @param Bit Bit index to test in *Address\r
117 @param Address The Address to the buffer that contain the bit to test.\r
118\r
119 @return Value of the Bit before it was cleared.\r
120**/\r
121INT32\r
122EFIAPI\r
123TestAndClearBit (\r
124 IN INT32 Bit,\r
e482753b 125 IN VOID *Address\r
6342f1fe
AP
126 );\r
127\r
02a6bcff
AP
128CHAR8*\r
129AsciiStrDup (\r
130 IN CONST CHAR8* Str\r
131 );\r
132\r
e65e8802 133#endif\r