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