efilib.h 17 KB

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