2 Function declaration and internal data for XenBusDxe.
4 Copyright (C) 2014, Citrix Ltd.
6 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #ifndef __EFI_XENBUS_DXE_H__
11 #define __EFI_XENBUS_DXE_H__
18 #include <Library/UefiBootServicesTableLib.h>
19 #include <Library/MemoryAllocationLib.h>
20 #include <Library/BaseMemoryLib.h>
21 #include <Library/BaseLib.h>
22 #include <Library/UefiLib.h>
23 #include <Library/DevicePathLib.h>
24 #include <Library/DebugLib.h>
25 #include <Library/PcdLib.h>
28 // UEFI Driver Model Protocols
30 #include <Protocol/DriverBinding.h>
35 #include <Protocol/XenIo.h>
40 #include <Protocol/XenBus.h>
45 #define XENBUS_DXE_VERSION 0x00000010
50 extern EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding
;
51 extern EFI_COMPONENT_NAME2_PROTOCOL gXenBusDxeComponentName2
;
52 extern EFI_COMPONENT_NAME_PROTOCOL gXenBusDxeComponentName
;
55 // Include files with function prototypes
57 #include "DriverBinding.h"
58 #include "ComponentName.h"
63 #include <IndustryStandard/Xen/xen.h>
65 typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH
;
66 typedef struct _XENBUS_DEVICE XENBUS_DEVICE
;
68 // Have the state of the driver.
69 #define XENBUS_DEVICE_SIGNATURE SIGNATURE_32 ('X','B','s','t')
70 struct _XENBUS_DEVICE
{
72 EFI_DRIVER_BINDING_PROTOCOL
*This
;
73 EFI_HANDLE ControllerHandle
;
74 XENIO_PROTOCOL
*XenIo
;
75 EFI_EVENT ExitBootEvent
;
76 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
79 shared_info_t
*SharedInfo
;
82 // There is one of this struct allocated for every child.
83 #define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd')
88 XENBUS_PROTOCOL XenBusIo
;
90 XENBUS_DEVICE_PATH
*DevicePath
;
91 } XENBUS_PRIVATE_DATA
;
93 #define XENBUS_PRIVATE_DATA_FROM_THIS(a) \
94 CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE)
95 #define XENBUS_PRIVATE_DATA_FROM_LINK(a) \
96 CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE)
103 Atomically test and clear a bit.
105 @param Bit Bit index to test in *Address
106 @param Address The Address to the buffer that contain the bit to test.
108 @return Value of the Bit before it was cleared.