efilib.h 18 KB

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