2 Function declaration and internal data for XenBusDxe.
4 Copyright (C) 2014, Citrix Ltd.
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #ifndef __EFI_XENBUS_DXE_H__
17 #define __EFI_XENBUS_DXE_H__
22 // Xen interface version used
24 #define __XEN_INTERFACE_VERSION__ 0x00040400
29 #include <Library/UefiBootServicesTableLib.h>
30 #include <Library/MemoryAllocationLib.h>
31 #include <Library/BaseMemoryLib.h>
32 #include <Library/BaseLib.h>
33 #include <Library/UefiLib.h>
34 #include <Library/DevicePathLib.h>
35 #include <Library/DebugLib.h>
39 // UEFI Driver Model Protocols
41 #include <Protocol/DriverBinding.h>
47 #include <Protocol/PciIo.h>
53 #include <Protocol/XenBus.h>
59 #define XENBUS_DXE_VERSION 0x00000010
65 extern EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding
;
66 extern EFI_COMPONENT_NAME2_PROTOCOL gXenBusDxeComponentName2
;
67 extern EFI_COMPONENT_NAME_PROTOCOL gXenBusDxeComponentName
;
71 // Include files with function prototypes
73 #include "DriverBinding.h"
74 #include "ComponentName.h"
79 #include <IndustryStandard/Xen/xen.h>
81 #define PCI_VENDOR_ID_XEN 0x5853
82 #define PCI_DEVICE_ID_XEN_PLATFORM 0x0001
85 typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH
;
86 typedef struct _XENBUS_DEVICE XENBUS_DEVICE
;
88 // Have the state of the driver.
89 #define XENBUS_DEVICE_SIGNATURE SIGNATURE_32 ('X','B','s','t')
90 struct _XENBUS_DEVICE
{
92 EFI_DRIVER_BINDING_PROTOCOL
*This
;
93 EFI_HANDLE ControllerHandle
;
94 EFI_PCI_IO_PROTOCOL
*PciIo
;
95 EFI_EVENT ExitBootEvent
;
96 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
100 shared_info_t
*SharedInfo
;
103 // There is one of this struct allocated for every child.
104 #define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd')
109 XENBUS_PROTOCOL XenBusIo
;
111 XENBUS_DEVICE_PATH
*DevicePath
;
112 } XENBUS_PRIVATE_DATA
;
114 #define XENBUS_PRIVATE_DATA_FROM_THIS(a) \
115 CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE)
116 #define XENBUS_PRIVATE_DATA_FROM_LINK(a) \
117 CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE)
124 Atomically test and clear a bit.
126 @param Bit Bit index to test in *Address
127 @param Address The Address to the buffer that contain the bit to test.
129 @return Value of the Bit before it was cleared.
135 IN
volatile VOID
*Address