efilib.h revision 1.1.1.3 1 1.1 jakllsch /* $NetBSD: efilib.h,v 1.1.1.3 2021/09/30 18:50:09 jmcneill Exp $ */
2 1.1 jakllsch
3 1.1 jakllsch #ifndef _EFILIB_INCLUDE_
4 1.1 jakllsch #define _EFILIB_INCLUDE_
5 1.1 jakllsch
6 1.1 jakllsch /*++
7 1.1 jakllsch
8 1.1 jakllsch Copyright (c) 2000 Intel Corporation
9 1.1 jakllsch
10 1.1 jakllsch Module Name:
11 1.1 jakllsch
12 1.1 jakllsch efilib.h
13 1.1 jakllsch
14 1.1 jakllsch Abstract:
15 1.1 jakllsch
16 1.1 jakllsch EFI library functions
17 1.1 jakllsch
18 1.1 jakllsch
19 1.1 jakllsch
20 1.1 jakllsch Revision History
21 1.1 jakllsch
22 1.1 jakllsch --*/
23 1.1 jakllsch
24 1.1 jakllsch #include "efidebug.h"
25 1.1 jakllsch #include "efipart.h"
26 1.1.1.3 jmcneill #if defined(_M_X64) || defined(__x86_64__) || defined(__amd64__)
27 1.1.1.3 jmcneill #include "x86_64/efilibplat.h"
28 1.1.1.3 jmcneill #elif defined(_M_IX86) || defined(__i386__)
29 1.1.1.3 jmcneill #include "ia32/efilibplat.h"
30 1.1.1.3 jmcneill #elif defined(_M_IA64) || defined(__ia64__)
31 1.1.1.3 jmcneill #include "ia64/efilibplat.h"
32 1.1.1.3 jmcneill #elif defined (_M_ARM64) || defined(__aarch64__)
33 1.1.1.3 jmcneill #include "aarch64/efilibplat.h"
34 1.1.1.3 jmcneill #elif defined (_M_ARM) || defined(__arm__)
35 1.1.1.3 jmcneill #include "arm/efilibplat.h"
36 1.1.1.3 jmcneill #elif defined (_M_MIPS64) || defined(__mips64__)
37 1.1.1.3 jmcneill #include "mips64el/efilibplat.h"
38 1.1.1.3 jmcneill #elif defined (__riscv) && __riscv_xlen == 64
39 1.1.1.3 jmcneill #include "riscv64/efilibplat.h"
40 1.1.1.3 jmcneill #endif
41 1.1 jakllsch #include "efilink.h"
42 1.1 jakllsch #include "efirtlib.h"
43 1.1.1.2 jmcneill #include "efistdarg.h"
44 1.1 jakllsch #include "pci22.h"
45 1.1 jakllsch #include "libsmbios.h"
46 1.1 jakllsch
47 1.1 jakllsch //
48 1.1 jakllsch // Public read-only data in the EFI library
49 1.1 jakllsch //
50 1.1 jakllsch
51 1.1 jakllsch extern EFI_SYSTEM_TABLE *ST;
52 1.1.1.2 jmcneill #define gST ST
53 1.1 jakllsch extern EFI_BOOT_SERVICES *BS;
54 1.1.1.2 jmcneill #define gBS BS
55 1.1 jakllsch extern EFI_RUNTIME_SERVICES *RT;
56 1.1.1.2 jmcneill #define gRT RT
57 1.1 jakllsch
58 1.1.1.2 jmcneill extern EFI_GUID gEfiDevicePathProtocolGuid;
59 1.1.1.2 jmcneill #define DevicePathProtocol gEfiDevicePathProtocolGuid
60 1.1.1.2 jmcneill extern EFI_GUID gEfiDevicePathToTextProtocolGuid;
61 1.1.1.2 jmcneill #define DevicePathToTextProtocol gEfiDevicePathToTextProtocolGuid
62 1.1.1.2 jmcneill extern EFI_GUID gEfiDevicePathFromTextProtocolGuid;
63 1.1.1.2 jmcneill #define DevicePathFromTextProtocol gEfiDevicePathFromTextProtocolGuid
64 1.1.1.3 jmcneill extern EFI_GUID gEfiDevicePathUtilitiesProtocolGuid;
65 1.1.1.3 jmcneill #define DevicePathUtilitiesProtocol gEfiDevicePathUtilitiesProtocolGuid
66 1.1.1.2 jmcneill extern EFI_GUID gEfiLoadedImageProtocolGuid;
67 1.1.1.2 jmcneill #define LoadedImageProtocol gEfiLoadedImageProtocolGuid
68 1.1.1.2 jmcneill extern EFI_GUID gEfiSimpleTextInProtocolGuid;
69 1.1.1.2 jmcneill #define TextInProtocol gEfiSimpleTextInProtocolGuid
70 1.1.1.2 jmcneill extern EFI_GUID gEfiSimpleTextOutProtocolGuid;
71 1.1.1.2 jmcneill #define TextOutProtocol gEfiSimpleTextOutProtocolGuid
72 1.1.1.2 jmcneill extern EFI_GUID gEfiGraphicsOutputProtocolGuid;
73 1.1.1.2 jmcneill #define GraphicsOutputProtocol gEfiGraphicsOutputProtocolGuid
74 1.1.1.2 jmcneill extern EFI_GUID gEfiEdidDiscoveredProtocolGuid;
75 1.1.1.2 jmcneill #define EdidDiscoveredProtocol gEfiEdidDiscoveredProtocolGuid
76 1.1.1.2 jmcneill extern EFI_GUID gEfiEdidActiveProtocolGuid;
77 1.1.1.2 jmcneill #define EdidActiveProtocol gEfiEdidActiveProtocolGuid
78 1.1.1.2 jmcneill extern EFI_GUID gEfiEdidOverrideProtocolGuid;
79 1.1.1.2 jmcneill #define EdidOverrideProtocol gEfiEdidOverrideProtocolGuid
80 1.1.1.2 jmcneill extern EFI_GUID gEfiBlockIoProtocolGuid;
81 1.1.1.2 jmcneill #define BlockIoProtocol gEfiBlockIoProtocolGuid
82 1.1.1.2 jmcneill extern EFI_GUID gEfiBlockIo2ProtocolGuid;
83 1.1.1.2 jmcneill #define BlockIo2Protocol gEfiBlockIo2ProtocolGuid
84 1.1.1.2 jmcneill extern EFI_GUID gEfiDiskIoProtocolGuid;
85 1.1.1.2 jmcneill #define DiskIoProtocol gEfiDiskIoProtocolGuid
86 1.1.1.2 jmcneill extern EFI_GUID gEfiDiskIo2ProtocolGuid;
87 1.1.1.2 jmcneill #define DiskIo2Protocol gEfiDiskIo2ProtocolGuid
88 1.1.1.2 jmcneill extern EFI_GUID gEfiSimpleFileSystemProtocolGuid;
89 1.1.1.2 jmcneill #define FileSystemProtocol gEfiSimpleFileSystemProtocolGuid
90 1.1.1.2 jmcneill extern EFI_GUID gEfiLoadFileProtocolGuid;
91 1.1.1.2 jmcneill #define LoadFileProtocol gEfiLoadFileProtocolGuid
92 1.1.1.2 jmcneill extern EFI_GUID gEfiDeviceIoProtocolGuid;
93 1.1.1.2 jmcneill #define DeviceIoProtocol gEfiDeviceIoProtocolGuid
94 1.1 jakllsch extern EFI_GUID VariableStoreProtocol;
95 1.1 jakllsch extern EFI_GUID LegacyBootProtocol;
96 1.1.1.2 jmcneill extern EFI_GUID gEfiUnicodeCollationProtocolGuid;
97 1.1.1.2 jmcneill #define UnicodeCollationProtocol gEfiUnicodeCollationProtocolGuid
98 1.1.1.2 jmcneill extern EFI_GUID gEfiSerialIoProtocolGuid;
99 1.1.1.2 jmcneill #define SerialIoProtocol gEfiSerialIoProtocolGuid
100 1.1 jakllsch extern EFI_GUID VgaClassProtocol;
101 1.1 jakllsch extern EFI_GUID TextOutSpliterProtocol;
102 1.1 jakllsch extern EFI_GUID ErrorOutSpliterProtocol;
103 1.1 jakllsch extern EFI_GUID TextInSpliterProtocol;
104 1.1.1.2 jmcneill extern EFI_GUID gEfiSimpleNetworkProtocolGuid;
105 1.1.1.2 jmcneill #define SimpleNetworkProtocol gEfiSimpleNetworkProtocolGuid
106 1.1.1.2 jmcneill extern EFI_GUID gEfiPxeBaseCodeProtocolGuid;
107 1.1.1.2 jmcneill #define PxeBaseCodeProtocol gEfiPxeBaseCodeProtocolGuid
108 1.1.1.2 jmcneill extern EFI_GUID gEfiPxeBaseCodeCallbackProtocolGuid;
109 1.1.1.2 jmcneill #define PxeCallbackProtocol gEfiPxeBaseCodeCallbackProtocolGuid
110 1.1.1.2 jmcneill extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid;
111 1.1.1.2 jmcneill #define NetworkInterfaceIdentifierProtocol gEfiNetworkInterfaceIdentifierProtocolGuid
112 1.1.1.2 jmcneill extern EFI_GUID gEFiUiInterfaceProtocolGuid;
113 1.1.1.2 jmcneill #define UiProtocol gEFiUiInterfaceProtocolGuid
114 1.1 jakllsch extern EFI_GUID InternalShellProtocol;
115 1.1.1.2 jmcneill extern EFI_GUID gEfiPciIoProtocolGuid;
116 1.1.1.2 jmcneill #define PciIoProtocol gEfiPciIoProtocolGuid
117 1.1.1.2 jmcneill extern EFI_GUID gEfiPciRootBridgeIoProtocolGuid;
118 1.1.1.2 jmcneill extern EFI_GUID gEfiDriverBindingProtocolGuid;
119 1.1.1.2 jmcneill #define DriverBindingProtocol gEfiDriverBindingProtocolGuid
120 1.1.1.2 jmcneill extern EFI_GUID gEfiComponentNameProtocolGuid;
121 1.1.1.2 jmcneill #define ComponentNameProtocol gEfiComponentNameProtocolGuid
122 1.1.1.2 jmcneill extern EFI_GUID gEfiComponentName2ProtocolGuid;
123 1.1.1.2 jmcneill #define ComponentName2Protocol gEfiComponentName2ProtocolGuid
124 1.1.1.2 jmcneill extern EFI_GUID gEfiHashProtocolGuid;
125 1.1.1.2 jmcneill #define HashProtocol gEfiHashProtocolGuid
126 1.1.1.2 jmcneill extern EFI_GUID gEfiPlatformDriverOverrideProtocolGuid;
127 1.1.1.2 jmcneill #define PlatformDriverOverrideProtocol gEfiPlatformDriverOverrideProtocolGuid
128 1.1.1.2 jmcneill extern EFI_GUID gEfiBusSpecificDriverOverrideProtocolGuid;
129 1.1.1.2 jmcneill #define BusSpecificDriverOverrideProtocol gEfiBusSpecificDriverOverrideProtocolGuid
130 1.1.1.2 jmcneill extern EFI_GUID gEfiDriverFamilyOverrideProtocolGuid;
131 1.1.1.2 jmcneill #define DriverFamilyOverrideProtocol gEfiDriverFamilyOverrideProtocolGuid
132 1.1.1.2 jmcneill extern EFI_GUID gEfiEbcProtocolGuid;
133 1.1.1.2 jmcneill
134 1.1.1.2 jmcneill extern EFI_GUID gEfiGlobalVariableGuid;
135 1.1.1.2 jmcneill #define EfiGlobalVariable gEfiGlobalVariableGuid
136 1.1.1.2 jmcneill extern EFI_GUID gEfiFileInfoGuid;
137 1.1.1.2 jmcneill #define GenericFileInfo gEfiFileInfoGuid
138 1.1.1.2 jmcneill extern EFI_GUID gEfiFileSystemInfoGuid;
139 1.1.1.2 jmcneill #define FileSystemInfo gEfiFileSystemInfoGuid
140 1.1.1.2 jmcneill extern EFI_GUID gEfiFileSystemVolumeLabelInfoIdGuid;
141 1.1.1.2 jmcneill #define FileSystemVolumeLabelInfo gEfiFileSystemVolumeLabelInfoIdGuid
142 1.1.1.2 jmcneill extern EFI_GUID gEfiPcAnsiGuid;
143 1.1.1.2 jmcneill #define PcAnsiProtocol gEfiPcAnsiGuid
144 1.1.1.2 jmcneill extern EFI_GUID gEfiVT100Guid;
145 1.1.1.2 jmcneill #define Vt100Protocol gEfiVT100Guid
146 1.1.1.2 jmcneill extern EFI_GUID gEfiVT100PlusGuid;
147 1.1.1.2 jmcneill extern EFI_GUID gEfiVTUTF8Guid;
148 1.1 jakllsch
149 1.1 jakllsch extern EFI_GUID NullGuid;
150 1.1 jakllsch extern EFI_GUID UnknownDevice;
151 1.1 jakllsch
152 1.1 jakllsch extern EFI_GUID EfiPartTypeSystemPartitionGuid;
153 1.1 jakllsch extern EFI_GUID EfiPartTypeLegacyMbrGuid;
154 1.1 jakllsch
155 1.1 jakllsch extern EFI_GUID MpsTableGuid;
156 1.1 jakllsch extern EFI_GUID AcpiTableGuid;
157 1.1 jakllsch extern EFI_GUID SMBIOSTableGuid;
158 1.1.1.3 jmcneill extern EFI_GUID SMBIOS3TableGuid;
159 1.1 jakllsch extern EFI_GUID SalSystemTableGuid;
160 1.1.1.3 jmcneill extern EFI_GUID EfiDtbTableGuid;
161 1.1 jakllsch
162 1.1.1.2 jmcneill extern EFI_GUID SimplePointerProtocol;
163 1.1.1.2 jmcneill extern EFI_GUID AbsolutePointerProtocol;
164 1.1.1.2 jmcneill
165 1.1.1.2 jmcneill extern EFI_GUID gEfiDebugImageInfoTableGuid;
166 1.1.1.2 jmcneill extern EFI_GUID gEfiDebugSupportProtocolGuid;
167 1.1.1.2 jmcneill
168 1.1.1.3 jmcneill extern EFI_GUID SimpleTextInputExProtocol;
169 1.1.1.3 jmcneill
170 1.1.1.3 jmcneill extern EFI_GUID ShellProtocolGuid;
171 1.1.1.3 jmcneill extern EFI_GUID ShellParametersProtocolGuid;
172 1.1.1.3 jmcneill extern EFI_GUID ShellDynamicCommandProtocolGuid;
173 1.1.1.3 jmcneill
174 1.1 jakllsch //
175 1.1 jakllsch // EFI Variable strings
176 1.1 jakllsch //
177 1.1 jakllsch #define LOAD_OPTION_ACTIVE 0x00000001
178 1.1 jakllsch
179 1.1 jakllsch #define VarLanguageCodes L"LangCodes"
180 1.1 jakllsch #define VarLanguage L"Lang"
181 1.1 jakllsch #define VarTimeout L"Timeout"
182 1.1 jakllsch #define VarConsoleInp L"ConIn"
183 1.1 jakllsch #define VarConsoleOut L"ConOut"
184 1.1 jakllsch #define VarErrorOut L"ErrOut"
185 1.1 jakllsch #define VarBootOption L"Boot%04x"
186 1.1 jakllsch #define VarBootOrder L"BootOrder"
187 1.1 jakllsch #define VarBootNext L"BootNext"
188 1.1 jakllsch #define VarBootCurrent L"BootCurrent"
189 1.1 jakllsch #define VarDriverOption L"Driver%04x"
190 1.1 jakllsch #define VarDriverOrder L"DriverOrder"
191 1.1 jakllsch #define VarConsoleInpDev L"ConInDev"
192 1.1 jakllsch #define VarConsoleOutDev L"ConOutDev"
193 1.1 jakllsch #define VarErrorOutDev L"ErrOutDev"
194 1.1 jakllsch
195 1.1 jakllsch #define LanguageCodeEnglish "eng"
196 1.1 jakllsch
197 1.1 jakllsch extern EFI_DEVICE_PATH RootDevicePath[];
198 1.1 jakllsch extern EFI_DEVICE_PATH EndDevicePath[];
199 1.1 jakllsch extern EFI_DEVICE_PATH EndInstanceDevicePath[];
200 1.1 jakllsch
201 1.1 jakllsch //
202 1.1 jakllsch // Other public data in the EFI library
203 1.1 jakllsch //
204 1.1 jakllsch
205 1.1 jakllsch extern EFI_MEMORY_TYPE PoolAllocationType;
206 1.1 jakllsch
207 1.1 jakllsch //
208 1.1 jakllsch // STATIC - Name is internal to the module
209 1.1 jakllsch // INTERNAL - Name is internal to the component (i.e., directory)
210 1.1 jakllsch // BOOTSERVCE - Name of a boot service function
211 1.1 jakllsch //
212 1.1 jakllsch
213 1.1 jakllsch #define STATIC
214 1.1 jakllsch #define INTERNAL
215 1.1 jakllsch #define BOOTSERVICE
216 1.1 jakllsch
217 1.1 jakllsch //
218 1.1 jakllsch // Prototypes
219 1.1 jakllsch //
220 1.1 jakllsch
221 1.1 jakllsch VOID
222 1.1 jakllsch InitializeLib (
223 1.1 jakllsch IN EFI_HANDLE ImageHandle,
224 1.1 jakllsch IN EFI_SYSTEM_TABLE *SystemTable
225 1.1 jakllsch );
226 1.1 jakllsch
227 1.1 jakllsch VOID
228 1.1 jakllsch InitializeUnicodeSupport (
229 1.1 jakllsch CHAR8 *LangCode
230 1.1 jakllsch );
231 1.1 jakllsch
232 1.1 jakllsch VOID
233 1.1 jakllsch EFIDebugVariable (
234 1.1 jakllsch VOID
235 1.1 jakllsch );
236 1.1 jakllsch
237 1.1 jakllsch VOID
238 1.1.1.2 jmcneill Exit(
239 1.1.1.2 jmcneill IN EFI_STATUS ExitStatus,
240 1.1.1.2 jmcneill IN UINTN ExitDataSize,
241 1.1.1.2 jmcneill IN CHAR16 *ExitData OPTIONAL
242 1.1.1.2 jmcneill );
243 1.1.1.2 jmcneill
244 1.1.1.2 jmcneill INTN
245 1.1.1.2 jmcneill GetShellArgcArgv(
246 1.1.1.2 jmcneill EFI_HANDLE ImageHandle,
247 1.1.1.2 jmcneill CHAR16 **Argv[] /* Statically allocated */
248 1.1.1.2 jmcneill );
249 1.1.1.2 jmcneill
250 1.1.1.2 jmcneill VOID
251 1.1 jakllsch SetCrc (
252 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr
253 1.1 jakllsch );
254 1.1 jakllsch
255 1.1 jakllsch VOID
256 1.1 jakllsch SetCrcAltSize (
257 1.1 jakllsch IN UINTN Size,
258 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr
259 1.1 jakllsch );
260 1.1 jakllsch
261 1.1 jakllsch BOOLEAN
262 1.1 jakllsch CheckCrc (
263 1.1 jakllsch IN UINTN MaxSize,
264 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr
265 1.1 jakllsch );
266 1.1 jakllsch
267 1.1 jakllsch BOOLEAN
268 1.1 jakllsch CheckCrcAltSize (
269 1.1 jakllsch IN UINTN MaxSize,
270 1.1 jakllsch IN UINTN Size,
271 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr
272 1.1 jakllsch );
273 1.1 jakllsch
274 1.1 jakllsch UINT32
275 1.1 jakllsch CalculateCrc (
276 1.1 jakllsch UINT8 *pt,
277 1.1 jakllsch UINTN Size
278 1.1 jakllsch );
279 1.1 jakllsch
280 1.1 jakllsch VOID
281 1.1 jakllsch ZeroMem (
282 1.1 jakllsch IN VOID *Buffer,
283 1.1 jakllsch IN UINTN Size
284 1.1 jakllsch );
285 1.1 jakllsch
286 1.1 jakllsch VOID
287 1.1 jakllsch SetMem (
288 1.1 jakllsch IN VOID *Buffer,
289 1.1 jakllsch IN UINTN Size,
290 1.1.1.2 jmcneill IN UINT8 Value
291 1.1 jakllsch );
292 1.1 jakllsch
293 1.1 jakllsch VOID
294 1.1 jakllsch CopyMem (
295 1.1 jakllsch IN VOID *Dest,
296 1.1.1.2 jmcneill IN CONST VOID *Src,
297 1.1 jakllsch IN UINTN len
298 1.1 jakllsch );
299 1.1 jakllsch
300 1.1 jakllsch INTN
301 1.1 jakllsch CompareMem (
302 1.1.1.2 jmcneill IN CONST VOID *Dest,
303 1.1.1.2 jmcneill IN CONST VOID *Src,
304 1.1 jakllsch IN UINTN len
305 1.1 jakllsch );
306 1.1 jakllsch
307 1.1 jakllsch INTN
308 1.1 jakllsch StrCmp (
309 1.1.1.2 jmcneill IN CONST CHAR16 *s1,
310 1.1.1.2 jmcneill IN CONST CHAR16 *s2
311 1.1 jakllsch );
312 1.1 jakllsch
313 1.1 jakllsch INTN
314 1.1 jakllsch StrnCmp (
315 1.1.1.2 jmcneill IN CONST CHAR16 *s1,
316 1.1.1.2 jmcneill IN CONST CHAR16 *s2,
317 1.1 jakllsch IN UINTN len
318 1.1 jakllsch );
319 1.1 jakllsch
320 1.1 jakllsch INTN
321 1.1 jakllsch StriCmp (
322 1.1.1.2 jmcneill IN CONST CHAR16 *s1,
323 1.1.1.2 jmcneill IN CONST CHAR16 *s2
324 1.1 jakllsch );
325 1.1 jakllsch
326 1.1 jakllsch VOID
327 1.1 jakllsch StrLwr (
328 1.1 jakllsch IN CHAR16 *Str
329 1.1 jakllsch );
330 1.1 jakllsch
331 1.1 jakllsch VOID
332 1.1 jakllsch StrUpr (
333 1.1 jakllsch IN CHAR16 *Str
334 1.1 jakllsch );
335 1.1 jakllsch
336 1.1 jakllsch VOID
337 1.1 jakllsch StrCpy (
338 1.1 jakllsch IN CHAR16 *Dest,
339 1.1.1.2 jmcneill IN CONST CHAR16 *Src
340 1.1.1.2 jmcneill );
341 1.1.1.2 jmcneill
342 1.1.1.2 jmcneill VOID
343 1.1.1.2 jmcneill StrnCpy (
344 1.1.1.2 jmcneill IN CHAR16 *Dest,
345 1.1.1.2 jmcneill IN CONST CHAR16 *Src,
346 1.1.1.2 jmcneill IN UINTN Len
347 1.1.1.2 jmcneill );
348 1.1.1.2 jmcneill
349 1.1.1.2 jmcneill CHAR16 *
350 1.1.1.2 jmcneill StpCpy (
351 1.1.1.2 jmcneill IN CHAR16 *Dest,
352 1.1.1.2 jmcneill IN CONST CHAR16 *Src
353 1.1.1.2 jmcneill );
354 1.1.1.2 jmcneill
355 1.1.1.2 jmcneill CHAR16 *
356 1.1.1.2 jmcneill StpnCpy (
357 1.1.1.2 jmcneill IN CHAR16 *Dest,
358 1.1.1.2 jmcneill IN CONST CHAR16 *Src,
359 1.1.1.2 jmcneill IN UINTN Len
360 1.1 jakllsch );
361 1.1 jakllsch
362 1.1 jakllsch VOID
363 1.1 jakllsch StrCat (
364 1.1 jakllsch IN CHAR16 *Dest,
365 1.1.1.2 jmcneill IN CONST CHAR16 *Src
366 1.1.1.2 jmcneill );
367 1.1.1.2 jmcneill
368 1.1.1.2 jmcneill VOID
369 1.1.1.2 jmcneill StrnCat (
370 1.1.1.2 jmcneill IN CHAR16 *Dest,
371 1.1.1.2 jmcneill IN CONST CHAR16 *Src,
372 1.1.1.2 jmcneill IN UINTN Len
373 1.1 jakllsch );
374 1.1 jakllsch
375 1.1 jakllsch UINTN
376 1.1 jakllsch StrLen (
377 1.1.1.2 jmcneill IN CONST CHAR16 *s1
378 1.1.1.2 jmcneill );
379 1.1.1.2 jmcneill
380 1.1.1.2 jmcneill UINTN
381 1.1.1.2 jmcneill StrnLen (
382 1.1.1.2 jmcneill IN CONST CHAR16 *s1,
383 1.1.1.2 jmcneill IN UINTN Len
384 1.1 jakllsch );
385 1.1 jakllsch
386 1.1 jakllsch UINTN
387 1.1 jakllsch StrSize (
388 1.1.1.2 jmcneill IN CONST CHAR16 *s1
389 1.1 jakllsch );
390 1.1 jakllsch
391 1.1 jakllsch CHAR16 *
392 1.1 jakllsch StrDuplicate (
393 1.1.1.2 jmcneill IN CONST CHAR16 *Src
394 1.1 jakllsch );
395 1.1 jakllsch
396 1.1 jakllsch UINTN
397 1.1 jakllsch strlena (
398 1.1.1.2 jmcneill IN CONST CHAR8 *s1
399 1.1 jakllsch );
400 1.1.1.2 jmcneill
401 1.1 jakllsch UINTN
402 1.1 jakllsch strcmpa (
403 1.1.1.2 jmcneill IN CONST CHAR8 *s1,
404 1.1.1.2 jmcneill IN CONST CHAR8 *s2
405 1.1 jakllsch );
406 1.1 jakllsch
407 1.1 jakllsch UINTN
408 1.1 jakllsch strncmpa (
409 1.1.1.2 jmcneill IN CONST CHAR8 *s1,
410 1.1.1.2 jmcneill IN CONST CHAR8 *s2,
411 1.1 jakllsch IN UINTN len
412 1.1 jakllsch );
413 1.1 jakllsch
414 1.1 jakllsch UINTN
415 1.1 jakllsch xtoi (
416 1.1.1.2 jmcneill CONST CHAR16 *str
417 1.1 jakllsch );
418 1.1 jakllsch
419 1.1 jakllsch UINTN
420 1.1 jakllsch Atoi (
421 1.1.1.2 jmcneill CONST CHAR16 *str
422 1.1 jakllsch );
423 1.1 jakllsch
424 1.1.1.2 jmcneill BOOLEAN
425 1.1 jakllsch MetaMatch (
426 1.1 jakllsch IN CHAR16 *String,
427 1.1 jakllsch IN CHAR16 *Pattern
428 1.1 jakllsch );
429 1.1 jakllsch
430 1.1.1.2 jmcneill BOOLEAN
431 1.1 jakllsch MetaiMatch (
432 1.1 jakllsch IN CHAR16 *String,
433 1.1 jakllsch IN CHAR16 *Pattern
434 1.1 jakllsch );
435 1.1 jakllsch
436 1.1 jakllsch UINT64
437 1.1 jakllsch LShiftU64 (
438 1.1 jakllsch IN UINT64 Operand,
439 1.1 jakllsch IN UINTN Count
440 1.1 jakllsch );
441 1.1 jakllsch
442 1.1 jakllsch UINT64
443 1.1 jakllsch RShiftU64 (
444 1.1 jakllsch IN UINT64 Operand,
445 1.1 jakllsch IN UINTN Count
446 1.1 jakllsch );
447 1.1 jakllsch
448 1.1 jakllsch UINT64
449 1.1 jakllsch MultU64x32 (
450 1.1 jakllsch IN UINT64 Multiplicand,
451 1.1 jakllsch IN UINTN Multiplier
452 1.1 jakllsch );
453 1.1 jakllsch
454 1.1 jakllsch UINT64
455 1.1 jakllsch DivU64x32 (
456 1.1 jakllsch IN UINT64 Dividend,
457 1.1 jakllsch IN UINTN Divisor,
458 1.1 jakllsch OUT UINTN *Remainder OPTIONAL
459 1.1 jakllsch );
460 1.1 jakllsch
461 1.1 jakllsch VOID
462 1.1 jakllsch InitializeLock (
463 1.1 jakllsch IN OUT FLOCK *Lock,
464 1.1 jakllsch IN EFI_TPL Priority
465 1.1 jakllsch );
466 1.1 jakllsch
467 1.1 jakllsch VOID
468 1.1 jakllsch AcquireLock (
469 1.1 jakllsch IN FLOCK *Lock
470 1.1 jakllsch );
471 1.1 jakllsch
472 1.1 jakllsch VOID
473 1.1 jakllsch ReleaseLock (
474 1.1 jakllsch IN FLOCK *Lock
475 1.1 jakllsch );
476 1.1 jakllsch
477 1.1 jakllsch
478 1.1 jakllsch INTN
479 1.1 jakllsch CompareGuid(
480 1.1 jakllsch IN EFI_GUID *Guid1,
481 1.1 jakllsch IN EFI_GUID *Guid2
482 1.1 jakllsch );
483 1.1 jakllsch
484 1.1 jakllsch VOID *
485 1.1 jakllsch AllocatePool (
486 1.1 jakllsch IN UINTN Size
487 1.1 jakllsch );
488 1.1 jakllsch
489 1.1 jakllsch VOID *
490 1.1 jakllsch AllocateZeroPool (
491 1.1 jakllsch IN UINTN Size
492 1.1 jakllsch );
493 1.1 jakllsch
494 1.1 jakllsch VOID *
495 1.1 jakllsch ReallocatePool (
496 1.1 jakllsch IN VOID *OldPool,
497 1.1 jakllsch IN UINTN OldSize,
498 1.1 jakllsch IN UINTN NewSize
499 1.1 jakllsch );
500 1.1 jakllsch
501 1.1 jakllsch VOID
502 1.1 jakllsch FreePool (
503 1.1 jakllsch IN VOID *p
504 1.1 jakllsch );
505 1.1 jakllsch
506 1.1 jakllsch
507 1.1 jakllsch VOID
508 1.1 jakllsch Output (
509 1.1 jakllsch IN CHAR16 *Str
510 1.1 jakllsch );
511 1.1 jakllsch
512 1.1 jakllsch VOID
513 1.1 jakllsch Input (
514 1.1 jakllsch IN CHAR16 *Prompt OPTIONAL,
515 1.1 jakllsch OUT CHAR16 *InStr,
516 1.1 jakllsch IN UINTN StrLen
517 1.1 jakllsch );
518 1.1 jakllsch
519 1.1 jakllsch VOID
520 1.1 jakllsch IInput (
521 1.1 jakllsch IN SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut,
522 1.1 jakllsch IN SIMPLE_INPUT_INTERFACE *ConIn,
523 1.1 jakllsch IN CHAR16 *Prompt OPTIONAL,
524 1.1 jakllsch OUT CHAR16 *InStr,
525 1.1 jakllsch IN UINTN StrLen
526 1.1 jakllsch );
527 1.1 jakllsch
528 1.1 jakllsch UINTN
529 1.1 jakllsch Print (
530 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
531 1.1 jakllsch ...
532 1.1 jakllsch );
533 1.1 jakllsch
534 1.1 jakllsch UINTN
535 1.1.1.2 jmcneill VPrint (
536 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
537 1.1.1.2 jmcneill va_list args
538 1.1.1.2 jmcneill );
539 1.1.1.2 jmcneill
540 1.1.1.2 jmcneill UINTN
541 1.1.1.3 jmcneill UnicodeSPrint (
542 1.1.1.2 jmcneill OUT CHAR16 *Str,
543 1.1.1.2 jmcneill IN UINTN StrSize,
544 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
545 1.1 jakllsch ...
546 1.1 jakllsch );
547 1.1 jakllsch
548 1.1.1.2 jmcneill UINTN
549 1.1.1.3 jmcneill UnicodeVSPrint (
550 1.1.1.2 jmcneill OUT CHAR16 *Str,
551 1.1.1.2 jmcneill IN UINTN StrSize,
552 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
553 1.1.1.2 jmcneill va_list args
554 1.1.1.2 jmcneill );
555 1.1.1.2 jmcneill
556 1.1.1.2 jmcneill CHAR16 *
557 1.1.1.2 jmcneill VPoolPrint (
558 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
559 1.1.1.2 jmcneill va_list args
560 1.1.1.2 jmcneill );
561 1.1.1.2 jmcneill
562 1.1 jakllsch CHAR16 *
563 1.1 jakllsch PoolPrint (
564 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
565 1.1 jakllsch ...
566 1.1 jakllsch );
567 1.1 jakllsch
568 1.1 jakllsch typedef struct {
569 1.1 jakllsch CHAR16 *str;
570 1.1 jakllsch UINTN len;
571 1.1 jakllsch UINTN maxlen;
572 1.1 jakllsch } POOL_PRINT;
573 1.1 jakllsch
574 1.1 jakllsch CHAR16 *
575 1.1 jakllsch CatPrint (
576 1.1 jakllsch IN OUT POOL_PRINT *Str,
577 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
578 1.1 jakllsch ...
579 1.1 jakllsch );
580 1.1 jakllsch
581 1.1 jakllsch UINTN
582 1.1 jakllsch PrintAt (
583 1.1.1.2 jmcneill IN UINTN Column,
584 1.1.1.2 jmcneill IN UINTN Row,
585 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
586 1.1 jakllsch ...
587 1.1 jakllsch );
588 1.1 jakllsch
589 1.1 jakllsch UINTN
590 1.1 jakllsch IPrint (
591 1.1 jakllsch IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out,
592 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
593 1.1 jakllsch ...
594 1.1 jakllsch );
595 1.1 jakllsch
596 1.1 jakllsch UINTN
597 1.1 jakllsch IPrintAt (
598 1.1 jakllsch IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out,
599 1.1 jakllsch IN UINTN Column,
600 1.1 jakllsch IN UINTN Row,
601 1.1.1.2 jmcneill IN CONST CHAR16 *fmt,
602 1.1 jakllsch ...
603 1.1 jakllsch );
604 1.1 jakllsch
605 1.1 jakllsch UINTN
606 1.1.1.3 jmcneill AsciiPrint (
607 1.1.1.2 jmcneill IN CONST CHAR8 *fmt,
608 1.1 jakllsch ...
609 1.1 jakllsch );
610 1.1 jakllsch
611 1.1.1.3 jmcneill UINTN
612 1.1.1.3 jmcneill AsciiVSPrint(
613 1.1.1.3 jmcneill OUT CHAR8 *Str,
614 1.1.1.3 jmcneill IN UINTN StrSize,
615 1.1.1.3 jmcneill IN CONST CHAR8 *fmt,
616 1.1.1.3 jmcneill va_list args
617 1.1.1.3 jmcneill );
618 1.1.1.3 jmcneill
619 1.1.1.3 jmcneill //
620 1.1.1.3 jmcneill // For compatibility with previous gnu-efi versions
621 1.1.1.3 jmcneill //
622 1.1.1.3 jmcneill #define SPrint UnicodeSPrint
623 1.1.1.3 jmcneill #define VSPrint UnicodeVSPrint
624 1.1.1.3 jmcneill #define APrint AsciiPrint
625 1.1.1.3 jmcneill
626 1.1 jakllsch VOID
627 1.1 jakllsch ValueToHex (
628 1.1 jakllsch IN CHAR16 *Buffer,
629 1.1 jakllsch IN UINT64 v
630 1.1 jakllsch );
631 1.1 jakllsch
632 1.1 jakllsch VOID
633 1.1 jakllsch ValueToString (
634 1.1 jakllsch IN CHAR16 *Buffer,
635 1.1 jakllsch IN BOOLEAN Comma,
636 1.1 jakllsch IN INT64 v
637 1.1 jakllsch );
638 1.1 jakllsch
639 1.1 jakllsch VOID
640 1.1.1.2 jmcneill FloatToString (
641 1.1.1.2 jmcneill IN CHAR16 *Buffer,
642 1.1.1.2 jmcneill IN BOOLEAN Comma,
643 1.1.1.2 jmcneill IN double v
644 1.1.1.2 jmcneill );
645 1.1.1.2 jmcneill
646 1.1.1.2 jmcneill VOID
647 1.1 jakllsch TimeToString (
648 1.1 jakllsch OUT CHAR16 *Buffer,
649 1.1 jakllsch IN EFI_TIME *Time
650 1.1 jakllsch );
651 1.1 jakllsch
652 1.1 jakllsch VOID
653 1.1 jakllsch GuidToString (
654 1.1 jakllsch OUT CHAR16 *Buffer,
655 1.1 jakllsch IN EFI_GUID *Guid
656 1.1 jakllsch );
657 1.1 jakllsch
658 1.1 jakllsch VOID
659 1.1 jakllsch StatusToString (
660 1.1 jakllsch OUT CHAR16 *Buffer,
661 1.1 jakllsch EFI_STATUS Status
662 1.1 jakllsch );
663 1.1 jakllsch
664 1.1 jakllsch VOID
665 1.1 jakllsch DumpHex (
666 1.1 jakllsch IN UINTN Indent,
667 1.1 jakllsch IN UINTN Offset,
668 1.1 jakllsch IN UINTN DataSize,
669 1.1 jakllsch IN VOID *UserData
670 1.1 jakllsch );
671 1.1 jakllsch
672 1.1 jakllsch BOOLEAN
673 1.1 jakllsch GrowBuffer(
674 1.1 jakllsch IN OUT EFI_STATUS *Status,
675 1.1 jakllsch IN OUT VOID **Buffer,
676 1.1 jakllsch IN UINTN BufferSize
677 1.1 jakllsch );
678 1.1 jakllsch
679 1.1 jakllsch EFI_MEMORY_DESCRIPTOR *
680 1.1 jakllsch LibMemoryMap (
681 1.1 jakllsch OUT UINTN *NoEntries,
682 1.1 jakllsch OUT UINTN *MapKey,
683 1.1 jakllsch OUT UINTN *DescriptorSize,
684 1.1 jakllsch OUT UINT32 *DescriptorVersion
685 1.1 jakllsch );
686 1.1 jakllsch
687 1.1 jakllsch VOID *
688 1.1 jakllsch LibGetVariable (
689 1.1 jakllsch IN CHAR16 *Name,
690 1.1 jakllsch IN EFI_GUID *VendorGuid
691 1.1 jakllsch );
692 1.1 jakllsch
693 1.1 jakllsch VOID *
694 1.1 jakllsch LibGetVariableAndSize (
695 1.1 jakllsch IN CHAR16 *Name,
696 1.1 jakllsch IN EFI_GUID *VendorGuid,
697 1.1 jakllsch OUT UINTN *VarSize
698 1.1 jakllsch );
699 1.1 jakllsch
700 1.1 jakllsch EFI_STATUS
701 1.1 jakllsch LibDeleteVariable (
702 1.1 jakllsch IN CHAR16 *VarName,
703 1.1 jakllsch IN EFI_GUID *VarGuid
704 1.1 jakllsch );
705 1.1 jakllsch
706 1.1 jakllsch EFI_STATUS
707 1.1.1.2 jmcneill LibSetNVVariable (
708 1.1.1.2 jmcneill IN CHAR16 *VarName,
709 1.1.1.2 jmcneill IN EFI_GUID *VarGuid,
710 1.1.1.2 jmcneill IN UINTN DataSize,
711 1.1.1.2 jmcneill IN VOID *Data
712 1.1.1.2 jmcneill );
713 1.1.1.2 jmcneill
714 1.1.1.2 jmcneill EFI_STATUS
715 1.1.1.2 jmcneill LibSetVariable (
716 1.1.1.2 jmcneill IN CHAR16 *VarName,
717 1.1.1.2 jmcneill IN EFI_GUID *VarGuid,
718 1.1.1.2 jmcneill IN UINTN DataSize,
719 1.1.1.2 jmcneill IN VOID *Data
720 1.1.1.2 jmcneill );
721 1.1.1.2 jmcneill EFI_STATUS
722 1.1 jakllsch LibInsertToTailOfBootOrder (
723 1.1 jakllsch IN UINT16 BootOption,
724 1.1 jakllsch IN BOOLEAN OnlyInsertIfEmpty
725 1.1 jakllsch );
726 1.1 jakllsch
727 1.1 jakllsch EFI_STATUS
728 1.1 jakllsch LibLocateProtocol (
729 1.1 jakllsch IN EFI_GUID *ProtocolGuid,
730 1.1 jakllsch OUT VOID **Interface
731 1.1 jakllsch );
732 1.1 jakllsch
733 1.1 jakllsch EFI_STATUS
734 1.1 jakllsch LibLocateHandle (
735 1.1 jakllsch IN EFI_LOCATE_SEARCH_TYPE SearchType,
736 1.1 jakllsch IN EFI_GUID *Protocol OPTIONAL,
737 1.1 jakllsch IN VOID *SearchKey OPTIONAL,
738 1.1 jakllsch IN OUT UINTN *NoHandles,
739 1.1 jakllsch OUT EFI_HANDLE **Buffer
740 1.1 jakllsch );
741 1.1 jakllsch
742 1.1 jakllsch EFI_STATUS
743 1.1 jakllsch LibLocateHandleByDiskSignature (
744 1.1 jakllsch IN UINT8 MBRType,
745 1.1 jakllsch IN UINT8 SignatureType,
746 1.1 jakllsch IN VOID *Signature,
747 1.1 jakllsch IN OUT UINTN *NoHandles,
748 1.1 jakllsch OUT EFI_HANDLE **Buffer
749 1.1 jakllsch );
750 1.1 jakllsch
751 1.1 jakllsch EFI_STATUS
752 1.1 jakllsch LibInstallProtocolInterfaces (
753 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
754 1.1 jakllsch ...
755 1.1 jakllsch );
756 1.1 jakllsch
757 1.1 jakllsch VOID
758 1.1 jakllsch LibUninstallProtocolInterfaces (
759 1.1 jakllsch IN EFI_HANDLE Handle,
760 1.1 jakllsch ...
761 1.1 jakllsch );
762 1.1 jakllsch
763 1.1 jakllsch EFI_STATUS
764 1.1 jakllsch LibReinstallProtocolInterfaces (
765 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
766 1.1 jakllsch ...
767 1.1 jakllsch );
768 1.1 jakllsch
769 1.1 jakllsch EFI_EVENT
770 1.1 jakllsch LibCreateProtocolNotifyEvent (
771 1.1 jakllsch IN EFI_GUID *ProtocolGuid,
772 1.1 jakllsch IN EFI_TPL NotifyTpl,
773 1.1 jakllsch IN EFI_EVENT_NOTIFY NotifyFunction,
774 1.1 jakllsch IN VOID *NotifyContext,
775 1.1 jakllsch OUT VOID *Registration
776 1.1 jakllsch );
777 1.1 jakllsch
778 1.1 jakllsch EFI_STATUS
779 1.1 jakllsch WaitForSingleEvent (
780 1.1 jakllsch IN EFI_EVENT Event,
781 1.1 jakllsch IN UINT64 Timeout OPTIONAL
782 1.1 jakllsch );
783 1.1 jakllsch
784 1.1 jakllsch VOID
785 1.1 jakllsch WaitForEventWithTimeout (
786 1.1 jakllsch IN EFI_EVENT Event,
787 1.1 jakllsch IN UINTN Timeout,
788 1.1 jakllsch IN UINTN Row,
789 1.1 jakllsch IN UINTN Column,
790 1.1 jakllsch IN CHAR16 *String,
791 1.1 jakllsch IN EFI_INPUT_KEY TimeoutKey,
792 1.1 jakllsch OUT EFI_INPUT_KEY *Key
793 1.1 jakllsch );
794 1.1 jakllsch
795 1.1 jakllsch EFI_FILE_HANDLE
796 1.1 jakllsch LibOpenRoot (
797 1.1 jakllsch IN EFI_HANDLE DeviceHandle
798 1.1 jakllsch );
799 1.1 jakllsch
800 1.1 jakllsch EFI_FILE_INFO *
801 1.1 jakllsch LibFileInfo (
802 1.1 jakllsch IN EFI_FILE_HANDLE FHand
803 1.1 jakllsch );
804 1.1 jakllsch
805 1.1 jakllsch EFI_FILE_SYSTEM_INFO *
806 1.1 jakllsch LibFileSystemInfo (
807 1.1 jakllsch IN EFI_FILE_HANDLE FHand
808 1.1 jakllsch );
809 1.1 jakllsch
810 1.1 jakllsch EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *
811 1.1 jakllsch LibFileSystemVolumeLabelInfo (
812 1.1 jakllsch IN EFI_FILE_HANDLE FHand
813 1.1 jakllsch );
814 1.1 jakllsch
815 1.1 jakllsch BOOLEAN
816 1.1 jakllsch ValidMBR(
817 1.1 jakllsch IN MASTER_BOOT_RECORD *Mbr,
818 1.1 jakllsch IN EFI_BLOCK_IO *BlkIo
819 1.1 jakllsch );
820 1.1 jakllsch
821 1.1 jakllsch BOOLEAN
822 1.1 jakllsch LibMatchDevicePaths (
823 1.1 jakllsch IN EFI_DEVICE_PATH *Multi,
824 1.1 jakllsch IN EFI_DEVICE_PATH *Single
825 1.1 jakllsch );
826 1.1 jakllsch
827 1.1 jakllsch EFI_DEVICE_PATH *
828 1.1 jakllsch LibDuplicateDevicePathInstance (
829 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
830 1.1 jakllsch );
831 1.1 jakllsch
832 1.1 jakllsch EFI_DEVICE_PATH *
833 1.1 jakllsch DevicePathFromHandle (
834 1.1 jakllsch IN EFI_HANDLE Handle
835 1.1 jakllsch );
836 1.1 jakllsch
837 1.1 jakllsch EFI_DEVICE_PATH *
838 1.1 jakllsch DevicePathInstance (
839 1.1 jakllsch IN OUT EFI_DEVICE_PATH **DevicePath,
840 1.1 jakllsch OUT UINTN *Size
841 1.1 jakllsch );
842 1.1 jakllsch
843 1.1 jakllsch UINTN
844 1.1 jakllsch DevicePathInstanceCount (
845 1.1 jakllsch IN EFI_DEVICE_PATH *DevicePath
846 1.1 jakllsch );
847 1.1 jakllsch
848 1.1 jakllsch EFI_DEVICE_PATH *
849 1.1 jakllsch AppendDevicePath (
850 1.1 jakllsch IN EFI_DEVICE_PATH *Src1,
851 1.1 jakllsch IN EFI_DEVICE_PATH *Src2
852 1.1 jakllsch );
853 1.1 jakllsch
854 1.1 jakllsch EFI_DEVICE_PATH *
855 1.1 jakllsch AppendDevicePathNode (
856 1.1 jakllsch IN EFI_DEVICE_PATH *Src1,
857 1.1 jakllsch IN EFI_DEVICE_PATH *Src2
858 1.1 jakllsch );
859 1.1 jakllsch
860 1.1 jakllsch EFI_DEVICE_PATH*
861 1.1 jakllsch AppendDevicePathInstance (
862 1.1 jakllsch IN EFI_DEVICE_PATH *Src,
863 1.1 jakllsch IN EFI_DEVICE_PATH *Instance
864 1.1 jakllsch );
865 1.1 jakllsch
866 1.1 jakllsch EFI_DEVICE_PATH *
867 1.1 jakllsch FileDevicePath (
868 1.1 jakllsch IN EFI_HANDLE Device OPTIONAL,
869 1.1 jakllsch IN CHAR16 *FileName
870 1.1 jakllsch );
871 1.1 jakllsch
872 1.1 jakllsch UINTN
873 1.1 jakllsch DevicePathSize (
874 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
875 1.1 jakllsch );
876 1.1 jakllsch
877 1.1 jakllsch EFI_DEVICE_PATH *
878 1.1 jakllsch DuplicateDevicePath (
879 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
880 1.1 jakllsch );
881 1.1 jakllsch
882 1.1 jakllsch EFI_DEVICE_PATH *
883 1.1 jakllsch UnpackDevicePath (
884 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
885 1.1 jakllsch );
886 1.1 jakllsch
887 1.1 jakllsch EFI_STATUS
888 1.1 jakllsch LibDevicePathToInterface (
889 1.1 jakllsch IN EFI_GUID *Protocol,
890 1.1 jakllsch IN EFI_DEVICE_PATH *FilePath,
891 1.1 jakllsch OUT VOID **Interface
892 1.1 jakllsch );
893 1.1 jakllsch
894 1.1 jakllsch CHAR16 *
895 1.1 jakllsch DevicePathToStr (
896 1.1 jakllsch EFI_DEVICE_PATH *DevPath
897 1.1 jakllsch );
898 1.1 jakllsch
899 1.1 jakllsch //
900 1.1 jakllsch // BugBug: I need my own include files
901 1.1 jakllsch //
902 1.1 jakllsch typedef struct {
903 1.1 jakllsch UINT8 Register;
904 1.1 jakllsch UINT8 Function;
905 1.1 jakllsch UINT8 Device;
906 1.1 jakllsch UINT8 Bus;
907 1.1 jakllsch UINT32 Reserved;
908 1.1 jakllsch } EFI_ADDRESS;
909 1.1 jakllsch
910 1.1 jakllsch typedef union {
911 1.1 jakllsch UINT64 Address;
912 1.1 jakllsch EFI_ADDRESS EfiAddress;
913 1.1 jakllsch } EFI_PCI_ADDRESS_UNION;
914 1.1 jakllsch
915 1.1 jakllsch
916 1.1 jakllsch EFI_STATUS
917 1.1 jakllsch PciFindDeviceClass (
918 1.1 jakllsch IN OUT EFI_PCI_ADDRESS_UNION *Address,
919 1.1 jakllsch IN UINT8 BaseClass,
920 1.1 jakllsch IN UINT8 SubClass
921 1.1 jakllsch );
922 1.1 jakllsch
923 1.1 jakllsch EFI_STATUS
924 1.1 jakllsch PciFindDevice (
925 1.1 jakllsch IN OUT EFI_PCI_ADDRESS_UNION *DeviceAddress,
926 1.1 jakllsch IN UINT16 VendorId,
927 1.1 jakllsch IN UINT16 DeviceId,
928 1.1 jakllsch IN OUT PCI_TYPE00 *Pci
929 1.1 jakllsch );
930 1.1 jakllsch
931 1.1 jakllsch //
932 1.1 jakllsch // SIMPLE_READ_FILE object used to access files
933 1.1 jakllsch //
934 1.1 jakllsch
935 1.1 jakllsch typedef VOID *SIMPLE_READ_FILE;
936 1.1 jakllsch
937 1.1 jakllsch EFI_STATUS
938 1.1 jakllsch OpenSimpleReadFile (
939 1.1 jakllsch IN BOOLEAN BootPolicy,
940 1.1 jakllsch IN VOID *SourceBuffer OPTIONAL,
941 1.1 jakllsch IN UINTN SourceSize,
942 1.1 jakllsch IN OUT EFI_DEVICE_PATH **FilePath,
943 1.1.1.2 jmcneill OUT EFI_HANDLE *DeviceHandle,
944 1.1 jakllsch OUT SIMPLE_READ_FILE *SimpleReadHandle
945 1.1 jakllsch );
946 1.1 jakllsch
947 1.1 jakllsch EFI_STATUS
948 1.1 jakllsch ReadSimpleReadFile (
949 1.1 jakllsch IN SIMPLE_READ_FILE SimpleReadHandle,
950 1.1 jakllsch IN UINTN Offset,
951 1.1 jakllsch IN OUT UINTN *ReadSize,
952 1.1 jakllsch OUT VOID *Buffer
953 1.1 jakllsch );
954 1.1 jakllsch
955 1.1 jakllsch
956 1.1 jakllsch VOID
957 1.1 jakllsch CloseSimpleReadFile (
958 1.1 jakllsch IN SIMPLE_READ_FILE SimpleReadHandle
959 1.1 jakllsch );
960 1.1 jakllsch
961 1.1 jakllsch VOID
962 1.1 jakllsch InitializeGuid (
963 1.1 jakllsch VOID
964 1.1 jakllsch );
965 1.1 jakllsch
966 1.1 jakllsch UINT8
967 1.1 jakllsch DecimaltoBCD(
968 1.1 jakllsch IN UINT8 DecValue
969 1.1 jakllsch );
970 1.1 jakllsch
971 1.1 jakllsch UINT8
972 1.1 jakllsch BCDtoDecimal(
973 1.1 jakllsch IN UINT8 BcdValue
974 1.1 jakllsch );
975 1.1 jakllsch
976 1.1 jakllsch EFI_STATUS
977 1.1 jakllsch LibGetSystemConfigurationTable(
978 1.1 jakllsch IN EFI_GUID *TableGuid,
979 1.1 jakllsch IN OUT VOID **Table
980 1.1 jakllsch );
981 1.1 jakllsch
982 1.1 jakllsch BOOLEAN
983 1.1 jakllsch LibIsValidTextGraphics (
984 1.1.1.2 jmcneill IN CHAR16 Graphic,
985 1.1 jakllsch OUT CHAR8 *PcAnsi, OPTIONAL
986 1.1 jakllsch OUT CHAR8 *Ascii OPTIONAL
987 1.1 jakllsch );
988 1.1 jakllsch
989 1.1 jakllsch BOOLEAN
990 1.1 jakllsch IsValidAscii (
991 1.1 jakllsch IN CHAR16 Ascii
992 1.1 jakllsch );
993 1.1 jakllsch
994 1.1 jakllsch BOOLEAN
995 1.1 jakllsch IsValidEfiCntlChar (
996 1.1 jakllsch IN CHAR16 c
997 1.1 jakllsch );
998 1.1 jakllsch
999 1.1 jakllsch CHAR16 *
1000 1.1 jakllsch LibGetUiString (
1001 1.1 jakllsch IN EFI_HANDLE Handle,
1002 1.1 jakllsch IN UI_STRING_TYPE StringType,
1003 1.1 jakllsch IN ISO_639_2 *LangCode,
1004 1.1 jakllsch IN BOOLEAN ReturnDevicePathStrOnMismatch
1005 1.1 jakllsch );
1006 1.1 jakllsch
1007 1.1 jakllsch CHAR8*
1008 1.1 jakllsch LibGetSmbiosString (
1009 1.1 jakllsch IN SMBIOS_STRUCTURE_POINTER *Smbios,
1010 1.1 jakllsch IN UINT16 StringNumber
1011 1.1 jakllsch );
1012 1.1 jakllsch
1013 1.1 jakllsch EFI_STATUS
1014 1.1 jakllsch LibGetSmbiosSystemGuidAndSerialNumber (
1015 1.1 jakllsch IN EFI_GUID *SystemGuid,
1016 1.1 jakllsch OUT CHAR8 **SystemSerialNumber
1017 1.1 jakllsch );
1018 1.1 jakllsch
1019 1.1 jakllsch
1020 1.1 jakllsch EFI_STATUS
1021 1.1 jakllsch InitializeGlobalIoDevice (
1022 1.1 jakllsch IN EFI_DEVICE_PATH *DevicePath,
1023 1.1 jakllsch IN EFI_GUID *Protocol,
1024 1.1 jakllsch IN CHAR8 *ErrorStr,
1025 1.1.1.2 jmcneill OUT EFI_DEVICE_IO_INTERFACE **GlobalIoFncs
1026 1.1 jakllsch );
1027 1.1 jakllsch
1028 1.1.1.2 jmcneill UINT32
1029 1.1 jakllsch ReadPort (
1030 1.1.1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
1031 1.1 jakllsch IN EFI_IO_WIDTH Width,
1032 1.1 jakllsch IN UINTN Port
1033 1.1 jakllsch );
1034 1.1 jakllsch
1035 1.1.1.2 jmcneill UINT32
1036 1.1 jakllsch WritePort (
1037 1.1.1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
1038 1.1 jakllsch IN EFI_IO_WIDTH Width,
1039 1.1 jakllsch IN UINTN Port,
1040 1.1 jakllsch IN UINTN Data
1041 1.1 jakllsch );
1042 1.1 jakllsch
1043 1.1.1.2 jmcneill UINT32
1044 1.1 jakllsch ReadPciConfig (
1045 1.1.1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
1046 1.1 jakllsch IN EFI_IO_WIDTH Width,
1047 1.1 jakllsch IN UINTN Port
1048 1.1 jakllsch );
1049 1.1 jakllsch
1050 1.1.1.2 jmcneill UINT32
1051 1.1 jakllsch WritePciConfig (
1052 1.1.1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
1053 1.1 jakllsch IN EFI_IO_WIDTH Width,
1054 1.1 jakllsch IN UINTN Port,
1055 1.1 jakllsch IN UINTN Data
1056 1.1 jakllsch );
1057 1.1 jakllsch
1058 1.1.1.3 jmcneill VOID
1059 1.1.1.3 jmcneill Pause (
1060 1.1.1.3 jmcneill VOID
1061 1.1.1.3 jmcneill );
1062 1.1.1.3 jmcneill
1063 1.1 jakllsch extern EFI_DEVICE_IO_INTERFACE *GlobalIoFncs;
1064 1.1 jakllsch
1065 1.1 jakllsch #define outp(_Port, _DataByte) (UINT8)WritePort(GlobalIoFncs, IO_UINT8, (UINTN)_Port, (UINTN)_DataByte)
1066 1.1 jakllsch #define inp(_Port) (UINT8)ReadPort(GlobalIoFncs, IO_UINT8, (UINTN)_Port)
1067 1.1 jakllsch #define outpw(_Port, _DataByte) (UINT16)WritePort(GlobalIoFncs, IO_UINT16, (UINTN)_Port, (UINTN)_DataByte)
1068 1.1 jakllsch #define inpw(_Port) (UINT16)ReadPort(GlobalIoFncs, IO_UINT16, (UINTN)_Port)
1069 1.1 jakllsch #define outpd(_Port, _DataByte) (UINT32)WritePort(GlobalIoFncs, IO_UINT32, (UINTN)_Port, (UINTN)_DataByte)
1070 1.1 jakllsch #define inpd(_Port) (UINT32)ReadPort(GlobalIoFncs, IO_UINT32, (UINTN)_Port)
1071 1.1 jakllsch
1072 1.1 jakllsch #define writepci8(_Addr, _DataByte) (UINT8)WritePciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr, (UINTN)_DataByte)
1073 1.1 jakllsch #define readpci8(_Addr) (UINT8)ReadPciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr)
1074 1.1 jakllsch #define writepci16(_Addr, _DataByte) (UINT16)WritePciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr, (UINTN)_DataByte)
1075 1.1 jakllsch #define readpci16(_Addr) (UINT16)ReadPciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr)
1076 1.1 jakllsch #define writepci32(_Addr, _DataByte) (UINT32)WritePciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr, (UINTN)_DataByte)
1077 1.1 jakllsch #define readpci32(_Addr) (UINT32)ReadPciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr)
1078 1.1 jakllsch
1079 1.1 jakllsch #define Port80(_PostCode) GlobalIoFncs->Io.Write (GlobalIoFncs, IO_UINT16, (UINT64)0x80, 1, &(_PostCode))
1080 1.1 jakllsch
1081 1.1 jakllsch #endif
1082