VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/OvmfPkg/XenBusDxe/XenBusDxe.h@ 99396

最後變更 在這個檔案從99396是 80721,由 vboxsync 提交於 6 年 前

Devices/EFI/FirmwareNew: Start upgrade process to edk2-stable201908 (compiles on Windows and works to some extent), bugref:4643

  • 屬性 svn:eol-style 設為 native
檔案大小: 2.6 KB
 
1/** @file
2 Function declaration and internal data for XenBusDxe.
3
4 Copyright (C) 2014, Citrix Ltd.
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8**/
9
10#ifndef __EFI_XENBUS_DXE_H__
11#define __EFI_XENBUS_DXE_H__
12
13#include <Uefi.h>
14
15//
16// Libraries
17//
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>
26
27
28//
29// UEFI Driver Model Protocols
30//
31#include <Protocol/DriverBinding.h>
32
33
34//
35// Consumed Protocols
36//
37#include <Protocol/XenIo.h>
38
39
40//
41// Produced Protocols
42//
43#include <Protocol/XenBus.h>
44
45
46//
47// Driver Version
48//
49#define XENBUS_DXE_VERSION 0x00000010
50
51
52//
53// Protocol instances
54//
55extern EFI_DRIVER_BINDING_PROTOCOL gXenBusDxeDriverBinding;
56extern EFI_COMPONENT_NAME2_PROTOCOL gXenBusDxeComponentName2;
57extern EFI_COMPONENT_NAME_PROTOCOL gXenBusDxeComponentName;
58
59
60//
61// Include files with function prototypes
62//
63#include "DriverBinding.h"
64#include "ComponentName.h"
65
66//
67// Other stuff
68//
69#include <IndustryStandard/Xen/xen.h>
70
71typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH;
72typedef struct _XENBUS_DEVICE XENBUS_DEVICE;
73
74// Have the state of the driver.
75#define XENBUS_DEVICE_SIGNATURE SIGNATURE_32 ('X','B','s','t')
76struct _XENBUS_DEVICE {
77 UINT32 Signature;
78 EFI_DRIVER_BINDING_PROTOCOL *This;
79 EFI_HANDLE ControllerHandle;
80 XENIO_PROTOCOL *XenIo;
81 EFI_EVENT ExitBootEvent;
82 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
83 LIST_ENTRY ChildList;
84
85 shared_info_t *SharedInfo;
86};
87
88// There is one of this struct allocated for every child.
89#define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd')
90typedef struct {
91 UINTN Signature;
92 LIST_ENTRY Link;
93 EFI_HANDLE Handle;
94 XENBUS_PROTOCOL XenBusIo;
95 XENBUS_DEVICE *Dev;
96 XENBUS_DEVICE_PATH *DevicePath;
97} XENBUS_PRIVATE_DATA;
98
99#define XENBUS_PRIVATE_DATA_FROM_THIS(a) \
100 CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE)
101#define XENBUS_PRIVATE_DATA_FROM_LINK(a) \
102 CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE)
103
104/*
105 * Helpers
106 */
107
108/**
109 Atomically test and clear a bit.
110
111 @param Bit Bit index to test in *Address
112 @param Address The Address to the buffer that contain the bit to test.
113
114 @return Value of the Bit before it was cleared.
115**/
116INT32
117EFIAPI
118TestAndClearBit (
119 IN INT32 Bit,
120 IN VOID *Address
121 );
122
123CHAR8*
124AsciiStrDup (
125 IN CONST CHAR8* Str
126 );
127
128#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette