efilib.h 18 KB

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