efilib.h 17 KB

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