]>
Commit | Line | Data |
---|---|---|
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 | 50 | extern EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding;\r |
e65e8802 | 51 | extern EFI_COMPONENT_NAME2_PROTOCOL gXenBusDxeComponentName2;\r |
ac0a286f | 52 | extern 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 |
65 | typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH;\r |
66 | typedef 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 | 70 | struct _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 | 84 | typedef 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 | |
110 | INT32\r | |
111 | EFIAPI\r | |
112 | TestAndClearBit (\r | |
ac0a286f MK |
113 | IN INT32 Bit,\r |
114 | IN VOID *Address\r | |
6342f1fe AP |
115 | );\r |
116 | \r | |
ac0a286f | 117 | CHAR8 *\r |
02a6bcff | 118 | AsciiStrDup (\r |
ac0a286f | 119 | IN CONST CHAR8 *Str\r |
02a6bcff AP |
120 | );\r |
121 | \r | |
e65e8802 | 122 | #endif\r |