efilib.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925
  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. INTN
  117. GetShellArgcArgv(
  118. EFI_HANDLE ImageHandle,
  119. CHAR16 **Argv[] /* Statically allocated */
  120. );
  121. VOID
  122. SetCrc (
  123. IN OUT EFI_TABLE_HEADER *Hdr
  124. );
  125. VOID
  126. SetCrcAltSize (
  127. IN UINTN Size,
  128. IN OUT EFI_TABLE_HEADER *Hdr
  129. );
  130. BOOLEAN
  131. CheckCrc (
  132. IN UINTN MaxSize,
  133. IN OUT EFI_TABLE_HEADER *Hdr
  134. );
  135. BOOLEAN
  136. CheckCrcAltSize (
  137. IN UINTN MaxSize,
  138. IN UINTN Size,
  139. IN OUT EFI_TABLE_HEADER *Hdr
  140. );
  141. UINT32
  142. CalculateCrc (
  143. UINT8 *pt,
  144. UINTN Size
  145. );
  146. VOID
  147. ZeroMem (
  148. IN VOID *Buffer,
  149. IN UINTN Size
  150. );
  151. VOID
  152. SetMem (
  153. IN VOID *Buffer,
  154. IN UINTN Size,
  155. IN UINT8 Value
  156. );
  157. VOID
  158. CopyMem (
  159. IN VOID *Dest,
  160. IN CONST VOID *Src,
  161. IN UINTN len
  162. );
  163. INTN
  164. CompareMem (
  165. IN CONST VOID *Dest,
  166. IN CONST VOID *Src,
  167. IN UINTN len
  168. );
  169. INTN
  170. StrCmp (
  171. IN CONST CHAR16 *s1,
  172. IN CONST CHAR16 *s2
  173. );
  174. INTN
  175. StrnCmp (
  176. IN CONST CHAR16 *s1,
  177. IN CONST CHAR16 *s2,
  178. IN UINTN len
  179. );
  180. INTN
  181. StriCmp (
  182. IN CONST CHAR16 *s1,
  183. IN CONST CHAR16 *s2
  184. );
  185. VOID
  186. StrLwr (
  187. IN CHAR16 *Str
  188. );
  189. VOID
  190. StrUpr (
  191. IN CHAR16 *Str
  192. );
  193. VOID
  194. StrCpy (
  195. IN CHAR16 *Dest,
  196. IN CONST CHAR16 *Src
  197. );
  198. VOID
  199. StrCat (
  200. IN CHAR16 *Dest,
  201. IN CONST CHAR16 *Src
  202. );
  203. UINTN
  204. StrLen (
  205. IN CONST CHAR16 *s1
  206. );
  207. UINTN
  208. StrSize (
  209. IN CONST CHAR16 *s1
  210. );
  211. CHAR16 *
  212. StrDuplicate (
  213. IN CONST CHAR16 *Src
  214. );
  215. UINTN
  216. strlena (
  217. IN CONST CHAR8 *s1
  218. );
  219. UINTN
  220. strcmpa (
  221. IN CONST CHAR8 *s1,
  222. IN CONST CHAR8 *s2
  223. );
  224. UINTN
  225. strncmpa (
  226. IN CONST CHAR8 *s1,
  227. IN CONST CHAR8 *s2,
  228. IN UINTN len
  229. );
  230. UINTN
  231. xtoi (
  232. CONST CHAR16 *str
  233. );
  234. UINTN
  235. Atoi (
  236. CONST CHAR16 *str
  237. );
  238. BOOLEAN
  239. MetaMatch (
  240. IN CHAR16 *String,
  241. IN CHAR16 *Pattern
  242. );
  243. BOOLEAN
  244. MetaiMatch (
  245. IN CHAR16 *String,
  246. IN CHAR16 *Pattern
  247. );
  248. UINT64
  249. LShiftU64 (
  250. IN UINT64 Operand,
  251. IN UINTN Count
  252. );
  253. UINT64
  254. RShiftU64 (
  255. IN UINT64 Operand,
  256. IN UINTN Count
  257. );
  258. UINT64
  259. MultU64x32 (
  260. IN UINT64 Multiplicand,
  261. IN UINTN Multiplier
  262. );
  263. UINT64
  264. DivU64x32 (
  265. IN UINT64 Dividend,
  266. IN UINTN Divisor,
  267. OUT UINTN *Remainder OPTIONAL
  268. );
  269. VOID
  270. InitializeLock (
  271. IN OUT FLOCK *Lock,
  272. IN EFI_TPL Priority
  273. );
  274. VOID
  275. AcquireLock (
  276. IN FLOCK *Lock
  277. );
  278. VOID
  279. ReleaseLock (
  280. IN FLOCK *Lock
  281. );
  282. INTN
  283. CompareGuid(
  284. IN EFI_GUID *Guid1,
  285. IN EFI_GUID *Guid2
  286. );
  287. VOID *
  288. AllocatePool (
  289. IN UINTN Size
  290. );
  291. VOID *
  292. AllocateZeroPool (
  293. IN UINTN Size
  294. );
  295. VOID *
  296. ReallocatePool (
  297. IN VOID *OldPool,
  298. IN UINTN OldSize,
  299. IN UINTN NewSize
  300. );
  301. VOID
  302. FreePool (
  303. IN VOID *p
  304. );
  305. VOID
  306. Output (
  307. IN CHAR16 *Str
  308. );
  309. VOID
  310. Input (
  311. IN CHAR16 *Prompt OPTIONAL,
  312. OUT CHAR16 *InStr,
  313. IN UINTN StrLen
  314. );
  315. VOID
  316. IInput (
  317. IN SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut,
  318. IN SIMPLE_INPUT_INTERFACE *ConIn,
  319. IN CHAR16 *Prompt OPTIONAL,
  320. OUT CHAR16 *InStr,
  321. IN UINTN StrLen
  322. );
  323. UINTN
  324. Print (
  325. IN CHAR16 *fmt,
  326. ...
  327. );
  328. UINTN
  329. VPrint (
  330. IN CHAR16 *fmt,
  331. va_list args
  332. );
  333. UINTN
  334. SPrint (
  335. OUT CHAR16 *Str,
  336. IN UINTN StrSize,
  337. IN CHAR16 *fmt,
  338. ...
  339. );
  340. UINTN
  341. VSPrint (
  342. OUT CHAR16 *Str,
  343. IN UINTN StrSize,
  344. IN CHAR16 *fmt,
  345. va_list args
  346. );
  347. CHAR16 *
  348. VPoolPrint (
  349. IN CHAR16 *fmt,
  350. va_list args
  351. );
  352. CHAR16 *
  353. PoolPrint (
  354. IN CHAR16 *fmt,
  355. ...
  356. );
  357. typedef struct {
  358. CHAR16 *str;
  359. UINTN len;
  360. UINTN maxlen;
  361. } POOL_PRINT;
  362. CHAR16 *
  363. CatPrint (
  364. IN OUT POOL_PRINT *Str,
  365. IN CHAR16 *fmt,
  366. ...
  367. );
  368. UINTN
  369. PrintAt (
  370. IN UINTN Column,
  371. IN UINTN Row,
  372. IN CHAR16 *fmt,
  373. ...
  374. );
  375. UINTN
  376. IPrint (
  377. IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out,
  378. IN CHAR16 *fmt,
  379. ...
  380. );
  381. UINTN
  382. IPrintAt (
  383. IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out,
  384. IN UINTN Column,
  385. IN UINTN Row,
  386. IN CHAR16 *fmt,
  387. ...
  388. );
  389. UINTN
  390. APrint (
  391. IN CHAR8 *fmt,
  392. ...
  393. );
  394. VOID
  395. ValueToHex (
  396. IN CHAR16 *Buffer,
  397. IN UINT64 v
  398. );
  399. VOID
  400. ValueToString (
  401. IN CHAR16 *Buffer,
  402. IN BOOLEAN Comma,
  403. IN INT64 v
  404. );
  405. VOID
  406. TimeToString (
  407. OUT CHAR16 *Buffer,
  408. IN EFI_TIME *Time
  409. );
  410. VOID
  411. GuidToString (
  412. OUT CHAR16 *Buffer,
  413. IN EFI_GUID *Guid
  414. );
  415. VOID
  416. StatusToString (
  417. OUT CHAR16 *Buffer,
  418. EFI_STATUS Status
  419. );
  420. VOID
  421. DumpHex (
  422. IN UINTN Indent,
  423. IN UINTN Offset,
  424. IN UINTN DataSize,
  425. IN VOID *UserData
  426. );
  427. BOOLEAN
  428. GrowBuffer(
  429. IN OUT EFI_STATUS *Status,
  430. IN OUT VOID **Buffer,
  431. IN UINTN BufferSize
  432. );
  433. EFI_MEMORY_DESCRIPTOR *
  434. LibMemoryMap (
  435. OUT UINTN *NoEntries,
  436. OUT UINTN *MapKey,
  437. OUT UINTN *DescriptorSize,
  438. OUT UINT32 *DescriptorVersion
  439. );
  440. VOID *
  441. LibGetVariable (
  442. IN CHAR16 *Name,
  443. IN EFI_GUID *VendorGuid
  444. );
  445. VOID *
  446. LibGetVariableAndSize (
  447. IN CHAR16 *Name,
  448. IN EFI_GUID *VendorGuid,
  449. OUT UINTN *VarSize
  450. );
  451. EFI_STATUS
  452. LibDeleteVariable (
  453. IN CHAR16 *VarName,
  454. IN EFI_GUID *VarGuid
  455. );
  456. EFI_STATUS
  457. LibSetNVVariable (
  458. IN CHAR16 *VarName,
  459. IN EFI_GUID *VarGuid,
  460. IN UINTN DataSize,
  461. IN VOID *Data
  462. );
  463. EFI_STATUS
  464. LibSetVariable (
  465. IN CHAR16 *VarName,
  466. IN EFI_GUID *VarGuid,
  467. IN UINTN DataSize,
  468. IN VOID *Data
  469. );
  470. EFI_STATUS
  471. LibInsertToTailOfBootOrder (
  472. IN UINT16 BootOption,
  473. IN BOOLEAN OnlyInsertIfEmpty
  474. );
  475. EFI_STATUS
  476. LibLocateProtocol (
  477. IN EFI_GUID *ProtocolGuid,
  478. OUT VOID **Interface
  479. );
  480. EFI_STATUS
  481. LibLocateHandle (
  482. IN EFI_LOCATE_SEARCH_TYPE SearchType,
  483. IN EFI_GUID *Protocol OPTIONAL,
  484. IN VOID *SearchKey OPTIONAL,
  485. IN OUT UINTN *NoHandles,
  486. OUT EFI_HANDLE **Buffer
  487. );
  488. EFI_STATUS
  489. LibLocateHandleByDiskSignature (
  490. IN UINT8 MBRType,
  491. IN UINT8 SignatureType,
  492. IN VOID *Signature,
  493. IN OUT UINTN *NoHandles,
  494. OUT EFI_HANDLE **Buffer
  495. );
  496. EFI_STATUS
  497. LibInstallProtocolInterfaces (
  498. IN OUT EFI_HANDLE *Handle,
  499. ...
  500. );
  501. VOID
  502. LibUninstallProtocolInterfaces (
  503. IN EFI_HANDLE Handle,
  504. ...
  505. );
  506. EFI_STATUS
  507. LibReinstallProtocolInterfaces (
  508. IN OUT EFI_HANDLE *Handle,
  509. ...
  510. );
  511. EFI_EVENT
  512. LibCreateProtocolNotifyEvent (
  513. IN EFI_GUID *ProtocolGuid,
  514. IN EFI_TPL NotifyTpl,
  515. IN EFI_EVENT_NOTIFY NotifyFunction,
  516. IN VOID *NotifyContext,
  517. OUT VOID *Registration
  518. );
  519. EFI_STATUS
  520. WaitForSingleEvent (
  521. IN EFI_EVENT Event,
  522. IN UINT64 Timeout OPTIONAL
  523. );
  524. VOID
  525. WaitForEventWithTimeout (
  526. IN EFI_EVENT Event,
  527. IN UINTN Timeout,
  528. IN UINTN Row,
  529. IN UINTN Column,
  530. IN CHAR16 *String,
  531. IN EFI_INPUT_KEY TimeoutKey,
  532. OUT EFI_INPUT_KEY *Key
  533. );
  534. EFI_FILE_HANDLE
  535. LibOpenRoot (
  536. IN EFI_HANDLE DeviceHandle
  537. );
  538. EFI_FILE_INFO *
  539. LibFileInfo (
  540. IN EFI_FILE_HANDLE FHand
  541. );
  542. EFI_FILE_SYSTEM_INFO *
  543. LibFileSystemInfo (
  544. IN EFI_FILE_HANDLE FHand
  545. );
  546. EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *
  547. LibFileSystemVolumeLabelInfo (
  548. IN EFI_FILE_HANDLE FHand
  549. );
  550. BOOLEAN
  551. ValidMBR(
  552. IN MASTER_BOOT_RECORD *Mbr,
  553. IN EFI_BLOCK_IO *BlkIo
  554. );
  555. BOOLEAN
  556. LibMatchDevicePaths (
  557. IN EFI_DEVICE_PATH *Multi,
  558. IN EFI_DEVICE_PATH *Single
  559. );
  560. EFI_DEVICE_PATH *
  561. LibDuplicateDevicePathInstance (
  562. IN EFI_DEVICE_PATH *DevPath
  563. );
  564. EFI_DEVICE_PATH *
  565. DevicePathFromHandle (
  566. IN EFI_HANDLE Handle
  567. );
  568. EFI_DEVICE_PATH *
  569. DevicePathInstance (
  570. IN OUT EFI_DEVICE_PATH **DevicePath,
  571. OUT UINTN *Size
  572. );
  573. UINTN
  574. DevicePathInstanceCount (
  575. IN EFI_DEVICE_PATH *DevicePath
  576. );
  577. EFI_DEVICE_PATH *
  578. AppendDevicePath (
  579. IN EFI_DEVICE_PATH *Src1,
  580. IN EFI_DEVICE_PATH *Src2
  581. );
  582. EFI_DEVICE_PATH *
  583. AppendDevicePathNode (
  584. IN EFI_DEVICE_PATH *Src1,
  585. IN EFI_DEVICE_PATH *Src2
  586. );
  587. EFI_DEVICE_PATH*
  588. AppendDevicePathInstance (
  589. IN EFI_DEVICE_PATH *Src,
  590. IN EFI_DEVICE_PATH *Instance
  591. );
  592. EFI_DEVICE_PATH *
  593. FileDevicePath (
  594. IN EFI_HANDLE Device OPTIONAL,
  595. IN CHAR16 *FileName
  596. );
  597. UINTN
  598. DevicePathSize (
  599. IN EFI_DEVICE_PATH *DevPath
  600. );
  601. EFI_DEVICE_PATH *
  602. DuplicateDevicePath (
  603. IN EFI_DEVICE_PATH *DevPath
  604. );
  605. EFI_DEVICE_PATH *
  606. UnpackDevicePath (
  607. IN EFI_DEVICE_PATH *DevPath
  608. );
  609. EFI_STATUS
  610. LibDevicePathToInterface (
  611. IN EFI_GUID *Protocol,
  612. IN EFI_DEVICE_PATH *FilePath,
  613. OUT VOID **Interface
  614. );
  615. CHAR16 *
  616. DevicePathToStr (
  617. EFI_DEVICE_PATH *DevPath
  618. );
  619. //
  620. // BugBug: I need my own include files
  621. //
  622. typedef struct {
  623. UINT8 Register;
  624. UINT8 Function;
  625. UINT8 Device;
  626. UINT8 Bus;
  627. UINT32 Reserved;
  628. } EFI_ADDRESS;
  629. typedef union {
  630. UINT64 Address;
  631. EFI_ADDRESS EfiAddress;
  632. } EFI_PCI_ADDRESS_UNION;
  633. EFI_STATUS
  634. PciFindDeviceClass (
  635. IN OUT EFI_PCI_ADDRESS_UNION *Address,
  636. IN UINT8 BaseClass,
  637. IN UINT8 SubClass
  638. );
  639. EFI_STATUS
  640. PciFindDevice (
  641. IN OUT EFI_PCI_ADDRESS_UNION *DeviceAddress,
  642. IN UINT16 VendorId,
  643. IN UINT16 DeviceId,
  644. IN OUT PCI_TYPE00 *Pci
  645. );
  646. //
  647. // SIMPLE_READ_FILE object used to access files
  648. //
  649. typedef VOID *SIMPLE_READ_FILE;
  650. EFI_STATUS
  651. OpenSimpleReadFile (
  652. IN BOOLEAN BootPolicy,
  653. IN VOID *SourceBuffer OPTIONAL,
  654. IN UINTN SourceSize,
  655. IN OUT EFI_DEVICE_PATH **FilePath,
  656. OUT EFI_HANDLE *DeviceHandle,
  657. OUT SIMPLE_READ_FILE *SimpleReadHandle
  658. );
  659. EFI_STATUS
  660. ReadSimpleReadFile (
  661. IN SIMPLE_READ_FILE SimpleReadHandle,
  662. IN UINTN Offset,
  663. IN OUT UINTN *ReadSize,
  664. OUT VOID *Buffer
  665. );
  666. VOID
  667. CloseSimpleReadFile (
  668. IN SIMPLE_READ_FILE SimpleReadHandle
  669. );
  670. VOID
  671. InitializeGuid (
  672. VOID
  673. );
  674. UINT8
  675. DecimaltoBCD(
  676. IN UINT8 DecValue
  677. );
  678. UINT8
  679. BCDtoDecimal(
  680. IN UINT8 BcdValue
  681. );
  682. EFI_STATUS
  683. LibGetSystemConfigurationTable(
  684. IN EFI_GUID *TableGuid,
  685. IN OUT VOID **Table
  686. );
  687. BOOLEAN
  688. LibIsValidTextGraphics (
  689. IN CHAR16 Graphic,
  690. OUT CHAR8 *PcAnsi, OPTIONAL
  691. OUT CHAR8 *Ascii OPTIONAL
  692. );
  693. BOOLEAN
  694. IsValidAscii (
  695. IN CHAR16 Ascii
  696. );
  697. BOOLEAN
  698. IsValidEfiCntlChar (
  699. IN CHAR16 c
  700. );
  701. CHAR16 *
  702. LibGetUiString (
  703. IN EFI_HANDLE Handle,
  704. IN UI_STRING_TYPE StringType,
  705. IN ISO_639_2 *LangCode,
  706. IN BOOLEAN ReturnDevicePathStrOnMismatch
  707. );
  708. CHAR8*
  709. LibGetSmbiosString (
  710. IN SMBIOS_STRUCTURE_POINTER *Smbios,
  711. IN UINT16 StringNumber
  712. );
  713. EFI_STATUS
  714. LibGetSmbiosSystemGuidAndSerialNumber (
  715. IN EFI_GUID *SystemGuid,
  716. OUT CHAR8 **SystemSerialNumber
  717. );
  718. EFI_STATUS
  719. InitializeGlobalIoDevice (
  720. IN EFI_DEVICE_PATH *DevicePath,
  721. IN EFI_GUID *Protocol,
  722. IN CHAR8 *ErrorStr,
  723. OUT EFI_DEVICE_IO_INTERFACE **GlobalIoFncs
  724. );
  725. UINT32
  726. ReadPort (
  727. IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
  728. IN EFI_IO_WIDTH Width,
  729. IN UINTN Port
  730. );
  731. UINT32
  732. WritePort (
  733. IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
  734. IN EFI_IO_WIDTH Width,
  735. IN UINTN Port,
  736. IN UINTN Data
  737. );
  738. UINT32
  739. ReadPciConfig (
  740. IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
  741. IN EFI_IO_WIDTH Width,
  742. IN UINTN Port
  743. );
  744. UINT32
  745. WritePciConfig (
  746. IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs,
  747. IN EFI_IO_WIDTH Width,
  748. IN UINTN Port,
  749. IN UINTN Data
  750. );
  751. extern EFI_DEVICE_IO_INTERFACE *GlobalIoFncs;
  752. #define outp(_Port, _DataByte) (UINT8)WritePort(GlobalIoFncs, IO_UINT8, (UINTN)_Port, (UINTN)_DataByte)
  753. #define inp(_Port) (UINT8)ReadPort(GlobalIoFncs, IO_UINT8, (UINTN)_Port)
  754. #define outpw(_Port, _DataByte) (UINT16)WritePort(GlobalIoFncs, IO_UINT16, (UINTN)_Port, (UINTN)_DataByte)
  755. #define inpw(_Port) (UINT16)ReadPort(GlobalIoFncs, IO_UINT16, (UINTN)_Port)
  756. #define outpd(_Port, _DataByte) (UINT32)WritePort(GlobalIoFncs, IO_UINT32, (UINTN)_Port, (UINTN)_DataByte)
  757. #define inpd(_Port) (UINT32)ReadPort(GlobalIoFncs, IO_UINT32, (UINTN)_Port)
  758. #define writepci8(_Addr, _DataByte) (UINT8)WritePciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr, (UINTN)_DataByte)
  759. #define readpci8(_Addr) (UINT8)ReadPciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr)
  760. #define writepci16(_Addr, _DataByte) (UINT16)WritePciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr, (UINTN)_DataByte)
  761. #define readpci16(_Addr) (UINT16)ReadPciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr)
  762. #define writepci32(_Addr, _DataByte) (UINT32)WritePciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr, (UINTN)_DataByte)
  763. #define readpci32(_Addr) (UINT32)ReadPciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr)
  764. #define Pause() WaitForSingleEvent (ST->ConIn->WaitForKey, 0)
  765. #define Port80(_PostCode) GlobalIoFncs->Io.Write (GlobalIoFncs, IO_UINT16, (UINT64)0x80, 1, &(_PostCode))
  766. #endif