efilib.h revision 1.1 1 1.1 jakllsch /* $NetBSD: efilib.h,v 1.1 2014/04/01 16:16:07 jakllsch 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 jakllsch #include "efilibplat.h"
27 1.1 jakllsch #include "efilink.h"
28 1.1 jakllsch #include "efirtlib.h"
29 1.1 jakllsch #include "pci22.h"
30 1.1 jakllsch #include "libsmbios.h"
31 1.1 jakllsch
32 1.1 jakllsch //
33 1.1 jakllsch // Public read-only data in the EFI library
34 1.1 jakllsch //
35 1.1 jakllsch
36 1.1 jakllsch extern EFI_SYSTEM_TABLE *ST;
37 1.1 jakllsch extern EFI_BOOT_SERVICES *BS;
38 1.1 jakllsch extern EFI_RUNTIME_SERVICES *RT;
39 1.1 jakllsch
40 1.1 jakllsch extern EFI_GUID DevicePathProtocol;
41 1.1 jakllsch extern EFI_GUID LoadedImageProtocol;
42 1.1 jakllsch extern EFI_GUID TextInProtocol;
43 1.1 jakllsch extern EFI_GUID TextOutProtocol;
44 1.1 jakllsch extern EFI_GUID BlockIoProtocol;
45 1.1 jakllsch extern EFI_GUID DiskIoProtocol;
46 1.1 jakllsch extern EFI_GUID FileSystemProtocol;
47 1.1 jakllsch extern EFI_GUID LoadFileProtocol;
48 1.1 jakllsch extern EFI_GUID DeviceIoProtocol;
49 1.1 jakllsch extern EFI_GUID VariableStoreProtocol;
50 1.1 jakllsch extern EFI_GUID LegacyBootProtocol;
51 1.1 jakllsch extern EFI_GUID UnicodeCollationProtocol;
52 1.1 jakllsch extern EFI_GUID SerialIoProtocol;
53 1.1 jakllsch extern EFI_GUID VgaClassProtocol;
54 1.1 jakllsch extern EFI_GUID TextOutSpliterProtocol;
55 1.1 jakllsch extern EFI_GUID ErrorOutSpliterProtocol;
56 1.1 jakllsch extern EFI_GUID TextInSpliterProtocol;
57 1.1 jakllsch extern EFI_GUID SimpleNetworkProtocol;
58 1.1 jakllsch extern EFI_GUID PxeBaseCodeProtocol;
59 1.1 jakllsch extern EFI_GUID PxeCallbackProtocol;
60 1.1 jakllsch extern EFI_GUID NetworkInterfaceIdentifierProtocol;
61 1.1 jakllsch extern EFI_GUID UiProtocol;
62 1.1 jakllsch extern EFI_GUID InternalShellProtocol;
63 1.1 jakllsch extern EFI_GUID PciIoProtocol;
64 1.1 jakllsch
65 1.1 jakllsch extern EFI_GUID EfiGlobalVariable;
66 1.1 jakllsch extern EFI_GUID GenericFileInfo;
67 1.1 jakllsch extern EFI_GUID FileSystemInfo;
68 1.1 jakllsch extern EFI_GUID FileSystemVolumeLabelInfo;
69 1.1 jakllsch extern EFI_GUID PcAnsiProtocol;
70 1.1 jakllsch extern EFI_GUID Vt100Protocol;
71 1.1 jakllsch extern EFI_GUID NullGuid;
72 1.1 jakllsch extern EFI_GUID UnknownDevice;
73 1.1 jakllsch
74 1.1 jakllsch extern EFI_GUID EfiPartTypeSystemPartitionGuid;
75 1.1 jakllsch extern EFI_GUID EfiPartTypeLegacyMbrGuid;
76 1.1 jakllsch
77 1.1 jakllsch extern EFI_GUID MpsTableGuid;
78 1.1 jakllsch extern EFI_GUID AcpiTableGuid;
79 1.1 jakllsch extern EFI_GUID SMBIOSTableGuid;
80 1.1 jakllsch extern EFI_GUID SalSystemTableGuid;
81 1.1 jakllsch
82 1.1 jakllsch //
83 1.1 jakllsch // EFI Variable strings
84 1.1 jakllsch //
85 1.1 jakllsch #define LOAD_OPTION_ACTIVE 0x00000001
86 1.1 jakllsch
87 1.1 jakllsch #define VarLanguageCodes L"LangCodes"
88 1.1 jakllsch #define VarLanguage L"Lang"
89 1.1 jakllsch #define VarTimeout L"Timeout"
90 1.1 jakllsch #define VarConsoleInp L"ConIn"
91 1.1 jakllsch #define VarConsoleOut L"ConOut"
92 1.1 jakllsch #define VarErrorOut L"ErrOut"
93 1.1 jakllsch #define VarBootOption L"Boot%04x"
94 1.1 jakllsch #define VarBootOrder L"BootOrder"
95 1.1 jakllsch #define VarBootNext L"BootNext"
96 1.1 jakllsch #define VarBootCurrent L"BootCurrent"
97 1.1 jakllsch #define VarDriverOption L"Driver%04x"
98 1.1 jakllsch #define VarDriverOrder L"DriverOrder"
99 1.1 jakllsch #define VarConsoleInpDev L"ConInDev"
100 1.1 jakllsch #define VarConsoleOutDev L"ConOutDev"
101 1.1 jakllsch #define VarErrorOutDev L"ErrOutDev"
102 1.1 jakllsch
103 1.1 jakllsch #define LanguageCodeEnglish "eng"
104 1.1 jakllsch
105 1.1 jakllsch extern EFI_DEVICE_PATH RootDevicePath[];
106 1.1 jakllsch extern EFI_DEVICE_PATH EndDevicePath[];
107 1.1 jakllsch extern EFI_DEVICE_PATH EndInstanceDevicePath[];
108 1.1 jakllsch
109 1.1 jakllsch //
110 1.1 jakllsch // Other public data in the EFI library
111 1.1 jakllsch //
112 1.1 jakllsch
113 1.1 jakllsch extern EFI_MEMORY_TYPE PoolAllocationType;
114 1.1 jakllsch
115 1.1 jakllsch //
116 1.1 jakllsch // STATIC - Name is internal to the module
117 1.1 jakllsch // INTERNAL - Name is internal to the component (i.e., directory)
118 1.1 jakllsch // BOOTSERVCE - Name of a boot service function
119 1.1 jakllsch //
120 1.1 jakllsch
121 1.1 jakllsch #define STATIC
122 1.1 jakllsch #define INTERNAL
123 1.1 jakllsch #define BOOTSERVICE
124 1.1 jakllsch
125 1.1 jakllsch //
126 1.1 jakllsch // Prototypes
127 1.1 jakllsch //
128 1.1 jakllsch
129 1.1 jakllsch VOID
130 1.1 jakllsch InitializeLib (
131 1.1 jakllsch IN EFI_HANDLE ImageHandle,
132 1.1 jakllsch IN EFI_SYSTEM_TABLE *SystemTable
133 1.1 jakllsch );
134 1.1 jakllsch
135 1.1 jakllsch VOID
136 1.1 jakllsch InitializeUnicodeSupport (
137 1.1 jakllsch CHAR8 *LangCode
138 1.1 jakllsch );
139 1.1 jakllsch
140 1.1 jakllsch VOID
141 1.1 jakllsch EFIDebugVariable (
142 1.1 jakllsch VOID
143 1.1 jakllsch );
144 1.1 jakllsch
145 1.1 jakllsch VOID
146 1.1 jakllsch SetCrc (
147 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr
148 1.1 jakllsch );
149 1.1 jakllsch
150 1.1 jakllsch VOID
151 1.1 jakllsch SetCrcAltSize (
152 1.1 jakllsch IN UINTN Size,
153 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr
154 1.1 jakllsch );
155 1.1 jakllsch
156 1.1 jakllsch BOOLEAN
157 1.1 jakllsch CheckCrc (
158 1.1 jakllsch IN UINTN MaxSize,
159 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr
160 1.1 jakllsch );
161 1.1 jakllsch
162 1.1 jakllsch BOOLEAN
163 1.1 jakllsch CheckCrcAltSize (
164 1.1 jakllsch IN UINTN MaxSize,
165 1.1 jakllsch IN UINTN Size,
166 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr
167 1.1 jakllsch );
168 1.1 jakllsch
169 1.1 jakllsch UINT32
170 1.1 jakllsch CalculateCrc (
171 1.1 jakllsch UINT8 *pt,
172 1.1 jakllsch UINTN Size
173 1.1 jakllsch );
174 1.1 jakllsch
175 1.1 jakllsch VOID
176 1.1 jakllsch ZeroMem (
177 1.1 jakllsch IN VOID *Buffer,
178 1.1 jakllsch IN UINTN Size
179 1.1 jakllsch );
180 1.1 jakllsch
181 1.1 jakllsch VOID
182 1.1 jakllsch SetMem (
183 1.1 jakllsch IN VOID *Buffer,
184 1.1 jakllsch IN UINTN Size,
185 1.1 jakllsch IN UINT8 Value
186 1.1 jakllsch );
187 1.1 jakllsch
188 1.1 jakllsch VOID
189 1.1 jakllsch CopyMem (
190 1.1 jakllsch IN VOID *Dest,
191 1.1 jakllsch IN VOID *Src,
192 1.1 jakllsch IN UINTN len
193 1.1 jakllsch );
194 1.1 jakllsch
195 1.1 jakllsch INTN
196 1.1 jakllsch CompareMem (
197 1.1 jakllsch IN VOID *Dest,
198 1.1 jakllsch IN VOID *Src,
199 1.1 jakllsch IN UINTN len
200 1.1 jakllsch );
201 1.1 jakllsch
202 1.1 jakllsch INTN
203 1.1 jakllsch StrCmp (
204 1.1 jakllsch IN CHAR16 *s1,
205 1.1 jakllsch IN CHAR16 *s2
206 1.1 jakllsch );
207 1.1 jakllsch
208 1.1 jakllsch INTN
209 1.1 jakllsch StrnCmp (
210 1.1 jakllsch IN CHAR16 *s1,
211 1.1 jakllsch IN CHAR16 *s2,
212 1.1 jakllsch IN UINTN len
213 1.1 jakllsch );
214 1.1 jakllsch
215 1.1 jakllsch INTN
216 1.1 jakllsch StriCmp (
217 1.1 jakllsch IN CHAR16 *s1,
218 1.1 jakllsch IN CHAR16 *s2
219 1.1 jakllsch );
220 1.1 jakllsch
221 1.1 jakllsch VOID
222 1.1 jakllsch StrLwr (
223 1.1 jakllsch IN CHAR16 *Str
224 1.1 jakllsch );
225 1.1 jakllsch
226 1.1 jakllsch VOID
227 1.1 jakllsch StrUpr (
228 1.1 jakllsch IN CHAR16 *Str
229 1.1 jakllsch );
230 1.1 jakllsch
231 1.1 jakllsch VOID
232 1.1 jakllsch StrCpy (
233 1.1 jakllsch IN CHAR16 *Dest,
234 1.1 jakllsch IN CHAR16 *Src
235 1.1 jakllsch );
236 1.1 jakllsch
237 1.1 jakllsch VOID
238 1.1 jakllsch StrCat (
239 1.1 jakllsch IN CHAR16 *Dest,
240 1.1 jakllsch IN CHAR16 *Src
241 1.1 jakllsch );
242 1.1 jakllsch
243 1.1 jakllsch UINTN
244 1.1 jakllsch StrLen (
245 1.1 jakllsch IN CHAR16 *s1
246 1.1 jakllsch );
247 1.1 jakllsch
248 1.1 jakllsch UINTN
249 1.1 jakllsch StrSize (
250 1.1 jakllsch IN CHAR16 *s1
251 1.1 jakllsch );
252 1.1 jakllsch
253 1.1 jakllsch CHAR16 *
254 1.1 jakllsch StrDuplicate (
255 1.1 jakllsch IN CHAR16 *Src
256 1.1 jakllsch );
257 1.1 jakllsch
258 1.1 jakllsch UINTN
259 1.1 jakllsch strlena (
260 1.1 jakllsch IN CHAR8 *s1
261 1.1 jakllsch );
262 1.1 jakllsch
263 1.1 jakllsch UINTN
264 1.1 jakllsch strcmpa (
265 1.1 jakllsch IN CHAR8 *s1,
266 1.1 jakllsch IN CHAR8 *s2
267 1.1 jakllsch );
268 1.1 jakllsch
269 1.1 jakllsch UINTN
270 1.1 jakllsch strncmpa (
271 1.1 jakllsch IN CHAR8 *s1,
272 1.1 jakllsch IN CHAR8 *s2,
273 1.1 jakllsch IN UINTN len
274 1.1 jakllsch );
275 1.1 jakllsch
276 1.1 jakllsch UINTN
277 1.1 jakllsch xtoi (
278 1.1 jakllsch CHAR16 *str
279 1.1 jakllsch );
280 1.1 jakllsch
281 1.1 jakllsch UINTN
282 1.1 jakllsch Atoi (
283 1.1 jakllsch CHAR16 *str
284 1.1 jakllsch );
285 1.1 jakllsch
286 1.1 jakllsch BOOLEAN
287 1.1 jakllsch MetaMatch (
288 1.1 jakllsch IN CHAR16 *String,
289 1.1 jakllsch IN CHAR16 *Pattern
290 1.1 jakllsch );
291 1.1 jakllsch
292 1.1 jakllsch BOOLEAN
293 1.1 jakllsch MetaiMatch (
294 1.1 jakllsch IN CHAR16 *String,
295 1.1 jakllsch IN CHAR16 *Pattern
296 1.1 jakllsch );
297 1.1 jakllsch
298 1.1 jakllsch UINT64
299 1.1 jakllsch LShiftU64 (
300 1.1 jakllsch IN UINT64 Operand,
301 1.1 jakllsch IN UINTN Count
302 1.1 jakllsch );
303 1.1 jakllsch
304 1.1 jakllsch UINT64
305 1.1 jakllsch RShiftU64 (
306 1.1 jakllsch IN UINT64 Operand,
307 1.1 jakllsch IN UINTN Count
308 1.1 jakllsch );
309 1.1 jakllsch
310 1.1 jakllsch UINT64
311 1.1 jakllsch MultU64x32 (
312 1.1 jakllsch IN UINT64 Multiplicand,
313 1.1 jakllsch IN UINTN Multiplier
314 1.1 jakllsch );
315 1.1 jakllsch
316 1.1 jakllsch UINT64
317 1.1 jakllsch DivU64x32 (
318 1.1 jakllsch IN UINT64 Dividend,
319 1.1 jakllsch IN UINTN Divisor,
320 1.1 jakllsch OUT UINTN *Remainder OPTIONAL
321 1.1 jakllsch );
322 1.1 jakllsch
323 1.1 jakllsch VOID
324 1.1 jakllsch InitializeLock (
325 1.1 jakllsch IN OUT FLOCK *Lock,
326 1.1 jakllsch IN EFI_TPL Priority
327 1.1 jakllsch );
328 1.1 jakllsch
329 1.1 jakllsch VOID
330 1.1 jakllsch AcquireLock (
331 1.1 jakllsch IN FLOCK *Lock
332 1.1 jakllsch );
333 1.1 jakllsch
334 1.1 jakllsch VOID
335 1.1 jakllsch ReleaseLock (
336 1.1 jakllsch IN FLOCK *Lock
337 1.1 jakllsch );
338 1.1 jakllsch
339 1.1 jakllsch
340 1.1 jakllsch INTN
341 1.1 jakllsch CompareGuid(
342 1.1 jakllsch IN EFI_GUID *Guid1,
343 1.1 jakllsch IN EFI_GUID *Guid2
344 1.1 jakllsch );
345 1.1 jakllsch
346 1.1 jakllsch VOID *
347 1.1 jakllsch AllocatePool (
348 1.1 jakllsch IN UINTN Size
349 1.1 jakllsch );
350 1.1 jakllsch
351 1.1 jakllsch VOID *
352 1.1 jakllsch AllocateZeroPool (
353 1.1 jakllsch IN UINTN Size
354 1.1 jakllsch );
355 1.1 jakllsch
356 1.1 jakllsch VOID *
357 1.1 jakllsch ReallocatePool (
358 1.1 jakllsch IN VOID *OldPool,
359 1.1 jakllsch IN UINTN OldSize,
360 1.1 jakllsch IN UINTN NewSize
361 1.1 jakllsch );
362 1.1 jakllsch
363 1.1 jakllsch VOID
364 1.1 jakllsch FreePool (
365 1.1 jakllsch IN VOID *p
366 1.1 jakllsch );
367 1.1 jakllsch
368 1.1 jakllsch
369 1.1 jakllsch VOID
370 1.1 jakllsch Output (
371 1.1 jakllsch IN CHAR16 *Str
372 1.1 jakllsch );
373 1.1 jakllsch
374 1.1 jakllsch VOID
375 1.1 jakllsch Input (
376 1.1 jakllsch IN CHAR16 *Prompt OPTIONAL,
377 1.1 jakllsch OUT CHAR16 *InStr,
378 1.1 jakllsch IN UINTN StrLen
379 1.1 jakllsch );
380 1.1 jakllsch
381 1.1 jakllsch VOID
382 1.1 jakllsch IInput (
383 1.1 jakllsch IN SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut,
384 1.1 jakllsch IN SIMPLE_INPUT_INTERFACE *ConIn,
385 1.1 jakllsch IN CHAR16 *Prompt OPTIONAL,
386 1.1 jakllsch OUT CHAR16 *InStr,
387 1.1 jakllsch IN UINTN StrLen
388 1.1 jakllsch );
389 1.1 jakllsch
390 1.1 jakllsch UINTN
391 1.1 jakllsch Print (
392 1.1 jakllsch IN CHAR16 *fmt,
393 1.1 jakllsch ...
394 1.1 jakllsch );
395 1.1 jakllsch
396 1.1 jakllsch UINTN
397 1.1 jakllsch SPrint (
398 1.1 jakllsch OUT CHAR16 *Str,
399 1.1 jakllsch IN UINTN StrSize,
400 1.1 jakllsch IN CHAR16 *fmt,
401 1.1 jakllsch ...
402 1.1 jakllsch );
403 1.1 jakllsch
404 1.1 jakllsch CHAR16 *
405 1.1 jakllsch PoolPrint (
406 1.1 jakllsch IN CHAR16 *fmt,
407 1.1 jakllsch ...
408 1.1 jakllsch );
409 1.1 jakllsch
410 1.1 jakllsch typedef struct {
411 1.1 jakllsch CHAR16 *str;
412 1.1 jakllsch UINTN len;
413 1.1 jakllsch UINTN maxlen;
414 1.1 jakllsch } POOL_PRINT;
415 1.1 jakllsch
416 1.1 jakllsch CHAR16 *
417 1.1 jakllsch CatPrint (
418 1.1 jakllsch IN OUT POOL_PRINT *Str,
419 1.1 jakllsch IN CHAR16 *fmt,
420 1.1 jakllsch ...
421 1.1 jakllsch );
422 1.1 jakllsch
423 1.1 jakllsch UINTN
424 1.1 jakllsch PrintAt (
425 1.1 jakllsch IN UINTN Column,
426 1.1 jakllsch IN UINTN Row,
427 1.1 jakllsch IN CHAR16 *fmt,
428 1.1 jakllsch ...
429 1.1 jakllsch );
430 1.1 jakllsch
431 1.1 jakllsch UINTN
432 1.1 jakllsch IPrint (
433 1.1 jakllsch IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out,
434 1.1 jakllsch IN CHAR16 *fmt,
435 1.1 jakllsch ...
436 1.1 jakllsch );
437 1.1 jakllsch
438 1.1 jakllsch UINTN
439 1.1 jakllsch IPrintAt (
440 1.1 jakllsch IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out,
441 1.1 jakllsch IN UINTN Column,
442 1.1 jakllsch IN UINTN Row,
443 1.1 jakllsch IN CHAR16 *fmt,
444 1.1 jakllsch ...
445 1.1 jakllsch );
446 1.1 jakllsch
447 1.1 jakllsch UINTN
448 1.1 jakllsch APrint (
449 1.1 jakllsch IN CHAR8 *fmt,
450 1.1 jakllsch ...
451 1.1 jakllsch );
452 1.1 jakllsch
453 1.1 jakllsch VOID
454 1.1 jakllsch ValueToHex (
455 1.1 jakllsch IN CHAR16 *Buffer,
456 1.1 jakllsch IN UINT64 v
457 1.1 jakllsch );
458 1.1 jakllsch
459 1.1 jakllsch VOID
460 1.1 jakllsch ValueToString (
461 1.1 jakllsch IN CHAR16 *Buffer,
462 1.1 jakllsch IN BOOLEAN Comma,
463 1.1 jakllsch IN INT64 v
464 1.1 jakllsch );
465 1.1 jakllsch
466 1.1 jakllsch VOID
467 1.1 jakllsch TimeToString (
468 1.1 jakllsch OUT CHAR16 *Buffer,
469 1.1 jakllsch IN EFI_TIME *Time
470 1.1 jakllsch );
471 1.1 jakllsch
472 1.1 jakllsch VOID
473 1.1 jakllsch GuidToString (
474 1.1 jakllsch OUT CHAR16 *Buffer,
475 1.1 jakllsch IN EFI_GUID *Guid
476 1.1 jakllsch );
477 1.1 jakllsch
478 1.1 jakllsch VOID
479 1.1 jakllsch StatusToString (
480 1.1 jakllsch OUT CHAR16 *Buffer,
481 1.1 jakllsch EFI_STATUS Status
482 1.1 jakllsch );
483 1.1 jakllsch
484 1.1 jakllsch VOID
485 1.1 jakllsch DumpHex (
486 1.1 jakllsch IN UINTN Indent,
487 1.1 jakllsch IN UINTN Offset,
488 1.1 jakllsch IN UINTN DataSize,
489 1.1 jakllsch IN VOID *UserData
490 1.1 jakllsch );
491 1.1 jakllsch
492 1.1 jakllsch BOOLEAN
493 1.1 jakllsch GrowBuffer(
494 1.1 jakllsch IN OUT EFI_STATUS *Status,
495 1.1 jakllsch IN OUT VOID **Buffer,
496 1.1 jakllsch IN UINTN BufferSize
497 1.1 jakllsch );
498 1.1 jakllsch
499 1.1 jakllsch EFI_MEMORY_DESCRIPTOR *
500 1.1 jakllsch LibMemoryMap (
501 1.1 jakllsch OUT UINTN *NoEntries,
502 1.1 jakllsch OUT UINTN *MapKey,
503 1.1 jakllsch OUT UINTN *DescriptorSize,
504 1.1 jakllsch OUT UINT32 *DescriptorVersion
505 1.1 jakllsch );
506 1.1 jakllsch
507 1.1 jakllsch VOID *
508 1.1 jakllsch LibGetVariable (
509 1.1 jakllsch IN CHAR16 *Name,
510 1.1 jakllsch IN EFI_GUID *VendorGuid
511 1.1 jakllsch );
512 1.1 jakllsch
513 1.1 jakllsch VOID *
514 1.1 jakllsch LibGetVariableAndSize (
515 1.1 jakllsch IN CHAR16 *Name,
516 1.1 jakllsch IN EFI_GUID *VendorGuid,
517 1.1 jakllsch OUT UINTN *VarSize
518 1.1 jakllsch );
519 1.1 jakllsch
520 1.1 jakllsch EFI_STATUS
521 1.1 jakllsch LibDeleteVariable (
522 1.1 jakllsch IN CHAR16 *VarName,
523 1.1 jakllsch IN EFI_GUID *VarGuid
524 1.1 jakllsch );
525 1.1 jakllsch
526 1.1 jakllsch EFI_STATUS
527 1.1 jakllsch LibInsertToTailOfBootOrder (
528 1.1 jakllsch IN UINT16 BootOption,
529 1.1 jakllsch IN BOOLEAN OnlyInsertIfEmpty
530 1.1 jakllsch );
531 1.1 jakllsch
532 1.1 jakllsch EFI_STATUS
533 1.1 jakllsch LibLocateProtocol (
534 1.1 jakllsch IN EFI_GUID *ProtocolGuid,
535 1.1 jakllsch OUT VOID **Interface
536 1.1 jakllsch );
537 1.1 jakllsch
538 1.1 jakllsch EFI_STATUS
539 1.1 jakllsch LibLocateHandle (
540 1.1 jakllsch IN EFI_LOCATE_SEARCH_TYPE SearchType,
541 1.1 jakllsch IN EFI_GUID *Protocol OPTIONAL,
542 1.1 jakllsch IN VOID *SearchKey OPTIONAL,
543 1.1 jakllsch IN OUT UINTN *NoHandles,
544 1.1 jakllsch OUT EFI_HANDLE **Buffer
545 1.1 jakllsch );
546 1.1 jakllsch
547 1.1 jakllsch EFI_STATUS
548 1.1 jakllsch LibLocateHandleByDiskSignature (
549 1.1 jakllsch IN UINT8 MBRType,
550 1.1 jakllsch IN UINT8 SignatureType,
551 1.1 jakllsch IN VOID *Signature,
552 1.1 jakllsch IN OUT UINTN *NoHandles,
553 1.1 jakllsch OUT EFI_HANDLE **Buffer
554 1.1 jakllsch );
555 1.1 jakllsch
556 1.1 jakllsch EFI_STATUS
557 1.1 jakllsch LibInstallProtocolInterfaces (
558 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
559 1.1 jakllsch ...
560 1.1 jakllsch );
561 1.1 jakllsch
562 1.1 jakllsch VOID
563 1.1 jakllsch LibUninstallProtocolInterfaces (
564 1.1 jakllsch IN EFI_HANDLE Handle,
565 1.1 jakllsch ...
566 1.1 jakllsch );
567 1.1 jakllsch
568 1.1 jakllsch EFI_STATUS
569 1.1 jakllsch LibReinstallProtocolInterfaces (
570 1.1 jakllsch IN OUT EFI_HANDLE *Handle,
571 1.1 jakllsch ...
572 1.1 jakllsch );
573 1.1 jakllsch
574 1.1 jakllsch EFI_EVENT
575 1.1 jakllsch LibCreateProtocolNotifyEvent (
576 1.1 jakllsch IN EFI_GUID *ProtocolGuid,
577 1.1 jakllsch IN EFI_TPL NotifyTpl,
578 1.1 jakllsch IN EFI_EVENT_NOTIFY NotifyFunction,
579 1.1 jakllsch IN VOID *NotifyContext,
580 1.1 jakllsch OUT VOID *Registration
581 1.1 jakllsch );
582 1.1 jakllsch
583 1.1 jakllsch EFI_STATUS
584 1.1 jakllsch WaitForSingleEvent (
585 1.1 jakllsch IN EFI_EVENT Event,
586 1.1 jakllsch IN UINT64 Timeout OPTIONAL
587 1.1 jakllsch );
588 1.1 jakllsch
589 1.1 jakllsch VOID
590 1.1 jakllsch WaitForEventWithTimeout (
591 1.1 jakllsch IN EFI_EVENT Event,
592 1.1 jakllsch IN UINTN Timeout,
593 1.1 jakllsch IN UINTN Row,
594 1.1 jakllsch IN UINTN Column,
595 1.1 jakllsch IN CHAR16 *String,
596 1.1 jakllsch IN EFI_INPUT_KEY TimeoutKey,
597 1.1 jakllsch OUT EFI_INPUT_KEY *Key
598 1.1 jakllsch );
599 1.1 jakllsch
600 1.1 jakllsch EFI_FILE_HANDLE
601 1.1 jakllsch LibOpenRoot (
602 1.1 jakllsch IN EFI_HANDLE DeviceHandle
603 1.1 jakllsch );
604 1.1 jakllsch
605 1.1 jakllsch EFI_FILE_INFO *
606 1.1 jakllsch LibFileInfo (
607 1.1 jakllsch IN EFI_FILE_HANDLE FHand
608 1.1 jakllsch );
609 1.1 jakllsch
610 1.1 jakllsch EFI_FILE_SYSTEM_INFO *
611 1.1 jakllsch LibFileSystemInfo (
612 1.1 jakllsch IN EFI_FILE_HANDLE FHand
613 1.1 jakllsch );
614 1.1 jakllsch
615 1.1 jakllsch EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *
616 1.1 jakllsch LibFileSystemVolumeLabelInfo (
617 1.1 jakllsch IN EFI_FILE_HANDLE FHand
618 1.1 jakllsch );
619 1.1 jakllsch
620 1.1 jakllsch BOOLEAN
621 1.1 jakllsch ValidMBR(
622 1.1 jakllsch IN MASTER_BOOT_RECORD *Mbr,
623 1.1 jakllsch IN EFI_BLOCK_IO *BlkIo
624 1.1 jakllsch );
625 1.1 jakllsch
626 1.1 jakllsch BOOLEAN
627 1.1 jakllsch LibMatchDevicePaths (
628 1.1 jakllsch IN EFI_DEVICE_PATH *Multi,
629 1.1 jakllsch IN EFI_DEVICE_PATH *Single
630 1.1 jakllsch );
631 1.1 jakllsch
632 1.1 jakllsch EFI_DEVICE_PATH *
633 1.1 jakllsch LibDuplicateDevicePathInstance (
634 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
635 1.1 jakllsch );
636 1.1 jakllsch
637 1.1 jakllsch EFI_DEVICE_PATH *
638 1.1 jakllsch DevicePathFromHandle (
639 1.1 jakllsch IN EFI_HANDLE Handle
640 1.1 jakllsch );
641 1.1 jakllsch
642 1.1 jakllsch EFI_DEVICE_PATH *
643 1.1 jakllsch DevicePathInstance (
644 1.1 jakllsch IN OUT EFI_DEVICE_PATH **DevicePath,
645 1.1 jakllsch OUT UINTN *Size
646 1.1 jakllsch );
647 1.1 jakllsch
648 1.1 jakllsch UINTN
649 1.1 jakllsch DevicePathInstanceCount (
650 1.1 jakllsch IN EFI_DEVICE_PATH *DevicePath
651 1.1 jakllsch );
652 1.1 jakllsch
653 1.1 jakllsch EFI_DEVICE_PATH *
654 1.1 jakllsch AppendDevicePath (
655 1.1 jakllsch IN EFI_DEVICE_PATH *Src1,
656 1.1 jakllsch IN EFI_DEVICE_PATH *Src2
657 1.1 jakllsch );
658 1.1 jakllsch
659 1.1 jakllsch EFI_DEVICE_PATH *
660 1.1 jakllsch AppendDevicePathNode (
661 1.1 jakllsch IN EFI_DEVICE_PATH *Src1,
662 1.1 jakllsch IN EFI_DEVICE_PATH *Src2
663 1.1 jakllsch );
664 1.1 jakllsch
665 1.1 jakllsch EFI_DEVICE_PATH*
666 1.1 jakllsch AppendDevicePathInstance (
667 1.1 jakllsch IN EFI_DEVICE_PATH *Src,
668 1.1 jakllsch IN EFI_DEVICE_PATH *Instance
669 1.1 jakllsch );
670 1.1 jakllsch
671 1.1 jakllsch EFI_DEVICE_PATH *
672 1.1 jakllsch FileDevicePath (
673 1.1 jakllsch IN EFI_HANDLE Device OPTIONAL,
674 1.1 jakllsch IN CHAR16 *FileName
675 1.1 jakllsch );
676 1.1 jakllsch
677 1.1 jakllsch UINTN
678 1.1 jakllsch DevicePathSize (
679 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
680 1.1 jakllsch );
681 1.1 jakllsch
682 1.1 jakllsch EFI_DEVICE_PATH *
683 1.1 jakllsch DuplicateDevicePath (
684 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
685 1.1 jakllsch );
686 1.1 jakllsch
687 1.1 jakllsch EFI_DEVICE_PATH *
688 1.1 jakllsch UnpackDevicePath (
689 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath
690 1.1 jakllsch );
691 1.1 jakllsch
692 1.1 jakllsch EFI_STATUS
693 1.1 jakllsch LibDevicePathToInterface (
694 1.1 jakllsch IN EFI_GUID *Protocol,
695 1.1 jakllsch IN EFI_DEVICE_PATH *FilePath,
696 1.1 jakllsch OUT VOID **Interface
697 1.1 jakllsch );
698 1.1 jakllsch
699 1.1 jakllsch CHAR16 *
700 1.1 jakllsch DevicePathToStr (
701 1.1 jakllsch EFI_DEVICE_PATH *DevPath
702 1.1 jakllsch );
703 1.1 jakllsch
704 1.1 jakllsch //
705 1.1 jakllsch // BugBug: I need my own include files
706 1.1 jakllsch //
707 1.1 jakllsch typedef struct {
708 1.1 jakllsch UINT8 Register;
709 1.1 jakllsch UINT8 Function;
710 1.1 jakllsch UINT8 Device;
711 1.1 jakllsch UINT8 Bus;
712 1.1 jakllsch UINT32 Reserved;
713 1.1 jakllsch } EFI_ADDRESS;
714 1.1 jakllsch
715 1.1 jakllsch typedef union {
716 1.1 jakllsch UINT64 Address;
717 1.1 jakllsch EFI_ADDRESS EfiAddress;
718 1.1 jakllsch } EFI_PCI_ADDRESS_UNION;
719 1.1 jakllsch
720 1.1 jakllsch
721 1.1 jakllsch EFI_STATUS
722 1.1 jakllsch PciFindDeviceClass (
723 1.1 jakllsch IN OUT EFI_PCI_ADDRESS_UNION *Address,
724 1.1 jakllsch IN UINT8 BaseClass,
725 1.1 jakllsch IN UINT8 SubClass
726 1.1 jakllsch );
727 1.1 jakllsch
728 1.1 jakllsch EFI_STATUS
729 1.1 jakllsch PciFindDevice (
730 1.1 jakllsch IN OUT EFI_PCI_ADDRESS_UNION *DeviceAddress,
731 1.1 jakllsch IN UINT16 VendorId,
732 1.1 jakllsch IN UINT16 DeviceId,
733 1.1 jakllsch IN OUT PCI_TYPE00 *Pci
734 1.1 jakllsch );
735 1.1 jakllsch
736 1.1 jakllsch //
737 1.1 jakllsch // SIMPLE_READ_FILE object used to access files
738 1.1 jakllsch //
739 1.1 jakllsch
740 1.1 jakllsch typedef VOID *SIMPLE_READ_FILE;
741 1.1 jakllsch
742 1.1 jakllsch EFI_STATUS
743 1.1 jakllsch OpenSimpleReadFile (
744 1.1 jakllsch IN BOOLEAN BootPolicy,
745 1.1 jakllsch IN VOID *SourceBuffer OPTIONAL,
746 1.1 jakllsch IN UINTN SourceSize,
747 1.1 jakllsch IN OUT EFI_DEVICE_PATH **FilePath,
748 1.1 jakllsch OUT EFI_HANDLE *DeviceHandle,
749 1.1 jakllsch OUT SIMPLE_READ_FILE *SimpleReadHandle
750 1.1 jakllsch );
751 1.1 jakllsch
752 1.1 jakllsch EFI_STATUS
753 1.1 jakllsch ReadSimpleReadFile (
754 1.1 jakllsch IN SIMPLE_READ_FILE SimpleReadHandle,
755 1.1 jakllsch IN UINTN Offset,
756 1.1 jakllsch IN OUT UINTN *ReadSize,
757 1.1 jakllsch OUT VOID *Buffer
758 1.1 jakllsch );
759 1.1 jakllsch
760 1.1 jakllsch
761 1.1 jakllsch VOID
762 1.1 jakllsch CloseSimpleReadFile (
763 1.1 jakllsch IN SIMPLE_READ_FILE SimpleReadHandle
764 1.1 jakllsch );
765 1.1 jakllsch
766 1.1 jakllsch VOID
767 1.1 jakllsch InitializeGuid (
768 1.1 jakllsch VOID
769 1.1 jakllsch );
770 1.1 jakllsch
771 1.1 jakllsch UINT8
772 1.1 jakllsch DecimaltoBCD(
773 1.1 jakllsch IN UINT8 DecValue
774 1.1 jakllsch );
775 1.1 jakllsch
776 1.1 jakllsch UINT8
777 1.1 jakllsch BCDtoDecimal(
778 1.1 jakllsch IN UINT8 BcdValue
779 1.1 jakllsch );
780 1.1 jakllsch
781 1.1 jakllsch EFI_STATUS
782 1.1 jakllsch LibGetSystemConfigurationTable(
783 1.1 jakllsch IN EFI_GUID *TableGuid,
784 1.1 jakllsch IN OUT VOID **Table
785 1.1 jakllsch );
786 1.1 jakllsch
787 1.1 jakllsch BOOLEAN
788 1.1 jakllsch LibIsValidTextGraphics (
789 1.1 jakllsch IN CHAR16 Graphic,
790 1.1 jakllsch OUT CHAR8 *PcAnsi, OPTIONAL
791 1.1 jakllsch OUT CHAR8 *Ascii OPTIONAL
792 1.1 jakllsch );
793 1.1 jakllsch
794 1.1 jakllsch BOOLEAN
795 1.1 jakllsch IsValidAscii (
796 1.1 jakllsch IN CHAR16 Ascii
797 1.1 jakllsch );
798 1.1 jakllsch
799 1.1 jakllsch BOOLEAN
800 1.1 jakllsch IsValidEfiCntlChar (
801 1.1 jakllsch IN CHAR16 c
802 1.1 jakllsch );
803 1.1 jakllsch
804 1.1 jakllsch CHAR16 *
805 1.1 jakllsch LibGetUiString (
806 1.1 jakllsch IN EFI_HANDLE Handle,
807 1.1 jakllsch IN UI_STRING_TYPE StringType,
808 1.1 jakllsch IN ISO_639_2 *LangCode,
809 1.1 jakllsch IN BOOLEAN ReturnDevicePathStrOnMismatch
810 1.1 jakllsch );
811 1.1 jakllsch
812 1.1 jakllsch CHAR8*
813 1.1 jakllsch LibGetSmbiosString (
814 1.1 jakllsch IN SMBIOS_STRUCTURE_POINTER *Smbios,
815 1.1 jakllsch IN UINT16 StringNumber
816 1.1 jakllsch );
817 1.1 jakllsch
818 1.1 jakllsch EFI_STATUS
819 1.1 jakllsch LibGetSmbiosSystemGuidAndSerialNumber (
820 1.1 jakllsch IN EFI_GUID *SystemGuid,
821 1.1 jakllsch OUT CHAR8 **SystemSerialNumber
822 1.1 jakllsch );
823 1.1 jakllsch
824 1.1 jakllsch
825 1.1 jakllsch EFI_STATUS
826 1.1 jakllsch InitializeGlobalIoDevice (
827 1.1 jakllsch IN EFI_DEVICE_PATH *DevicePath,
828 1.1 jakllsch IN EFI_GUID *Protocol,
829 1.1 jakllsch IN CHAR8 *ErrorStr,
830 1.1 jakllsch OUT EFI_DEVICE_IO_INTERFACE **GlobalIoFncs
831 1.1 jakllsch );
832 1.1 jakllsch
833 1.1 jakllsch UINT32
834 1.1 jakllsch ReadPort (
835 1.1 jakllsch IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
836 1.1 jakllsch IN EFI_IO_WIDTH Width,
837 1.1 jakllsch IN UINTN Port
838 1.1 jakllsch );
839 1.1 jakllsch
840 1.1 jakllsch UINT32
841 1.1 jakllsch WritePort (
842 1.1 jakllsch IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
843 1.1 jakllsch IN EFI_IO_WIDTH Width,
844 1.1 jakllsch IN UINTN Port,
845 1.1 jakllsch IN UINTN Data
846 1.1 jakllsch );
847 1.1 jakllsch
848 1.1 jakllsch UINT32
849 1.1 jakllsch ReadPciConfig (
850 1.1 jakllsch IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
851 1.1 jakllsch IN EFI_IO_WIDTH Width,
852 1.1 jakllsch IN UINTN Port
853 1.1 jakllsch );
854 1.1 jakllsch
855 1.1 jakllsch UINT32
856 1.1 jakllsch WritePciConfig (
857 1.1 jakllsch IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
858 1.1 jakllsch IN EFI_IO_WIDTH Width,
859 1.1 jakllsch IN UINTN Port,
860 1.1 jakllsch IN UINTN Data
861 1.1 jakllsch );
862 1.1 jakllsch
863 1.1 jakllsch extern EFI_DEVICE_IO_INTERFACE *GlobalIoFncs;
864 1.1 jakllsch
865 1.1 jakllsch #define outp(_Port, _DataByte) (UINT8)WritePort(GlobalIoFncs, IO_UINT8, (UINTN)_Port, (UINTN)_DataByte)
866 1.1 jakllsch #define inp(_Port) (UINT8)ReadPort(GlobalIoFncs, IO_UINT8, (UINTN)_Port)
867 1.1 jakllsch #define outpw(_Port, _DataByte) (UINT16)WritePort(GlobalIoFncs, IO_UINT16, (UINTN)_Port, (UINTN)_DataByte)
868 1.1 jakllsch #define inpw(_Port) (UINT16)ReadPort(GlobalIoFncs, IO_UINT16, (UINTN)_Port)
869 1.1 jakllsch #define outpd(_Port, _DataByte) (UINT32)WritePort(GlobalIoFncs, IO_UINT32, (UINTN)_Port, (UINTN)_DataByte)
870 1.1 jakllsch #define inpd(_Port) (UINT32)ReadPort(GlobalIoFncs, IO_UINT32, (UINTN)_Port)
871 1.1 jakllsch
872 1.1 jakllsch #define writepci8(_Addr, _DataByte) (UINT8)WritePciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr, (UINTN)_DataByte)
873 1.1 jakllsch #define readpci8(_Addr) (UINT8)ReadPciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr)
874 1.1 jakllsch #define writepci16(_Addr, _DataByte) (UINT16)WritePciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr, (UINTN)_DataByte)
875 1.1 jakllsch #define readpci16(_Addr) (UINT16)ReadPciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr)
876 1.1 jakllsch #define writepci32(_Addr, _DataByte) (UINT32)WritePciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr, (UINTN)_DataByte)
877 1.1 jakllsch #define readpci32(_Addr) (UINT32)ReadPciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr)
878 1.1 jakllsch
879 1.1 jakllsch #define Pause() WaitForSingleEvent (ST->ConIn->WaitForKey, 0)
880 1.1 jakllsch #define Port80(_PostCode) GlobalIoFncs->Io.Write (GlobalIoFncs, IO_UINT16, (UINT64)0x80, 1, &(_PostCode))
881 1.1 jakllsch
882 1.1 jakllsch #endif
883