efilib.h revision 1.3 1 1.3 jmcneill /* $NetBSD: efilib.h,v 1.3 2021/09/30 19:02:47 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.3 jmcneill #if defined(_M_X64) || defined(__x86_64__) || defined(__amd64__)
27 1.3 jmcneill #include "x86_64/efilibplat.h"
28 1.3 jmcneill #elif defined(_M_IX86) || defined(__i386__)
29 1.3 jmcneill #include "ia32/efilibplat.h"
30 1.3 jmcneill #elif defined(_M_IA64) || defined(__ia64__)
31 1.3 jmcneill #include "ia64/efilibplat.h"
32 1.3 jmcneill #elif defined (_M_ARM64) || defined(__aarch64__)
33 1.3 jmcneill #include "aarch64/efilibplat.h"
34 1.3 jmcneill #elif defined (_M_ARM) || defined(__arm__)
35 1.3 jmcneill #include "arm/efilibplat.h"
36 1.3 jmcneill #elif defined (_M_MIPS64) || defined(__mips64__)
37 1.3 jmcneill #include "mips64el/efilibplat.h"
38 1.3 jmcneill #elif defined (__riscv) && __riscv_xlen == 64
39 1.3 jmcneill #include "riscv64/efilibplat.h"
40 1.3 jmcneill #endif
41 1.1 jakllsch #include "efilink.h"
42 1.1 jakllsch #include "efirtlib.h"
43 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.2 jmcneill #define gST ST
53 1.1 jakllsch extern EFI_BOOT_SERVICES *BS;
54 1.2 jmcneill #define gBS BS
55 1.1 jakllsch extern EFI_RUNTIME_SERVICES *RT;
56 1.2 jmcneill #define gRT RT
57 1.1 jakllsch
58 1.2 jmcneill extern EFI_GUID gEfiDevicePathProtocolGuid;
59 1.2 jmcneill #define DevicePathProtocol gEfiDevicePathProtocolGuid
60 1.2 jmcneill extern EFI_GUID gEfiDevicePathToTextProtocolGuid;
61 1.2 jmcneill #define DevicePathToTextProtocol gEfiDevicePathToTextProtocolGuid
62 1.2 jmcneill extern EFI_GUID gEfiDevicePathFromTextProtocolGuid;
63 1.2 jmcneill #define DevicePathFromTextProtocol gEfiDevicePathFromTextProtocolGuid
64 1.3 jmcneill extern EFI_GUID gEfiDevicePathUtilitiesProtocolGuid;
65 1.3 jmcneill #define DevicePathUtilitiesProtocol gEfiDevicePathUtilitiesProtocolGuid
66 1.2 jmcneill extern EFI_GUID gEfiLoadedImageProtocolGuid;
67 1.2 jmcneill #define LoadedImageProtocol gEfiLoadedImageProtocolGuid
68 1.2 jmcneill extern EFI_GUID gEfiSimpleTextInProtocolGuid;
69 1.2 jmcneill #define TextInProtocol gEfiSimpleTextInProtocolGuid
70 1.2 jmcneill extern EFI_GUID gEfiSimpleTextOutProtocolGuid;
71 1.2 jmcneill #define TextOutProtocol gEfiSimpleTextOutProtocolGuid
72 1.2 jmcneill extern EFI_GUID gEfiGraphicsOutputProtocolGuid;
73 1.2 jmcneill #define GraphicsOutputProtocol gEfiGraphicsOutputProtocolGuid
74 1.2 jmcneill extern EFI_GUID gEfiEdidDiscoveredProtocolGuid;
75 1.2 jmcneill #define EdidDiscoveredProtocol gEfiEdidDiscoveredProtocolGuid
76 1.2 jmcneill extern EFI_GUID gEfiEdidActiveProtocolGuid;
77 1.2 jmcneill #define EdidActiveProtocol gEfiEdidActiveProtocolGuid
78 1.2 jmcneill extern EFI_GUID gEfiEdidOverrideProtocolGuid;
79 1.2 jmcneill #define EdidOverrideProtocol gEfiEdidOverrideProtocolGuid
80 1.2 jmcneill extern EFI_GUID gEfiBlockIoProtocolGuid;
81 1.2 jmcneill #define BlockIoProtocol gEfiBlockIoProtocolGuid
82 1.2 jmcneill extern EFI_GUID gEfiBlockIo2ProtocolGuid;
83 1.2 jmcneill #define BlockIo2Protocol gEfiBlockIo2ProtocolGuid
84 1.2 jmcneill extern EFI_GUID gEfiDiskIoProtocolGuid;
85 1.2 jmcneill #define DiskIoProtocol gEfiDiskIoProtocolGuid
86 1.2 jmcneill extern EFI_GUID gEfiDiskIo2ProtocolGuid;
87 1.2 jmcneill #define DiskIo2Protocol gEfiDiskIo2ProtocolGuid
88 1.2 jmcneill extern EFI_GUID gEfiSimpleFileSystemProtocolGuid;
89 1.2 jmcneill #define FileSystemProtocol gEfiSimpleFileSystemProtocolGuid
90 1.2 jmcneill extern EFI_GUID gEfiLoadFileProtocolGuid;
91 1.2 jmcneill #define LoadFileProtocol gEfiLoadFileProtocolGuid
92 1.2 jmcneill extern EFI_GUID gEfiDeviceIoProtocolGuid;
93 1.2 jmcneill #define DeviceIoProtocol gEfiDeviceIoProtocolGuid
94 1.1 jakllsch extern EFI_GUID VariableStoreProtocol;
95 1.1 jakllsch extern EFI_GUID LegacyBootProtocol;
96 1.2 jmcneill extern EFI_GUID gEfiUnicodeCollationProtocolGuid;
97 1.2 jmcneill #define UnicodeCollationProtocol gEfiUnicodeCollationProtocolGuid
98 1.2 jmcneill extern EFI_GUID gEfiSerialIoProtocolGuid;
99 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.2 jmcneill extern EFI_GUID gEfiSimpleNetworkProtocolGuid;
105 1.2 jmcneill #define SimpleNetworkProtocol gEfiSimpleNetworkProtocolGuid
106 1.2 jmcneill extern EFI_GUID gEfiPxeBaseCodeProtocolGuid;
107 1.2 jmcneill #define PxeBaseCodeProtocol gEfiPxeBaseCodeProtocolGuid
108 1.2 jmcneill extern EFI_GUID gEfiPxeBaseCodeCallbackProtocolGuid;
109 1.2 jmcneill #define PxeCallbackProtocol gEfiPxeBaseCodeCallbackProtocolGuid
110 1.2 jmcneill extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid;
111 1.2 jmcneill #define NetworkInterfaceIdentifierProtocol gEfiNetworkInterfaceIdentifierProtocolGuid
112 1.2 jmcneill extern EFI_GUID gEFiUiInterfaceProtocolGuid;
113 1.2 jmcneill #define UiProtocol gEFiUiInterfaceProtocolGuid
114 1.1 jakllsch extern EFI_GUID InternalShellProtocol;
115 1.2 jmcneill extern EFI_GUID gEfiPciIoProtocolGuid;
116 1.2 jmcneill #define PciIoProtocol gEfiPciIoProtocolGuid
117 1.2 jmcneill extern EFI_GUID gEfiPciRootBridgeIoProtocolGuid;
118 1.2 jmcneill extern EFI_GUID gEfiDriverBindingProtocolGuid;
119 1.2 jmcneill #define DriverBindingProtocol gEfiDriverBindingProtocolGuid
120 1.2 jmcneill extern EFI_GUID gEfiComponentNameProtocolGuid;
121 1.2 jmcneill #define ComponentNameProtocol gEfiComponentNameProtocolGuid
122 1.2 jmcneill extern EFI_GUID gEfiComponentName2ProtocolGuid;
123 1.2 jmcneill #define ComponentName2Protocol gEfiComponentName2ProtocolGuid
124 1.2 jmcneill extern EFI_GUID gEfiHashProtocolGuid;
125 1.2 jmcneill #define HashProtocol gEfiHashProtocolGuid
126 1.2 jmcneill extern EFI_GUID gEfiPlatformDriverOverrideProtocolGuid;
127 1.2 jmcneill #define PlatformDriverOverrideProtocol gEfiPlatformDriverOverrideProtocolGuid
128 1.2 jmcneill extern EFI_GUID gEfiBusSpecificDriverOverrideProtocolGuid;
129 1.2 jmcneill #define BusSpecificDriverOverrideProtocol gEfiBusSpecificDriverOverrideProtocolGuid
130 1.2 jmcneill extern EFI_GUID gEfiDriverFamilyOverrideProtocolGuid;
131 1.2 jmcneill #define DriverFamilyOverrideProtocol gEfiDriverFamilyOverrideProtocolGuid
132 1.2 jmcneill extern EFI_GUID gEfiEbcProtocolGuid;
133 1.2 jmcneill
134 1.2 jmcneill extern EFI_GUID gEfiGlobalVariableGuid;
135 1.2 jmcneill #define EfiGlobalVariable gEfiGlobalVariableGuid
136 1.2 jmcneill extern EFI_GUID gEfiFileInfoGuid;
137 1.2 jmcneill #define GenericFileInfo gEfiFileInfoGuid
138 1.2 jmcneill extern EFI_GUID gEfiFileSystemInfoGuid;
139 1.2 jmcneill #define FileSystemInfo gEfiFileSystemInfoGuid
140 1.2 jmcneill extern EFI_GUID gEfiFileSystemVolumeLabelInfoIdGuid;
141 1.2 jmcneill #define FileSystemVolumeLabelInfo gEfiFileSystemVolumeLabelInfoIdGuid
142 1.2 jmcneill extern EFI_GUID gEfiPcAnsiGuid;
143 1.2 jmcneill #define PcAnsiProtocol gEfiPcAnsiGuid
144 1.2 jmcneill extern EFI_GUID gEfiVT100Guid;
145 1.2 jmcneill #define Vt100Protocol gEfiVT100Guid
146 1.2 jmcneill extern EFI_GUID gEfiVT100PlusGuid;
147 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.3 jmcneill extern EFI_GUID SMBIOS3TableGuid;
159 1.1 jakllsch extern EFI_GUID SalSystemTableGuid;
160 1.3 jmcneill extern EFI_GUID EfiDtbTableGuid;
161 1.1 jakllsch
162 1.2 jmcneill extern EFI_GUID SimplePointerProtocol;
163 1.2 jmcneill extern EFI_GUID AbsolutePointerProtocol;
164 1.2 jmcneill
165 1.2 jmcneill extern EFI_GUID gEfiDebugImageInfoTableGuid;
166 1.2 jmcneill extern EFI_GUID gEfiDebugSupportProtocolGuid;
167 1.2 jmcneill
168 1.3 jmcneill extern EFI_GUID SimpleTextInputExProtocol;
169 1.3 jmcneill
170 1.3 jmcneill extern EFI_GUID ShellProtocolGuid;
171 1.3 jmcneill extern EFI_GUID ShellParametersProtocolGuid;
172 1.3 jmcneill extern EFI_GUID ShellDynamicCommandProtocolGuid;
173 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.2 jmcneill Exit(
239 1.2 jmcneill IN EFI_STATUS ExitStatus,
240 1.2 jmcneill IN UINTN ExitDataSize,
241 1.2 jmcneill IN CHAR16 *ExitData OPTIONAL
242 1.2 jmcneill );
243 1.2 jmcneill
244 1.2 jmcneill INTN
245 1.2 jmcneill GetShellArgcArgv(
246 1.2 jmcneill EFI_HANDLE ImageHandle,
247 1.2 jmcneill CHAR16 **Argv[] /* Statically allocated */
248 1.2 jmcneill );
249 1.2 jmcneill
250 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.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.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.2 jmcneill IN CONST VOID *Dest,
303 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.2 jmcneill IN CONST CHAR16 *s1,
310 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.2 jmcneill IN CONST CHAR16 *s1,
316 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.2 jmcneill IN CONST CHAR16 *s1,
323 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.2 jmcneill IN CONST CHAR16 *Src
340 1.2 jmcneill );
341 1.2 jmcneill
342 1.2 jmcneill VOID
343 1.2 jmcneill StrnCpy (
344 1.2 jmcneill IN CHAR16 *Dest,
345 1.2 jmcneill IN CONST CHAR16 *Src,
346 1.2 jmcneill IN UINTN Len
347 1.2 jmcneill );
348 1.2 jmcneill
349 1.2 jmcneill CHAR16 *
350 1.2 jmcneill StpCpy (
351 1.2 jmcneill IN CHAR16 *Dest,
352 1.2 jmcneill IN CONST CHAR16 *Src
353 1.2 jmcneill );
354 1.2 jmcneill
355 1.2 jmcneill CHAR16 *
356 1.2 jmcneill StpnCpy (
357 1.2 jmcneill IN CHAR16 *Dest,
358 1.2 jmcneill IN CONST CHAR16 *Src,
359 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.2 jmcneill IN CONST CHAR16 *Src
366 1.2 jmcneill );
367 1.2 jmcneill
368 1.2 jmcneill VOID
369 1.2 jmcneill StrnCat (
370 1.2 jmcneill IN CHAR16 *Dest,
371 1.2 jmcneill IN CONST CHAR16 *Src,
372 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.2 jmcneill IN CONST CHAR16 *s1
378 1.2 jmcneill );
379 1.2 jmcneill
380 1.2 jmcneill UINTN
381 1.2 jmcneill StrnLen (
382 1.2 jmcneill IN CONST CHAR16 *s1,
383 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.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.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.2 jmcneill IN CONST CHAR8 *s1
399 1.1 jakllsch );
400 1.2 jmcneill
401 1.1 jakllsch UINTN
402 1.1 jakllsch strcmpa (
403 1.2 jmcneill IN CONST CHAR8 *s1,
404 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.2 jmcneill IN CONST CHAR8 *s1,
410 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.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.2 jmcneill CONST CHAR16 *str
422 1.1 jakllsch );
423 1.1 jakllsch
424 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.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.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.2 jmcneill VPrint (
536 1.2 jmcneill IN CONST CHAR16 *fmt,
537 1.2 jmcneill va_list args
538 1.2 jmcneill );
539 1.2 jmcneill
540 1.2 jmcneill UINTN
541 1.3 jmcneill UnicodeSPrint (
542 1.2 jmcneill OUT CHAR16 *Str,
543 1.2 jmcneill IN UINTN StrSize,
544 1.2 jmcneill IN CONST CHAR16 *fmt,
545 1.1 jakllsch ...
546 1.1 jakllsch );
547 1.1 jakllsch
548 1.2 jmcneill UINTN
549 1.3 jmcneill UnicodeVSPrint (
550 1.2 jmcneill OUT CHAR16 *Str,
551 1.2 jmcneill IN UINTN StrSize,
552 1.2 jmcneill IN CONST CHAR16 *fmt,
553 1.2 jmcneill va_list args
554 1.2 jmcneill );
555 1.2 jmcneill
556 1.2 jmcneill CHAR16 *
557 1.2 jmcneill VPoolPrint (
558 1.2 jmcneill IN CONST CHAR16 *fmt,
559 1.2 jmcneill va_list args
560 1.2 jmcneill );
561 1.2 jmcneill
562 1.1 jakllsch CHAR16 *
563 1.1 jakllsch PoolPrint (
564 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.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.2 jmcneill IN UINTN Column,
584 1.2 jmcneill IN UINTN Row,
585 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.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.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.3 jmcneill AsciiPrint (
607 1.2 jmcneill IN CONST CHAR8 *fmt,
608 1.1 jakllsch ...
609 1.1 jakllsch );
610 1.1 jakllsch
611 1.3 jmcneill UINTN
612 1.3 jmcneill AsciiVSPrint(
613 1.3 jmcneill OUT CHAR8 *Str,
614 1.3 jmcneill IN UINTN StrSize,
615 1.3 jmcneill IN CONST CHAR8 *fmt,
616 1.3 jmcneill va_list args
617 1.3 jmcneill );
618 1.3 jmcneill
619 1.3 jmcneill //
620 1.3 jmcneill // For compatibility with previous gnu-efi versions
621 1.3 jmcneill //
622 1.3 jmcneill #define SPrint UnicodeSPrint
623 1.3 jmcneill #define VSPrint UnicodeVSPrint
624 1.3 jmcneill #define APrint AsciiPrint
625 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.2 jmcneill #ifndef __NetBSD__
640 1.2 jmcneill VOID
641 1.2 jmcneill FloatToString (
642 1.2 jmcneill IN CHAR16 *Buffer,
643 1.2 jmcneill IN BOOLEAN Comma,
644 1.2 jmcneill IN double v
645 1.2 jmcneill );
646 1.2 jmcneill #endif
647 1.2 jmcneill
648 1.1 jakllsch VOID
649 1.1 jakllsch TimeToString (
650 1.1 jakllsch OUT CHAR16 *Buffer,
651 1.1 jakllsch IN EFI_TIME *Time
652 1.1 jakllsch );
653 1.1 jakllsch
654 1.1 jakllsch VOID
655 1.1 jakllsch GuidToString (
656 1.1 jakllsch OUT CHAR16 *Buffer,
657 1.1 jakllsch IN EFI_GUID *Guid
658 1.1 jakllsch );
659 1.1 jakllsch
660 1.1 jakllsch VOID
661 1.1 jakllsch StatusToString (
662 1.1 jakllsch OUT CHAR16 *Buffer,
663 1.1 jakllsch EFI_STATUS Status
664 1.1 jakllsch );
665 1.1 jakllsch
666 1.1 jakllsch VOID
667 1.1 jakllsch DumpHex (
668 1.1 jakllsch IN UINTN Indent,
669 1.1 jakllsch IN UINTN Offset,
670 1.1 jakllsch IN UINTN DataSize,
671 1.1 jakllsch IN VOID *UserData
672 1.1 jakllsch );
673 1.1 jakllsch
674 1.1 jakllsch BOOLEAN
675 1.1 jakllsch GrowBuffer(
676 1.1 jakllsch IN OUT EFI_STATUS *Status,
677 1.1 jakllsch IN OUT VOID **Buffer,
678 1.1 jakllsch IN UINTN BufferSize
679 1.1 jakllsch );
680 1.1 jakllsch
681 1.1 jakllsch EFI_MEMORY_DESCRIPTOR *
682 1.1 jakllsch LibMemoryMap (
683 1.1 jakllsch OUT UINTN *NoEntries,
684 1.1 jakllsch OUT UINTN *MapKey,
685 1.1 jakllsch OUT UINTN *DescriptorSize,
686 1.1 jakllsch OUT UINT32 *DescriptorVersion
687 1.1 jakllsch );
688 1.1 jakllsch
689 1.1 jakllsch VOID *
690 1.1 jakllsch LibGetVariable (
691 1.1 jakllsch IN CHAR16 *Name,
692 1.1 jakllsch IN EFI_GUID *VendorGuid
693 1.1 jakllsch );
694 1.1 jakllsch
695 1.1 jakllsch VOID *
696 1.1 jakllsch LibGetVariableAndSize (
697 1.1 jakllsch IN CHAR16 *Name,
698 1.1 jakllsch IN EFI_GUID *VendorGuid,
699 1.1 jakllsch OUT UINTN *VarSize
700 1.1 jakllsch );
701 1.1 jakllsch
702 1.1 jakllsch EFI_STATUS
703 1.1 jakllsch LibDeleteVariable (
704 1.1 jakllsch IN CHAR16 *VarName,
705 1.1 jakllsch IN EFI_GUID *VarGuid
706 1.1 jakllsch );
707 1.1 jakllsch
708 1.1 jakllsch EFI_STATUS
709 1.2 jmcneill LibSetNVVariable (
710 1.2 jmcneill IN CHAR16 *VarName,
711 1.2 jmcneill IN EFI_GUID *VarGuid,
712 1.2 jmcneill IN UINTN DataSize,
713 1.2 jmcneill IN VOID *Data
714 1.2 jmcneill );
715 1.2 jmcneill
716 1.2 jmcneill EFI_STATUS
717 1.2 jmcneill LibSetVariable (
718 1.2 jmcneill IN CHAR16 *VarName,
719 1.2 jmcneill IN EFI_GUID *VarGuid,
720 1.2 jmcneill IN UINTN DataSize,
721 1.2 jmcneill IN VOID *Data
722 1.2 jmcneill );
723 1.2 jmcneill EFI_STATUS
724 1.1 jakllsch LibInsertToTailOfBootOrder (
725 1.1 jakllsch IN UINT16 BootOption,
726 1.1 jakllsch IN BOOLEAN OnlyInsertIfEmpty
727 1.1 jakllsch );
728 1.1 jakllsch
729 1.1 jakllsch EFI_STATUS
730 1.1 jakllsch LibLocateProtocol (
731 1.1 jakllsch IN EFI_GUID *ProtocolGuid,
732 1.1 jakllsch OUT VOID **Interface
733 1.1 jakllsch );
734 1.1 jakllsch
735 1.1 jakllsch EFI_STATUS
736 1.1 jakllsch LibLocateHandle (
737 1.1 jakllsch IN EFI_LOCATE_SEARCH_TYPE SearchType,
738 1.1 jakllsch IN EFI_GUID *Protocol OPTIONAL,
739 1.1 jakllsch IN VOID *SearchKey OPTIONAL,
740 1.1 jakllsch IN OUT UINTN *NoHandles,
741 1.1 jakllsch OUT EFI_HANDLE **Buffer
742 1.1 jakllsch );
743 1.1 jakllsch
744 1.1 jakllsch EFI_STATUS
745 1.1 jakllsch LibLocateHandleByDiskSignature (
746 1.1 jakllsch IN UINT8 MBRType,
747 1.1 jakllsch IN UINT8 SignatureType,
748 1.1 jakllsch IN VOID *Signature,
749 1.1 jakllsch IN OUT UINTN *NoHandles,
750 1.1 jakllsch OUT EFI_HANDLE **Buffer
751 1.1 jakllsch );
752 1.1 jakllsch
753 1.1 jakllsch EFI_STATUS
754 1.1 jakllsch LibInstallProtocolInterfaces (
755 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
756 1.1 jakllsch ...
757 1.1 jakllsch );
758 1.1 jakllsch
759 1.1 jakllsch VOID
760 1.1 jakllsch LibUninstallProtocolInterfaces (
761 1.1 jakllsch IN EFI_HANDLE Handle,
762 1.1 jakllsch ...
763 1.1 jakllsch );
764 1.1 jakllsch
765 1.1 jakllsch EFI_STATUS
766 1.1 jakllsch LibReinstallProtocolInterfaces (
767 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
768 1.1 jakllsch ...
769 1.1 jakllsch );
770 1.1 jakllsch
771 1.1 jakllsch EFI_EVENT
772 1.1 jakllsch LibCreateProtocolNotifyEvent (
773 1.1 jakllsch IN EFI_GUID *ProtocolGuid,
774 1.1 jakllsch IN EFI_TPL NotifyTpl,
775 1.1 jakllsch IN EFI_EVENT_NOTIFY NotifyFunction,
776 1.1 jakllsch IN VOID *NotifyContext,
777 1.1 jakllsch OUT VOID *Registration
778 1.1 jakllsch );
779 1.1 jakllsch
780 1.1 jakllsch EFI_STATUS
781 1.1 jakllsch WaitForSingleEvent (
782 1.1 jakllsch IN EFI_EVENT Event,
783 1.1 jakllsch IN UINT64 Timeout OPTIONAL
784 1.1 jakllsch );
785 1.1 jakllsch
786 1.1 jakllsch VOID
787 1.1 jakllsch WaitForEventWithTimeout (
788 1.1 jakllsch IN EFI_EVENT Event,
789 1.1 jakllsch IN UINTN Timeout,
790 1.1 jakllsch IN UINTN Row,
791 1.1 jakllsch IN UINTN Column,
792 1.1 jakllsch IN CHAR16 *String,
793 1.1 jakllsch IN EFI_INPUT_KEY TimeoutKey,
794 1.1 jakllsch OUT EFI_INPUT_KEY *Key
795 1.1 jakllsch );
796 1.1 jakllsch
797 1.1 jakllsch EFI_FILE_HANDLE
798 1.1 jakllsch LibOpenRoot (
799 1.1 jakllsch IN EFI_HANDLE DeviceHandle
800 1.1 jakllsch );
801 1.1 jakllsch
802 1.1 jakllsch EFI_FILE_INFO *
803 1.1 jakllsch LibFileInfo (
804 1.1 jakllsch IN EFI_FILE_HANDLE FHand
805 1.1 jakllsch );
806 1.1 jakllsch
807 1.1 jakllsch EFI_FILE_SYSTEM_INFO *
808 1.1 jakllsch LibFileSystemInfo (
809 1.1 jakllsch IN EFI_FILE_HANDLE FHand
810 1.1 jakllsch );
811 1.1 jakllsch
812 1.1 jakllsch EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *
813 1.1 jakllsch LibFileSystemVolumeLabelInfo (
814 1.1 jakllsch IN EFI_FILE_HANDLE FHand
815 1.1 jakllsch );
816 1.1 jakllsch
817 1.1 jakllsch BOOLEAN
818 1.1 jakllsch ValidMBR(
819 1.1 jakllsch IN MASTER_BOOT_RECORD *Mbr,
820 1.1 jakllsch IN EFI_BLOCK_IO *BlkIo
821 1.1 jakllsch );
822 1.1 jakllsch
823 1.1 jakllsch BOOLEAN
824 1.1 jakllsch LibMatchDevicePaths (
825 1.1 jakllsch IN EFI_DEVICE_PATH *Multi,
826 1.1 jakllsch IN EFI_DEVICE_PATH *Single
827 1.1 jakllsch );
828 1.1 jakllsch
829 1.1 jakllsch EFI_DEVICE_PATH *
830 1.1 jakllsch LibDuplicateDevicePathInstance (
831 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
832 1.1 jakllsch );
833 1.1 jakllsch
834 1.1 jakllsch EFI_DEVICE_PATH *
835 1.1 jakllsch DevicePathFromHandle (
836 1.1 jakllsch IN EFI_HANDLE Handle
837 1.1 jakllsch );
838 1.1 jakllsch
839 1.1 jakllsch EFI_DEVICE_PATH *
840 1.1 jakllsch DevicePathInstance (
841 1.1 jakllsch IN OUT EFI_DEVICE_PATH **DevicePath,
842 1.1 jakllsch OUT UINTN *Size
843 1.1 jakllsch );
844 1.1 jakllsch
845 1.1 jakllsch UINTN
846 1.1 jakllsch DevicePathInstanceCount (
847 1.1 jakllsch IN EFI_DEVICE_PATH *DevicePath
848 1.1 jakllsch );
849 1.1 jakllsch
850 1.1 jakllsch EFI_DEVICE_PATH *
851 1.1 jakllsch AppendDevicePath (
852 1.1 jakllsch IN EFI_DEVICE_PATH *Src1,
853 1.1 jakllsch IN EFI_DEVICE_PATH *Src2
854 1.1 jakllsch );
855 1.1 jakllsch
856 1.1 jakllsch EFI_DEVICE_PATH *
857 1.1 jakllsch AppendDevicePathNode (
858 1.1 jakllsch IN EFI_DEVICE_PATH *Src1,
859 1.1 jakllsch IN EFI_DEVICE_PATH *Src2
860 1.1 jakllsch );
861 1.1 jakllsch
862 1.1 jakllsch EFI_DEVICE_PATH*
863 1.1 jakllsch AppendDevicePathInstance (
864 1.1 jakllsch IN EFI_DEVICE_PATH *Src,
865 1.1 jakllsch IN EFI_DEVICE_PATH *Instance
866 1.1 jakllsch );
867 1.1 jakllsch
868 1.1 jakllsch EFI_DEVICE_PATH *
869 1.1 jakllsch FileDevicePath (
870 1.1 jakllsch IN EFI_HANDLE Device OPTIONAL,
871 1.1 jakllsch IN CHAR16 *FileName
872 1.1 jakllsch );
873 1.1 jakllsch
874 1.1 jakllsch UINTN
875 1.1 jakllsch DevicePathSize (
876 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
877 1.1 jakllsch );
878 1.1 jakllsch
879 1.1 jakllsch EFI_DEVICE_PATH *
880 1.1 jakllsch DuplicateDevicePath (
881 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
882 1.1 jakllsch );
883 1.1 jakllsch
884 1.1 jakllsch EFI_DEVICE_PATH *
885 1.1 jakllsch UnpackDevicePath (
886 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
887 1.1 jakllsch );
888 1.1 jakllsch
889 1.1 jakllsch EFI_STATUS
890 1.1 jakllsch LibDevicePathToInterface (
891 1.1 jakllsch IN EFI_GUID *Protocol,
892 1.1 jakllsch IN EFI_DEVICE_PATH *FilePath,
893 1.1 jakllsch OUT VOID **Interface
894 1.1 jakllsch );
895 1.1 jakllsch
896 1.1 jakllsch CHAR16 *
897 1.1 jakllsch DevicePathToStr (
898 1.1 jakllsch EFI_DEVICE_PATH *DevPath
899 1.1 jakllsch );
900 1.1 jakllsch
901 1.1 jakllsch //
902 1.1 jakllsch // BugBug: I need my own include files
903 1.1 jakllsch //
904 1.1 jakllsch typedef struct {
905 1.1 jakllsch UINT8 Register;
906 1.1 jakllsch UINT8 Function;
907 1.1 jakllsch UINT8 Device;
908 1.1 jakllsch UINT8 Bus;
909 1.1 jakllsch UINT32 Reserved;
910 1.1 jakllsch } EFI_ADDRESS;
911 1.1 jakllsch
912 1.1 jakllsch typedef union {
913 1.1 jakllsch UINT64 Address;
914 1.1 jakllsch EFI_ADDRESS EfiAddress;
915 1.1 jakllsch } EFI_PCI_ADDRESS_UNION;
916 1.1 jakllsch
917 1.1 jakllsch
918 1.1 jakllsch EFI_STATUS
919 1.1 jakllsch PciFindDeviceClass (
920 1.1 jakllsch IN OUT EFI_PCI_ADDRESS_UNION *Address,
921 1.1 jakllsch IN UINT8 BaseClass,
922 1.1 jakllsch IN UINT8 SubClass
923 1.1 jakllsch );
924 1.1 jakllsch
925 1.1 jakllsch EFI_STATUS
926 1.1 jakllsch PciFindDevice (
927 1.1 jakllsch IN OUT EFI_PCI_ADDRESS_UNION *DeviceAddress,
928 1.1 jakllsch IN UINT16 VendorId,
929 1.1 jakllsch IN UINT16 DeviceId,
930 1.1 jakllsch IN OUT PCI_TYPE00 *Pci
931 1.1 jakllsch );
932 1.1 jakllsch
933 1.1 jakllsch //
934 1.1 jakllsch // SIMPLE_READ_FILE object used to access files
935 1.1 jakllsch //
936 1.1 jakllsch
937 1.1 jakllsch typedef VOID *SIMPLE_READ_FILE;
938 1.1 jakllsch
939 1.1 jakllsch EFI_STATUS
940 1.1 jakllsch OpenSimpleReadFile (
941 1.1 jakllsch IN BOOLEAN BootPolicy,
942 1.1 jakllsch IN VOID *SourceBuffer OPTIONAL,
943 1.1 jakllsch IN UINTN SourceSize,
944 1.1 jakllsch IN OUT EFI_DEVICE_PATH **FilePath,
945 1.2 jmcneill OUT EFI_HANDLE *DeviceHandle,
946 1.1 jakllsch OUT SIMPLE_READ_FILE *SimpleReadHandle
947 1.1 jakllsch );
948 1.1 jakllsch
949 1.1 jakllsch EFI_STATUS
950 1.1 jakllsch ReadSimpleReadFile (
951 1.1 jakllsch IN SIMPLE_READ_FILE SimpleReadHandle,
952 1.1 jakllsch IN UINTN Offset,
953 1.1 jakllsch IN OUT UINTN *ReadSize,
954 1.1 jakllsch OUT VOID *Buffer
955 1.1 jakllsch );
956 1.1 jakllsch
957 1.1 jakllsch
958 1.1 jakllsch VOID
959 1.1 jakllsch CloseSimpleReadFile (
960 1.1 jakllsch IN SIMPLE_READ_FILE SimpleReadHandle
961 1.1 jakllsch );
962 1.1 jakllsch
963 1.1 jakllsch VOID
964 1.1 jakllsch InitializeGuid (
965 1.1 jakllsch VOID
966 1.1 jakllsch );
967 1.1 jakllsch
968 1.1 jakllsch UINT8
969 1.1 jakllsch DecimaltoBCD(
970 1.1 jakllsch IN UINT8 DecValue
971 1.1 jakllsch );
972 1.1 jakllsch
973 1.1 jakllsch UINT8
974 1.1 jakllsch BCDtoDecimal(
975 1.1 jakllsch IN UINT8 BcdValue
976 1.1 jakllsch );
977 1.1 jakllsch
978 1.1 jakllsch EFI_STATUS
979 1.1 jakllsch LibGetSystemConfigurationTable(
980 1.1 jakllsch IN EFI_GUID *TableGuid,
981 1.1 jakllsch IN OUT VOID **Table
982 1.1 jakllsch );
983 1.1 jakllsch
984 1.1 jakllsch BOOLEAN
985 1.1 jakllsch LibIsValidTextGraphics (
986 1.2 jmcneill IN CHAR16 Graphic,
987 1.1 jakllsch OUT CHAR8 *PcAnsi, OPTIONAL
988 1.1 jakllsch OUT CHAR8 *Ascii OPTIONAL
989 1.1 jakllsch );
990 1.1 jakllsch
991 1.1 jakllsch BOOLEAN
992 1.1 jakllsch IsValidAscii (
993 1.1 jakllsch IN CHAR16 Ascii
994 1.1 jakllsch );
995 1.1 jakllsch
996 1.1 jakllsch BOOLEAN
997 1.1 jakllsch IsValidEfiCntlChar (
998 1.1 jakllsch IN CHAR16 c
999 1.1 jakllsch );
1000 1.1 jakllsch
1001 1.1 jakllsch CHAR16 *
1002 1.1 jakllsch LibGetUiString (
1003 1.1 jakllsch IN EFI_HANDLE Handle,
1004 1.1 jakllsch IN UI_STRING_TYPE StringType,
1005 1.1 jakllsch IN ISO_639_2 *LangCode,
1006 1.1 jakllsch IN BOOLEAN ReturnDevicePathStrOnMismatch
1007 1.1 jakllsch );
1008 1.1 jakllsch
1009 1.1 jakllsch CHAR8*
1010 1.1 jakllsch LibGetSmbiosString (
1011 1.1 jakllsch IN SMBIOS_STRUCTURE_POINTER *Smbios,
1012 1.1 jakllsch IN UINT16 StringNumber
1013 1.1 jakllsch );
1014 1.1 jakllsch
1015 1.1 jakllsch EFI_STATUS
1016 1.1 jakllsch LibGetSmbiosSystemGuidAndSerialNumber (
1017 1.1 jakllsch IN EFI_GUID *SystemGuid,
1018 1.1 jakllsch OUT CHAR8 **SystemSerialNumber
1019 1.1 jakllsch );
1020 1.1 jakllsch
1021 1.1 jakllsch
1022 1.1 jakllsch EFI_STATUS
1023 1.1 jakllsch InitializeGlobalIoDevice (
1024 1.1 jakllsch IN EFI_DEVICE_PATH *DevicePath,
1025 1.1 jakllsch IN EFI_GUID *Protocol,
1026 1.1 jakllsch IN CHAR8 *ErrorStr,
1027 1.2 jmcneill OUT EFI_DEVICE_IO_INTERFACE **GlobalIoFncs
1028 1.1 jakllsch );
1029 1.1 jakllsch
1030 1.2 jmcneill UINT32
1031 1.1 jakllsch ReadPort (
1032 1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
1033 1.1 jakllsch IN EFI_IO_WIDTH Width,
1034 1.1 jakllsch IN UINTN Port
1035 1.1 jakllsch );
1036 1.1 jakllsch
1037 1.2 jmcneill UINT32
1038 1.1 jakllsch WritePort (
1039 1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
1040 1.1 jakllsch IN EFI_IO_WIDTH Width,
1041 1.1 jakllsch IN UINTN Port,
1042 1.1 jakllsch IN UINTN Data
1043 1.1 jakllsch );
1044 1.1 jakllsch
1045 1.2 jmcneill UINT32
1046 1.1 jakllsch ReadPciConfig (
1047 1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
1048 1.1 jakllsch IN EFI_IO_WIDTH Width,
1049 1.1 jakllsch IN UINTN Port
1050 1.1 jakllsch );
1051 1.1 jakllsch
1052 1.2 jmcneill UINT32
1053 1.1 jakllsch WritePciConfig (
1054 1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
1055 1.1 jakllsch IN EFI_IO_WIDTH Width,
1056 1.1 jakllsch IN UINTN Port,
1057 1.1 jakllsch IN UINTN Data
1058 1.1 jakllsch );
1059 1.1 jakllsch
1060 1.3 jmcneill VOID
1061 1.3 jmcneill Pause (
1062 1.3 jmcneill VOID
1063 1.3 jmcneill );
1064 1.3 jmcneill
1065 1.1 jakllsch extern EFI_DEVICE_IO_INTERFACE *GlobalIoFncs;
1066 1.1 jakllsch
1067 1.1 jakllsch #define outp(_Port, _DataByte) (UINT8)WritePort(GlobalIoFncs, IO_UINT8, (UINTN)_Port, (UINTN)_DataByte)
1068 1.1 jakllsch #define inp(_Port) (UINT8)ReadPort(GlobalIoFncs, IO_UINT8, (UINTN)_Port)
1069 1.1 jakllsch #define outpw(_Port, _DataByte) (UINT16)WritePort(GlobalIoFncs, IO_UINT16, (UINTN)_Port, (UINTN)_DataByte)
1070 1.1 jakllsch #define inpw(_Port) (UINT16)ReadPort(GlobalIoFncs, IO_UINT16, (UINTN)_Port)
1071 1.1 jakllsch #define outpd(_Port, _DataByte) (UINT32)WritePort(GlobalIoFncs, IO_UINT32, (UINTN)_Port, (UINTN)_DataByte)
1072 1.1 jakllsch #define inpd(_Port) (UINT32)ReadPort(GlobalIoFncs, IO_UINT32, (UINTN)_Port)
1073 1.1 jakllsch
1074 1.1 jakllsch #define writepci8(_Addr, _DataByte) (UINT8)WritePciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr, (UINTN)_DataByte)
1075 1.1 jakllsch #define readpci8(_Addr) (UINT8)ReadPciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr)
1076 1.1 jakllsch #define writepci16(_Addr, _DataByte) (UINT16)WritePciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr, (UINTN)_DataByte)
1077 1.1 jakllsch #define readpci16(_Addr) (UINT16)ReadPciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr)
1078 1.1 jakllsch #define writepci32(_Addr, _DataByte) (UINT32)WritePciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr, (UINTN)_DataByte)
1079 1.1 jakllsch #define readpci32(_Addr) (UINT32)ReadPciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr)
1080 1.1 jakllsch
1081 1.1 jakllsch #define Port80(_PostCode) GlobalIoFncs->Io.Write (GlobalIoFncs, IO_UINT16, (UINT64)0x80, 1, &(_PostCode))
1082 1.1 jakllsch
1083 1.1 jakllsch #endif
1084