1 1.3 jmcneill /* $NetBSD: efilib.h,v 1.3 2021/09/30 19:02:47 jmcneill Exp $ */ 2 1.1 jakllsch 3 1.1 jakllsch #ifndef _EFILIB_INCLUDE_ 4 1.1 jakllsch #define _EFILIB_INCLUDE_ 5 1.1 jakllsch 6 1.1 jakllsch /*++ 7 1.1 jakllsch 8 1.1 jakllsch Copyright (c) 2000 Intel Corporation 9 1.1 jakllsch 10 1.1 jakllsch Module Name: 11 1.1 jakllsch 12 1.1 jakllsch efilib.h 13 1.1 jakllsch 14 1.1 jakllsch Abstract: 15 1.1 jakllsch 16 1.1 jakllsch EFI library functions 17 1.1 jakllsch 18 1.1 jakllsch 19 1.1 jakllsch 20 1.1 jakllsch Revision History 21 1.1 jakllsch 22 1.1 jakllsch --*/ 23 1.1 jakllsch 24 1.1 jakllsch #include "efidebug.h" 25 1.1 jakllsch #include "efipart.h" 26 1.3 jmcneill #if defined(_M_X64) || defined(__x86_64__) || defined(__amd64__) 27 1.3 jmcneill #include "x86_64/efilibplat.h" 28 1.3 jmcneill #elif defined(_M_IX86) || defined(__i386__) 29 1.3 jmcneill #include "ia32/efilibplat.h" 30 1.3 jmcneill #elif defined(_M_IA64) || defined(__ia64__) 31 1.3 jmcneill #include "ia64/efilibplat.h" 32 1.3 jmcneill #elif defined (_M_ARM64) || defined(__aarch64__) 33 1.3 jmcneill #include "aarch64/efilibplat.h" 34 1.3 jmcneill #elif defined (_M_ARM) || defined(__arm__) 35 1.3 jmcneill #include "arm/efilibplat.h" 36 1.3 jmcneill #elif defined (_M_MIPS64) || defined(__mips64__) 37 1.3 jmcneill #include "mips64el/efilibplat.h" 38 1.3 jmcneill #elif defined (__riscv) && __riscv_xlen == 64 39 1.3 jmcneill #include "riscv64/efilibplat.h" 40 1.3 jmcneill #endif 41 1.1 jakllsch #include "efilink.h" 42 1.1 jakllsch #include "efirtlib.h" 43 1.2 jmcneill #include "efistdarg.h" 44 1.1 jakllsch #include "pci22.h" 45 1.1 jakllsch #include "libsmbios.h" 46 1.1 jakllsch 47 1.1 jakllsch // 48 1.1 jakllsch // Public read-only data in the EFI library 49 1.1 jakllsch // 50 1.1 jakllsch 51 1.1 jakllsch extern EFI_SYSTEM_TABLE *ST; 52 1.2 jmcneill #define gST ST 53 1.1 jakllsch extern EFI_BOOT_SERVICES *BS; 54 1.2 jmcneill #define gBS BS 55 1.1 jakllsch extern EFI_RUNTIME_SERVICES *RT; 56 1.2 jmcneill #define gRT RT 57 1.1 jakllsch 58 1.2 jmcneill extern EFI_GUID gEfiDevicePathProtocolGuid; 59 1.2 jmcneill #define DevicePathProtocol gEfiDevicePathProtocolGuid 60 1.2 jmcneill extern EFI_GUID gEfiDevicePathToTextProtocolGuid; 61 1.2 jmcneill #define DevicePathToTextProtocol gEfiDevicePathToTextProtocolGuid 62 1.2 jmcneill extern EFI_GUID gEfiDevicePathFromTextProtocolGuid; 63 1.2 jmcneill #define DevicePathFromTextProtocol gEfiDevicePathFromTextProtocolGuid 64 1.3 jmcneill extern EFI_GUID gEfiDevicePathUtilitiesProtocolGuid; 65 1.3 jmcneill #define DevicePathUtilitiesProtocol gEfiDevicePathUtilitiesProtocolGuid 66 1.2 jmcneill extern EFI_GUID gEfiLoadedImageProtocolGuid; 67 1.2 jmcneill #define LoadedImageProtocol gEfiLoadedImageProtocolGuid 68 1.2 jmcneill extern EFI_GUID gEfiSimpleTextInProtocolGuid; 69 1.2 jmcneill #define TextInProtocol gEfiSimpleTextInProtocolGuid 70 1.2 jmcneill extern EFI_GUID gEfiSimpleTextOutProtocolGuid; 71 1.2 jmcneill #define TextOutProtocol gEfiSimpleTextOutProtocolGuid 72 1.2 jmcneill extern EFI_GUID gEfiGraphicsOutputProtocolGuid; 73 1.2 jmcneill #define GraphicsOutputProtocol gEfiGraphicsOutputProtocolGuid 74 1.2 jmcneill extern EFI_GUID gEfiEdidDiscoveredProtocolGuid; 75 1.2 jmcneill #define EdidDiscoveredProtocol gEfiEdidDiscoveredProtocolGuid 76 1.2 jmcneill extern EFI_GUID gEfiEdidActiveProtocolGuid; 77 1.2 jmcneill #define EdidActiveProtocol gEfiEdidActiveProtocolGuid 78 1.2 jmcneill extern EFI_GUID gEfiEdidOverrideProtocolGuid; 79 1.2 jmcneill #define EdidOverrideProtocol gEfiEdidOverrideProtocolGuid 80 1.2 jmcneill extern EFI_GUID gEfiBlockIoProtocolGuid; 81 1.2 jmcneill #define BlockIoProtocol gEfiBlockIoProtocolGuid 82 1.2 jmcneill extern EFI_GUID gEfiBlockIo2ProtocolGuid; 83 1.2 jmcneill #define BlockIo2Protocol gEfiBlockIo2ProtocolGuid 84 1.2 jmcneill extern EFI_GUID gEfiDiskIoProtocolGuid; 85 1.2 jmcneill #define DiskIoProtocol gEfiDiskIoProtocolGuid 86 1.2 jmcneill extern EFI_GUID gEfiDiskIo2ProtocolGuid; 87 1.2 jmcneill #define DiskIo2Protocol gEfiDiskIo2ProtocolGuid 88 1.2 jmcneill extern EFI_GUID gEfiSimpleFileSystemProtocolGuid; 89 1.2 jmcneill #define FileSystemProtocol gEfiSimpleFileSystemProtocolGuid 90 1.2 jmcneill extern EFI_GUID gEfiLoadFileProtocolGuid; 91 1.2 jmcneill #define LoadFileProtocol gEfiLoadFileProtocolGuid 92 1.2 jmcneill extern EFI_GUID gEfiDeviceIoProtocolGuid; 93 1.2 jmcneill #define DeviceIoProtocol gEfiDeviceIoProtocolGuid 94 1.1 jakllsch extern EFI_GUID VariableStoreProtocol; 95 1.1 jakllsch extern EFI_GUID LegacyBootProtocol; 96 1.2 jmcneill extern EFI_GUID gEfiUnicodeCollationProtocolGuid; 97 1.2 jmcneill #define UnicodeCollationProtocol gEfiUnicodeCollationProtocolGuid 98 1.2 jmcneill extern EFI_GUID gEfiSerialIoProtocolGuid; 99 1.2 jmcneill #define SerialIoProtocol gEfiSerialIoProtocolGuid 100 1.1 jakllsch extern EFI_GUID VgaClassProtocol; 101 1.1 jakllsch extern EFI_GUID TextOutSpliterProtocol; 102 1.1 jakllsch extern EFI_GUID ErrorOutSpliterProtocol; 103 1.1 jakllsch extern EFI_GUID TextInSpliterProtocol; 104 1.2 jmcneill extern EFI_GUID gEfiSimpleNetworkProtocolGuid; 105 1.2 jmcneill #define SimpleNetworkProtocol gEfiSimpleNetworkProtocolGuid 106 1.2 jmcneill extern EFI_GUID gEfiPxeBaseCodeProtocolGuid; 107 1.2 jmcneill #define PxeBaseCodeProtocol gEfiPxeBaseCodeProtocolGuid 108 1.2 jmcneill extern EFI_GUID gEfiPxeBaseCodeCallbackProtocolGuid; 109 1.2 jmcneill #define PxeCallbackProtocol gEfiPxeBaseCodeCallbackProtocolGuid 110 1.2 jmcneill extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid; 111 1.2 jmcneill #define NetworkInterfaceIdentifierProtocol gEfiNetworkInterfaceIdentifierProtocolGuid 112 1.2 jmcneill extern EFI_GUID gEFiUiInterfaceProtocolGuid; 113 1.2 jmcneill #define UiProtocol gEFiUiInterfaceProtocolGuid 114 1.1 jakllsch extern EFI_GUID InternalShellProtocol; 115 1.2 jmcneill extern EFI_GUID gEfiPciIoProtocolGuid; 116 1.2 jmcneill #define PciIoProtocol gEfiPciIoProtocolGuid 117 1.2 jmcneill extern EFI_GUID gEfiPciRootBridgeIoProtocolGuid; 118 1.2 jmcneill extern EFI_GUID gEfiDriverBindingProtocolGuid; 119 1.2 jmcneill #define DriverBindingProtocol gEfiDriverBindingProtocolGuid 120 1.2 jmcneill extern EFI_GUID gEfiComponentNameProtocolGuid; 121 1.2 jmcneill #define ComponentNameProtocol gEfiComponentNameProtocolGuid 122 1.2 jmcneill extern EFI_GUID gEfiComponentName2ProtocolGuid; 123 1.2 jmcneill #define ComponentName2Protocol gEfiComponentName2ProtocolGuid 124 1.2 jmcneill extern EFI_GUID gEfiHashProtocolGuid; 125 1.2 jmcneill #define HashProtocol gEfiHashProtocolGuid 126 1.2 jmcneill extern EFI_GUID gEfiPlatformDriverOverrideProtocolGuid; 127 1.2 jmcneill #define PlatformDriverOverrideProtocol gEfiPlatformDriverOverrideProtocolGuid 128 1.2 jmcneill extern EFI_GUID gEfiBusSpecificDriverOverrideProtocolGuid; 129 1.2 jmcneill #define BusSpecificDriverOverrideProtocol gEfiBusSpecificDriverOverrideProtocolGuid 130 1.2 jmcneill extern EFI_GUID gEfiDriverFamilyOverrideProtocolGuid; 131 1.2 jmcneill #define DriverFamilyOverrideProtocol gEfiDriverFamilyOverrideProtocolGuid 132 1.2 jmcneill extern EFI_GUID gEfiEbcProtocolGuid; 133 1.2 jmcneill 134 1.2 jmcneill extern EFI_GUID gEfiGlobalVariableGuid; 135 1.2 jmcneill #define EfiGlobalVariable gEfiGlobalVariableGuid 136 1.2 jmcneill extern EFI_GUID gEfiFileInfoGuid; 137 1.2 jmcneill #define GenericFileInfo gEfiFileInfoGuid 138 1.2 jmcneill extern EFI_GUID gEfiFileSystemInfoGuid; 139 1.2 jmcneill #define FileSystemInfo gEfiFileSystemInfoGuid 140 1.2 jmcneill extern EFI_GUID gEfiFileSystemVolumeLabelInfoIdGuid; 141 1.2 jmcneill #define FileSystemVolumeLabelInfo gEfiFileSystemVolumeLabelInfoIdGuid 142 1.2 jmcneill extern EFI_GUID gEfiPcAnsiGuid; 143 1.2 jmcneill #define PcAnsiProtocol gEfiPcAnsiGuid 144 1.2 jmcneill extern EFI_GUID gEfiVT100Guid; 145 1.2 jmcneill #define Vt100Protocol gEfiVT100Guid 146 1.2 jmcneill extern EFI_GUID gEfiVT100PlusGuid; 147 1.2 jmcneill extern EFI_GUID gEfiVTUTF8Guid; 148 1.1 jakllsch 149 1.1 jakllsch extern EFI_GUID NullGuid; 150 1.1 jakllsch extern EFI_GUID UnknownDevice; 151 1.1 jakllsch 152 1.1 jakllsch extern EFI_GUID EfiPartTypeSystemPartitionGuid; 153 1.1 jakllsch extern EFI_GUID EfiPartTypeLegacyMbrGuid; 154 1.1 jakllsch 155 1.1 jakllsch extern EFI_GUID MpsTableGuid; 156 1.1 jakllsch extern EFI_GUID AcpiTableGuid; 157 1.1 jakllsch extern EFI_GUID SMBIOSTableGuid; 158 1.3 jmcneill extern EFI_GUID SMBIOS3TableGuid; 159 1.1 jakllsch extern EFI_GUID SalSystemTableGuid; 160 1.3 jmcneill extern EFI_GUID EfiDtbTableGuid; 161 1.1 jakllsch 162 1.2 jmcneill extern EFI_GUID SimplePointerProtocol; 163 1.2 jmcneill extern EFI_GUID AbsolutePointerProtocol; 164 1.2 jmcneill 165 1.2 jmcneill extern EFI_GUID gEfiDebugImageInfoTableGuid; 166 1.2 jmcneill extern EFI_GUID gEfiDebugSupportProtocolGuid; 167 1.2 jmcneill 168 1.3 jmcneill extern EFI_GUID SimpleTextInputExProtocol; 169 1.3 jmcneill 170 1.3 jmcneill extern EFI_GUID ShellProtocolGuid; 171 1.3 jmcneill extern EFI_GUID ShellParametersProtocolGuid; 172 1.3 jmcneill extern EFI_GUID ShellDynamicCommandProtocolGuid; 173 1.3 jmcneill 174 1.1 jakllsch // 175 1.1 jakllsch // EFI Variable strings 176 1.1 jakllsch // 177 1.1 jakllsch #define LOAD_OPTION_ACTIVE 0x00000001 178 1.1 jakllsch 179 1.1 jakllsch #define VarLanguageCodes L"LangCodes" 180 1.1 jakllsch #define VarLanguage L"Lang" 181 1.1 jakllsch #define VarTimeout L"Timeout" 182 1.1 jakllsch #define VarConsoleInp L"ConIn" 183 1.1 jakllsch #define VarConsoleOut L"ConOut" 184 1.1 jakllsch #define VarErrorOut L"ErrOut" 185 1.1 jakllsch #define VarBootOption L"Boot%04x" 186 1.1 jakllsch #define VarBootOrder L"BootOrder" 187 1.1 jakllsch #define VarBootNext L"BootNext" 188 1.1 jakllsch #define VarBootCurrent L"BootCurrent" 189 1.1 jakllsch #define VarDriverOption L"Driver%04x" 190 1.1 jakllsch #define VarDriverOrder L"DriverOrder" 191 1.1 jakllsch #define VarConsoleInpDev L"ConInDev" 192 1.1 jakllsch #define VarConsoleOutDev L"ConOutDev" 193 1.1 jakllsch #define VarErrorOutDev L"ErrOutDev" 194 1.1 jakllsch 195 1.1 jakllsch #define LanguageCodeEnglish "eng" 196 1.1 jakllsch 197 1.1 jakllsch extern EFI_DEVICE_PATH RootDevicePath[]; 198 1.1 jakllsch extern EFI_DEVICE_PATH EndDevicePath[]; 199 1.1 jakllsch extern EFI_DEVICE_PATH EndInstanceDevicePath[]; 200 1.1 jakllsch 201 1.1 jakllsch // 202 1.1 jakllsch // Other public data in the EFI library 203 1.1 jakllsch // 204 1.1 jakllsch 205 1.1 jakllsch extern EFI_MEMORY_TYPE PoolAllocationType; 206 1.1 jakllsch 207 1.1 jakllsch // 208 1.1 jakllsch // STATIC - Name is internal to the module 209 1.1 jakllsch // INTERNAL - Name is internal to the component (i.e., directory) 210 1.1 jakllsch // BOOTSERVCE - Name of a boot service function 211 1.1 jakllsch // 212 1.1 jakllsch 213 1.1 jakllsch #define STATIC 214 1.1 jakllsch #define INTERNAL 215 1.1 jakllsch #define BOOTSERVICE 216 1.1 jakllsch 217 1.1 jakllsch // 218 1.1 jakllsch // Prototypes 219 1.1 jakllsch // 220 1.1 jakllsch 221 1.1 jakllsch VOID 222 1.1 jakllsch InitializeLib ( 223 1.1 jakllsch IN EFI_HANDLE ImageHandle, 224 1.1 jakllsch IN EFI_SYSTEM_TABLE *SystemTable 225 1.1 jakllsch ); 226 1.1 jakllsch 227 1.1 jakllsch VOID 228 1.1 jakllsch InitializeUnicodeSupport ( 229 1.1 jakllsch CHAR8 *LangCode 230 1.1 jakllsch ); 231 1.1 jakllsch 232 1.1 jakllsch VOID 233 1.1 jakllsch EFIDebugVariable ( 234 1.1 jakllsch VOID 235 1.1 jakllsch ); 236 1.1 jakllsch 237 1.1 jakllsch VOID 238 1.2 jmcneill Exit( 239 1.2 jmcneill IN EFI_STATUS ExitStatus, 240 1.2 jmcneill IN UINTN ExitDataSize, 241 1.2 jmcneill IN CHAR16 *ExitData OPTIONAL 242 1.2 jmcneill ); 243 1.2 jmcneill 244 1.2 jmcneill INTN 245 1.2 jmcneill GetShellArgcArgv( 246 1.2 jmcneill EFI_HANDLE ImageHandle, 247 1.2 jmcneill CHAR16 **Argv[] /* Statically allocated */ 248 1.2 jmcneill ); 249 1.2 jmcneill 250 1.2 jmcneill VOID 251 1.1 jakllsch SetCrc ( 252 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr 253 1.1 jakllsch ); 254 1.1 jakllsch 255 1.1 jakllsch VOID 256 1.1 jakllsch SetCrcAltSize ( 257 1.1 jakllsch IN UINTN Size, 258 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr 259 1.1 jakllsch ); 260 1.1 jakllsch 261 1.1 jakllsch BOOLEAN 262 1.1 jakllsch CheckCrc ( 263 1.1 jakllsch IN UINTN MaxSize, 264 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr 265 1.1 jakllsch ); 266 1.1 jakllsch 267 1.1 jakllsch BOOLEAN 268 1.1 jakllsch CheckCrcAltSize ( 269 1.1 jakllsch IN UINTN MaxSize, 270 1.1 jakllsch IN UINTN Size, 271 1.1 jakllsch IN OUT EFI_TABLE_HEADER *Hdr 272 1.1 jakllsch ); 273 1.1 jakllsch 274 1.1 jakllsch UINT32 275 1.1 jakllsch CalculateCrc ( 276 1.1 jakllsch UINT8 *pt, 277 1.1 jakllsch UINTN Size 278 1.1 jakllsch ); 279 1.1 jakllsch 280 1.1 jakllsch VOID 281 1.1 jakllsch ZeroMem ( 282 1.1 jakllsch IN VOID *Buffer, 283 1.1 jakllsch IN UINTN Size 284 1.1 jakllsch ); 285 1.1 jakllsch 286 1.1 jakllsch VOID 287 1.1 jakllsch SetMem ( 288 1.1 jakllsch IN VOID *Buffer, 289 1.1 jakllsch IN UINTN Size, 290 1.2 jmcneill IN UINT8 Value 291 1.1 jakllsch ); 292 1.1 jakllsch 293 1.1 jakllsch VOID 294 1.1 jakllsch CopyMem ( 295 1.1 jakllsch IN VOID *Dest, 296 1.2 jmcneill IN CONST VOID *Src, 297 1.1 jakllsch IN UINTN len 298 1.1 jakllsch ); 299 1.1 jakllsch 300 1.1 jakllsch INTN 301 1.1 jakllsch CompareMem ( 302 1.2 jmcneill IN CONST VOID *Dest, 303 1.2 jmcneill IN CONST VOID *Src, 304 1.1 jakllsch IN UINTN len 305 1.1 jakllsch ); 306 1.1 jakllsch 307 1.1 jakllsch INTN 308 1.1 jakllsch StrCmp ( 309 1.2 jmcneill IN CONST CHAR16 *s1, 310 1.2 jmcneill IN CONST CHAR16 *s2 311 1.1 jakllsch ); 312 1.1 jakllsch 313 1.1 jakllsch INTN 314 1.1 jakllsch StrnCmp ( 315 1.2 jmcneill IN CONST CHAR16 *s1, 316 1.2 jmcneill IN CONST CHAR16 *s2, 317 1.1 jakllsch IN UINTN len 318 1.1 jakllsch ); 319 1.1 jakllsch 320 1.1 jakllsch INTN 321 1.1 jakllsch StriCmp ( 322 1.2 jmcneill IN CONST CHAR16 *s1, 323 1.2 jmcneill IN CONST CHAR16 *s2 324 1.1 jakllsch ); 325 1.1 jakllsch 326 1.1 jakllsch VOID 327 1.1 jakllsch StrLwr ( 328 1.1 jakllsch IN CHAR16 *Str 329 1.1 jakllsch ); 330 1.1 jakllsch 331 1.1 jakllsch VOID 332 1.1 jakllsch StrUpr ( 333 1.1 jakllsch IN CHAR16 *Str 334 1.1 jakllsch ); 335 1.1 jakllsch 336 1.1 jakllsch VOID 337 1.1 jakllsch StrCpy ( 338 1.1 jakllsch IN CHAR16 *Dest, 339 1.2 jmcneill IN CONST CHAR16 *Src 340 1.2 jmcneill ); 341 1.2 jmcneill 342 1.2 jmcneill VOID 343 1.2 jmcneill StrnCpy ( 344 1.2 jmcneill IN CHAR16 *Dest, 345 1.2 jmcneill IN CONST CHAR16 *Src, 346 1.2 jmcneill IN UINTN Len 347 1.2 jmcneill ); 348 1.2 jmcneill 349 1.2 jmcneill CHAR16 * 350 1.2 jmcneill StpCpy ( 351 1.2 jmcneill IN CHAR16 *Dest, 352 1.2 jmcneill IN CONST CHAR16 *Src 353 1.2 jmcneill ); 354 1.2 jmcneill 355 1.2 jmcneill CHAR16 * 356 1.2 jmcneill StpnCpy ( 357 1.2 jmcneill IN CHAR16 *Dest, 358 1.2 jmcneill IN CONST CHAR16 *Src, 359 1.2 jmcneill IN UINTN Len 360 1.1 jakllsch ); 361 1.1 jakllsch 362 1.1 jakllsch VOID 363 1.1 jakllsch StrCat ( 364 1.1 jakllsch IN CHAR16 *Dest, 365 1.2 jmcneill IN CONST CHAR16 *Src 366 1.2 jmcneill ); 367 1.2 jmcneill 368 1.2 jmcneill VOID 369 1.2 jmcneill StrnCat ( 370 1.2 jmcneill IN CHAR16 *Dest, 371 1.2 jmcneill IN CONST CHAR16 *Src, 372 1.2 jmcneill IN UINTN Len 373 1.1 jakllsch ); 374 1.1 jakllsch 375 1.1 jakllsch UINTN 376 1.1 jakllsch StrLen ( 377 1.2 jmcneill IN CONST CHAR16 *s1 378 1.2 jmcneill ); 379 1.2 jmcneill 380 1.2 jmcneill UINTN 381 1.2 jmcneill StrnLen ( 382 1.2 jmcneill IN CONST CHAR16 *s1, 383 1.2 jmcneill IN UINTN Len 384 1.1 jakllsch ); 385 1.1 jakllsch 386 1.1 jakllsch UINTN 387 1.1 jakllsch StrSize ( 388 1.2 jmcneill IN CONST CHAR16 *s1 389 1.1 jakllsch ); 390 1.1 jakllsch 391 1.1 jakllsch CHAR16 * 392 1.1 jakllsch StrDuplicate ( 393 1.2 jmcneill IN CONST CHAR16 *Src 394 1.1 jakllsch ); 395 1.1 jakllsch 396 1.1 jakllsch UINTN 397 1.1 jakllsch strlena ( 398 1.2 jmcneill IN CONST CHAR8 *s1 399 1.1 jakllsch ); 400 1.2 jmcneill 401 1.1 jakllsch UINTN 402 1.1 jakllsch strcmpa ( 403 1.2 jmcneill IN CONST CHAR8 *s1, 404 1.2 jmcneill IN CONST CHAR8 *s2 405 1.1 jakllsch ); 406 1.1 jakllsch 407 1.1 jakllsch UINTN 408 1.1 jakllsch strncmpa ( 409 1.2 jmcneill IN CONST CHAR8 *s1, 410 1.2 jmcneill IN CONST CHAR8 *s2, 411 1.1 jakllsch IN UINTN len 412 1.1 jakllsch ); 413 1.1 jakllsch 414 1.1 jakllsch UINTN 415 1.1 jakllsch xtoi ( 416 1.2 jmcneill CONST CHAR16 *str 417 1.1 jakllsch ); 418 1.1 jakllsch 419 1.1 jakllsch UINTN 420 1.1 jakllsch Atoi ( 421 1.2 jmcneill CONST CHAR16 *str 422 1.1 jakllsch ); 423 1.1 jakllsch 424 1.2 jmcneill BOOLEAN 425 1.1 jakllsch MetaMatch ( 426 1.1 jakllsch IN CHAR16 *String, 427 1.1 jakllsch IN CHAR16 *Pattern 428 1.1 jakllsch ); 429 1.1 jakllsch 430 1.2 jmcneill BOOLEAN 431 1.1 jakllsch MetaiMatch ( 432 1.1 jakllsch IN CHAR16 *String, 433 1.1 jakllsch IN CHAR16 *Pattern 434 1.1 jakllsch ); 435 1.1 jakllsch 436 1.1 jakllsch UINT64 437 1.1 jakllsch LShiftU64 ( 438 1.1 jakllsch IN UINT64 Operand, 439 1.1 jakllsch IN UINTN Count 440 1.1 jakllsch ); 441 1.1 jakllsch 442 1.1 jakllsch UINT64 443 1.1 jakllsch RShiftU64 ( 444 1.1 jakllsch IN UINT64 Operand, 445 1.1 jakllsch IN UINTN Count 446 1.1 jakllsch ); 447 1.1 jakllsch 448 1.1 jakllsch UINT64 449 1.1 jakllsch MultU64x32 ( 450 1.1 jakllsch IN UINT64 Multiplicand, 451 1.1 jakllsch IN UINTN Multiplier 452 1.1 jakllsch ); 453 1.1 jakllsch 454 1.1 jakllsch UINT64 455 1.1 jakllsch DivU64x32 ( 456 1.1 jakllsch IN UINT64 Dividend, 457 1.1 jakllsch IN UINTN Divisor, 458 1.1 jakllsch OUT UINTN *Remainder OPTIONAL 459 1.1 jakllsch ); 460 1.1 jakllsch 461 1.1 jakllsch VOID 462 1.1 jakllsch InitializeLock ( 463 1.1 jakllsch IN OUT FLOCK *Lock, 464 1.1 jakllsch IN EFI_TPL Priority 465 1.1 jakllsch ); 466 1.1 jakllsch 467 1.1 jakllsch VOID 468 1.1 jakllsch AcquireLock ( 469 1.1 jakllsch IN FLOCK *Lock 470 1.1 jakllsch ); 471 1.1 jakllsch 472 1.1 jakllsch VOID 473 1.1 jakllsch ReleaseLock ( 474 1.1 jakllsch IN FLOCK *Lock 475 1.1 jakllsch ); 476 1.1 jakllsch 477 1.1 jakllsch 478 1.1 jakllsch INTN 479 1.1 jakllsch CompareGuid( 480 1.1 jakllsch IN EFI_GUID *Guid1, 481 1.1 jakllsch IN EFI_GUID *Guid2 482 1.1 jakllsch ); 483 1.1 jakllsch 484 1.1 jakllsch VOID * 485 1.1 jakllsch AllocatePool ( 486 1.1 jakllsch IN UINTN Size 487 1.1 jakllsch ); 488 1.1 jakllsch 489 1.1 jakllsch VOID * 490 1.1 jakllsch AllocateZeroPool ( 491 1.1 jakllsch IN UINTN Size 492 1.1 jakllsch ); 493 1.1 jakllsch 494 1.1 jakllsch VOID * 495 1.1 jakllsch ReallocatePool ( 496 1.1 jakllsch IN VOID *OldPool, 497 1.1 jakllsch IN UINTN OldSize, 498 1.1 jakllsch IN UINTN NewSize 499 1.1 jakllsch ); 500 1.1 jakllsch 501 1.1 jakllsch VOID 502 1.1 jakllsch FreePool ( 503 1.1 jakllsch IN VOID *p 504 1.1 jakllsch ); 505 1.1 jakllsch 506 1.1 jakllsch 507 1.1 jakllsch VOID 508 1.1 jakllsch Output ( 509 1.1 jakllsch IN CHAR16 *Str 510 1.1 jakllsch ); 511 1.1 jakllsch 512 1.1 jakllsch VOID 513 1.1 jakllsch Input ( 514 1.1 jakllsch IN CHAR16 *Prompt OPTIONAL, 515 1.1 jakllsch OUT CHAR16 *InStr, 516 1.1 jakllsch IN UINTN StrLen 517 1.1 jakllsch ); 518 1.1 jakllsch 519 1.1 jakllsch VOID 520 1.1 jakllsch IInput ( 521 1.1 jakllsch IN SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut, 522 1.1 jakllsch IN SIMPLE_INPUT_INTERFACE *ConIn, 523 1.1 jakllsch IN CHAR16 *Prompt OPTIONAL, 524 1.1 jakllsch OUT CHAR16 *InStr, 525 1.1 jakllsch IN UINTN StrLen 526 1.1 jakllsch ); 527 1.1 jakllsch 528 1.1 jakllsch UINTN 529 1.1 jakllsch Print ( 530 1.2 jmcneill IN CONST CHAR16 *fmt, 531 1.1 jakllsch ... 532 1.1 jakllsch ); 533 1.1 jakllsch 534 1.1 jakllsch UINTN 535 1.2 jmcneill VPrint ( 536 1.2 jmcneill IN CONST CHAR16 *fmt, 537 1.2 jmcneill va_list args 538 1.2 jmcneill ); 539 1.2 jmcneill 540 1.2 jmcneill UINTN 541 1.3 jmcneill UnicodeSPrint ( 542 1.2 jmcneill OUT CHAR16 *Str, 543 1.2 jmcneill IN UINTN StrSize, 544 1.2 jmcneill IN CONST CHAR16 *fmt, 545 1.1 jakllsch ... 546 1.1 jakllsch ); 547 1.1 jakllsch 548 1.2 jmcneill UINTN 549 1.3 jmcneill UnicodeVSPrint ( 550 1.2 jmcneill OUT CHAR16 *Str, 551 1.2 jmcneill IN UINTN StrSize, 552 1.2 jmcneill IN CONST CHAR16 *fmt, 553 1.2 jmcneill va_list args 554 1.2 jmcneill ); 555 1.2 jmcneill 556 1.2 jmcneill CHAR16 * 557 1.2 jmcneill VPoolPrint ( 558 1.2 jmcneill IN CONST CHAR16 *fmt, 559 1.2 jmcneill va_list args 560 1.2 jmcneill ); 561 1.2 jmcneill 562 1.1 jakllsch CHAR16 * 563 1.1 jakllsch PoolPrint ( 564 1.2 jmcneill IN CONST CHAR16 *fmt, 565 1.1 jakllsch ... 566 1.1 jakllsch ); 567 1.1 jakllsch 568 1.1 jakllsch typedef struct { 569 1.1 jakllsch CHAR16 *str; 570 1.1 jakllsch UINTN len; 571 1.1 jakllsch UINTN maxlen; 572 1.1 jakllsch } POOL_PRINT; 573 1.1 jakllsch 574 1.1 jakllsch CHAR16 * 575 1.1 jakllsch CatPrint ( 576 1.1 jakllsch IN OUT POOL_PRINT *Str, 577 1.2 jmcneill IN CONST CHAR16 *fmt, 578 1.1 jakllsch ... 579 1.1 jakllsch ); 580 1.1 jakllsch 581 1.1 jakllsch UINTN 582 1.1 jakllsch PrintAt ( 583 1.2 jmcneill IN UINTN Column, 584 1.2 jmcneill IN UINTN Row, 585 1.2 jmcneill IN CONST CHAR16 *fmt, 586 1.1 jakllsch ... 587 1.1 jakllsch ); 588 1.1 jakllsch 589 1.1 jakllsch UINTN 590 1.1 jakllsch IPrint ( 591 1.1 jakllsch IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, 592 1.2 jmcneill IN CONST CHAR16 *fmt, 593 1.1 jakllsch ... 594 1.1 jakllsch ); 595 1.1 jakllsch 596 1.1 jakllsch UINTN 597 1.1 jakllsch IPrintAt ( 598 1.1 jakllsch IN SIMPLE_TEXT_OUTPUT_INTERFACE *Out, 599 1.1 jakllsch IN UINTN Column, 600 1.1 jakllsch IN UINTN Row, 601 1.2 jmcneill IN CONST CHAR16 *fmt, 602 1.1 jakllsch ... 603 1.1 jakllsch ); 604 1.1 jakllsch 605 1.1 jakllsch UINTN 606 1.3 jmcneill AsciiPrint ( 607 1.2 jmcneill IN CONST CHAR8 *fmt, 608 1.1 jakllsch ... 609 1.1 jakllsch ); 610 1.1 jakllsch 611 1.3 jmcneill UINTN 612 1.3 jmcneill AsciiVSPrint( 613 1.3 jmcneill OUT CHAR8 *Str, 614 1.3 jmcneill IN UINTN StrSize, 615 1.3 jmcneill IN CONST CHAR8 *fmt, 616 1.3 jmcneill va_list args 617 1.3 jmcneill ); 618 1.3 jmcneill 619 1.3 jmcneill // 620 1.3 jmcneill // For compatibility with previous gnu-efi versions 621 1.3 jmcneill // 622 1.3 jmcneill #define SPrint UnicodeSPrint 623 1.3 jmcneill #define VSPrint UnicodeVSPrint 624 1.3 jmcneill #define APrint AsciiPrint 625 1.3 jmcneill 626 1.1 jakllsch VOID 627 1.1 jakllsch ValueToHex ( 628 1.1 jakllsch IN CHAR16 *Buffer, 629 1.1 jakllsch IN UINT64 v 630 1.1 jakllsch ); 631 1.1 jakllsch 632 1.1 jakllsch VOID 633 1.1 jakllsch ValueToString ( 634 1.1 jakllsch IN CHAR16 *Buffer, 635 1.1 jakllsch IN BOOLEAN Comma, 636 1.1 jakllsch IN INT64 v 637 1.1 jakllsch ); 638 1.1 jakllsch 639 1.2 jmcneill #ifndef __NetBSD__ 640 1.2 jmcneill VOID 641 1.2 jmcneill FloatToString ( 642 1.2 jmcneill IN CHAR16 *Buffer, 643 1.2 jmcneill IN BOOLEAN Comma, 644 1.2 jmcneill IN double v 645 1.2 jmcneill ); 646 1.2 jmcneill #endif 647 1.2 jmcneill 648 1.1 jakllsch VOID 649 1.1 jakllsch TimeToString ( 650 1.1 jakllsch OUT CHAR16 *Buffer, 651 1.1 jakllsch IN EFI_TIME *Time 652 1.1 jakllsch ); 653 1.1 jakllsch 654 1.1 jakllsch VOID 655 1.1 jakllsch GuidToString ( 656 1.1 jakllsch OUT CHAR16 *Buffer, 657 1.1 jakllsch IN EFI_GUID *Guid 658 1.1 jakllsch ); 659 1.1 jakllsch 660 1.1 jakllsch VOID 661 1.1 jakllsch StatusToString ( 662 1.1 jakllsch OUT CHAR16 *Buffer, 663 1.1 jakllsch EFI_STATUS Status 664 1.1 jakllsch ); 665 1.1 jakllsch 666 1.1 jakllsch VOID 667 1.1 jakllsch DumpHex ( 668 1.1 jakllsch IN UINTN Indent, 669 1.1 jakllsch IN UINTN Offset, 670 1.1 jakllsch IN UINTN DataSize, 671 1.1 jakllsch IN VOID *UserData 672 1.1 jakllsch ); 673 1.1 jakllsch 674 1.1 jakllsch BOOLEAN 675 1.1 jakllsch GrowBuffer( 676 1.1 jakllsch IN OUT EFI_STATUS *Status, 677 1.1 jakllsch IN OUT VOID **Buffer, 678 1.1 jakllsch IN UINTN BufferSize 679 1.1 jakllsch ); 680 1.1 jakllsch 681 1.1 jakllsch EFI_MEMORY_DESCRIPTOR * 682 1.1 jakllsch LibMemoryMap ( 683 1.1 jakllsch OUT UINTN *NoEntries, 684 1.1 jakllsch OUT UINTN *MapKey, 685 1.1 jakllsch OUT UINTN *DescriptorSize, 686 1.1 jakllsch OUT UINT32 *DescriptorVersion 687 1.1 jakllsch ); 688 1.1 jakllsch 689 1.1 jakllsch VOID * 690 1.1 jakllsch LibGetVariable ( 691 1.1 jakllsch IN CHAR16 *Name, 692 1.1 jakllsch IN EFI_GUID *VendorGuid 693 1.1 jakllsch ); 694 1.1 jakllsch 695 1.1 jakllsch VOID * 696 1.1 jakllsch LibGetVariableAndSize ( 697 1.1 jakllsch IN CHAR16 *Name, 698 1.1 jakllsch IN EFI_GUID *VendorGuid, 699 1.1 jakllsch OUT UINTN *VarSize 700 1.1 jakllsch ); 701 1.1 jakllsch 702 1.1 jakllsch EFI_STATUS 703 1.1 jakllsch LibDeleteVariable ( 704 1.1 jakllsch IN CHAR16 *VarName, 705 1.1 jakllsch IN EFI_GUID *VarGuid 706 1.1 jakllsch ); 707 1.1 jakllsch 708 1.1 jakllsch EFI_STATUS 709 1.2 jmcneill LibSetNVVariable ( 710 1.2 jmcneill IN CHAR16 *VarName, 711 1.2 jmcneill IN EFI_GUID *VarGuid, 712 1.2 jmcneill IN UINTN DataSize, 713 1.2 jmcneill IN VOID *Data 714 1.2 jmcneill ); 715 1.2 jmcneill 716 1.2 jmcneill EFI_STATUS 717 1.2 jmcneill LibSetVariable ( 718 1.2 jmcneill IN CHAR16 *VarName, 719 1.2 jmcneill IN EFI_GUID *VarGuid, 720 1.2 jmcneill IN UINTN DataSize, 721 1.2 jmcneill IN VOID *Data 722 1.2 jmcneill ); 723 1.2 jmcneill EFI_STATUS 724 1.1 jakllsch LibInsertToTailOfBootOrder ( 725 1.1 jakllsch IN UINT16 BootOption, 726 1.1 jakllsch IN BOOLEAN OnlyInsertIfEmpty 727 1.1 jakllsch ); 728 1.1 jakllsch 729 1.1 jakllsch EFI_STATUS 730 1.1 jakllsch LibLocateProtocol ( 731 1.1 jakllsch IN EFI_GUID *ProtocolGuid, 732 1.1 jakllsch OUT VOID **Interface 733 1.1 jakllsch ); 734 1.1 jakllsch 735 1.1 jakllsch EFI_STATUS 736 1.1 jakllsch LibLocateHandle ( 737 1.1 jakllsch IN EFI_LOCATE_SEARCH_TYPE SearchType, 738 1.1 jakllsch IN EFI_GUID *Protocol OPTIONAL, 739 1.1 jakllsch IN VOID *SearchKey OPTIONAL, 740 1.1 jakllsch IN OUT UINTN *NoHandles, 741 1.1 jakllsch OUT EFI_HANDLE **Buffer 742 1.1 jakllsch ); 743 1.1 jakllsch 744 1.1 jakllsch EFI_STATUS 745 1.1 jakllsch LibLocateHandleByDiskSignature ( 746 1.1 jakllsch IN UINT8 MBRType, 747 1.1 jakllsch IN UINT8 SignatureType, 748 1.1 jakllsch IN VOID *Signature, 749 1.1 jakllsch IN OUT UINTN *NoHandles, 750 1.1 jakllsch OUT EFI_HANDLE **Buffer 751 1.1 jakllsch ); 752 1.1 jakllsch 753 1.1 jakllsch EFI_STATUS 754 1.1 jakllsch LibInstallProtocolInterfaces ( 755 1.1 jakllsch IN OUT EFI_HANDLE *Handle, 756 1.1 jakllsch ... 757 1.1 jakllsch ); 758 1.1 jakllsch 759 1.1 jakllsch VOID 760 1.1 jakllsch LibUninstallProtocolInterfaces ( 761 1.1 jakllsch IN EFI_HANDLE Handle, 762 1.1 jakllsch ... 763 1.1 jakllsch ); 764 1.1 jakllsch 765 1.1 jakllsch EFI_STATUS 766 1.1 jakllsch LibReinstallProtocolInterfaces ( 767 1.1 jakllsch IN OUT EFI_HANDLE *Handle, 768 1.1 jakllsch ... 769 1.1 jakllsch ); 770 1.1 jakllsch 771 1.1 jakllsch EFI_EVENT 772 1.1 jakllsch LibCreateProtocolNotifyEvent ( 773 1.1 jakllsch IN EFI_GUID *ProtocolGuid, 774 1.1 jakllsch IN EFI_TPL NotifyTpl, 775 1.1 jakllsch IN EFI_EVENT_NOTIFY NotifyFunction, 776 1.1 jakllsch IN VOID *NotifyContext, 777 1.1 jakllsch OUT VOID *Registration 778 1.1 jakllsch ); 779 1.1 jakllsch 780 1.1 jakllsch EFI_STATUS 781 1.1 jakllsch WaitForSingleEvent ( 782 1.1 jakllsch IN EFI_EVENT Event, 783 1.1 jakllsch IN UINT64 Timeout OPTIONAL 784 1.1 jakllsch ); 785 1.1 jakllsch 786 1.1 jakllsch VOID 787 1.1 jakllsch WaitForEventWithTimeout ( 788 1.1 jakllsch IN EFI_EVENT Event, 789 1.1 jakllsch IN UINTN Timeout, 790 1.1 jakllsch IN UINTN Row, 791 1.1 jakllsch IN UINTN Column, 792 1.1 jakllsch IN CHAR16 *String, 793 1.1 jakllsch IN EFI_INPUT_KEY TimeoutKey, 794 1.1 jakllsch OUT EFI_INPUT_KEY *Key 795 1.1 jakllsch ); 796 1.1 jakllsch 797 1.1 jakllsch EFI_FILE_HANDLE 798 1.1 jakllsch LibOpenRoot ( 799 1.1 jakllsch IN EFI_HANDLE DeviceHandle 800 1.1 jakllsch ); 801 1.1 jakllsch 802 1.1 jakllsch EFI_FILE_INFO * 803 1.1 jakllsch LibFileInfo ( 804 1.1 jakllsch IN EFI_FILE_HANDLE FHand 805 1.1 jakllsch ); 806 1.1 jakllsch 807 1.1 jakllsch EFI_FILE_SYSTEM_INFO * 808 1.1 jakllsch LibFileSystemInfo ( 809 1.1 jakllsch IN EFI_FILE_HANDLE FHand 810 1.1 jakllsch ); 811 1.1 jakllsch 812 1.1 jakllsch EFI_FILE_SYSTEM_VOLUME_LABEL_INFO * 813 1.1 jakllsch LibFileSystemVolumeLabelInfo ( 814 1.1 jakllsch IN EFI_FILE_HANDLE FHand 815 1.1 jakllsch ); 816 1.1 jakllsch 817 1.1 jakllsch BOOLEAN 818 1.1 jakllsch ValidMBR( 819 1.1 jakllsch IN MASTER_BOOT_RECORD *Mbr, 820 1.1 jakllsch IN EFI_BLOCK_IO *BlkIo 821 1.1 jakllsch ); 822 1.1 jakllsch 823 1.1 jakllsch BOOLEAN 824 1.1 jakllsch LibMatchDevicePaths ( 825 1.1 jakllsch IN EFI_DEVICE_PATH *Multi, 826 1.1 jakllsch IN EFI_DEVICE_PATH *Single 827 1.1 jakllsch ); 828 1.1 jakllsch 829 1.1 jakllsch EFI_DEVICE_PATH * 830 1.1 jakllsch LibDuplicateDevicePathInstance ( 831 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath 832 1.1 jakllsch ); 833 1.1 jakllsch 834 1.1 jakllsch EFI_DEVICE_PATH * 835 1.1 jakllsch DevicePathFromHandle ( 836 1.1 jakllsch IN EFI_HANDLE Handle 837 1.1 jakllsch ); 838 1.1 jakllsch 839 1.1 jakllsch EFI_DEVICE_PATH * 840 1.1 jakllsch DevicePathInstance ( 841 1.1 jakllsch IN OUT EFI_DEVICE_PATH **DevicePath, 842 1.1 jakllsch OUT UINTN *Size 843 1.1 jakllsch ); 844 1.1 jakllsch 845 1.1 jakllsch UINTN 846 1.1 jakllsch DevicePathInstanceCount ( 847 1.1 jakllsch IN EFI_DEVICE_PATH *DevicePath 848 1.1 jakllsch ); 849 1.1 jakllsch 850 1.1 jakllsch EFI_DEVICE_PATH * 851 1.1 jakllsch AppendDevicePath ( 852 1.1 jakllsch IN EFI_DEVICE_PATH *Src1, 853 1.1 jakllsch IN EFI_DEVICE_PATH *Src2 854 1.1 jakllsch ); 855 1.1 jakllsch 856 1.1 jakllsch EFI_DEVICE_PATH * 857 1.1 jakllsch AppendDevicePathNode ( 858 1.1 jakllsch IN EFI_DEVICE_PATH *Src1, 859 1.1 jakllsch IN EFI_DEVICE_PATH *Src2 860 1.1 jakllsch ); 861 1.1 jakllsch 862 1.1 jakllsch EFI_DEVICE_PATH* 863 1.1 jakllsch AppendDevicePathInstance ( 864 1.1 jakllsch IN EFI_DEVICE_PATH *Src, 865 1.1 jakllsch IN EFI_DEVICE_PATH *Instance 866 1.1 jakllsch ); 867 1.1 jakllsch 868 1.1 jakllsch EFI_DEVICE_PATH * 869 1.1 jakllsch FileDevicePath ( 870 1.1 jakllsch IN EFI_HANDLE Device OPTIONAL, 871 1.1 jakllsch IN CHAR16 *FileName 872 1.1 jakllsch ); 873 1.1 jakllsch 874 1.1 jakllsch UINTN 875 1.1 jakllsch DevicePathSize ( 876 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath 877 1.1 jakllsch ); 878 1.1 jakllsch 879 1.1 jakllsch EFI_DEVICE_PATH * 880 1.1 jakllsch DuplicateDevicePath ( 881 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath 882 1.1 jakllsch ); 883 1.1 jakllsch 884 1.1 jakllsch EFI_DEVICE_PATH * 885 1.1 jakllsch UnpackDevicePath ( 886 1.1 jakllsch IN EFI_DEVICE_PATH *DevPath 887 1.1 jakllsch ); 888 1.1 jakllsch 889 1.1 jakllsch EFI_STATUS 890 1.1 jakllsch LibDevicePathToInterface ( 891 1.1 jakllsch IN EFI_GUID *Protocol, 892 1.1 jakllsch IN EFI_DEVICE_PATH *FilePath, 893 1.1 jakllsch OUT VOID **Interface 894 1.1 jakllsch ); 895 1.1 jakllsch 896 1.1 jakllsch CHAR16 * 897 1.1 jakllsch DevicePathToStr ( 898 1.1 jakllsch EFI_DEVICE_PATH *DevPath 899 1.1 jakllsch ); 900 1.1 jakllsch 901 1.1 jakllsch // 902 1.1 jakllsch // BugBug: I need my own include files 903 1.1 jakllsch // 904 1.1 jakllsch typedef struct { 905 1.1 jakllsch UINT8 Register; 906 1.1 jakllsch UINT8 Function; 907 1.1 jakllsch UINT8 Device; 908 1.1 jakllsch UINT8 Bus; 909 1.1 jakllsch UINT32 Reserved; 910 1.1 jakllsch } EFI_ADDRESS; 911 1.1 jakllsch 912 1.1 jakllsch typedef union { 913 1.1 jakllsch UINT64 Address; 914 1.1 jakllsch EFI_ADDRESS EfiAddress; 915 1.1 jakllsch } EFI_PCI_ADDRESS_UNION; 916 1.1 jakllsch 917 1.1 jakllsch 918 1.1 jakllsch EFI_STATUS 919 1.1 jakllsch PciFindDeviceClass ( 920 1.1 jakllsch IN OUT EFI_PCI_ADDRESS_UNION *Address, 921 1.1 jakllsch IN UINT8 BaseClass, 922 1.1 jakllsch IN UINT8 SubClass 923 1.1 jakllsch ); 924 1.1 jakllsch 925 1.1 jakllsch EFI_STATUS 926 1.1 jakllsch PciFindDevice ( 927 1.1 jakllsch IN OUT EFI_PCI_ADDRESS_UNION *DeviceAddress, 928 1.1 jakllsch IN UINT16 VendorId, 929 1.1 jakllsch IN UINT16 DeviceId, 930 1.1 jakllsch IN OUT PCI_TYPE00 *Pci 931 1.1 jakllsch ); 932 1.1 jakllsch 933 1.1 jakllsch // 934 1.1 jakllsch // SIMPLE_READ_FILE object used to access files 935 1.1 jakllsch // 936 1.1 jakllsch 937 1.1 jakllsch typedef VOID *SIMPLE_READ_FILE; 938 1.1 jakllsch 939 1.1 jakllsch EFI_STATUS 940 1.1 jakllsch OpenSimpleReadFile ( 941 1.1 jakllsch IN BOOLEAN BootPolicy, 942 1.1 jakllsch IN VOID *SourceBuffer OPTIONAL, 943 1.1 jakllsch IN UINTN SourceSize, 944 1.1 jakllsch IN OUT EFI_DEVICE_PATH **FilePath, 945 1.2 jmcneill OUT EFI_HANDLE *DeviceHandle, 946 1.1 jakllsch OUT SIMPLE_READ_FILE *SimpleReadHandle 947 1.1 jakllsch ); 948 1.1 jakllsch 949 1.1 jakllsch EFI_STATUS 950 1.1 jakllsch ReadSimpleReadFile ( 951 1.1 jakllsch IN SIMPLE_READ_FILE SimpleReadHandle, 952 1.1 jakllsch IN UINTN Offset, 953 1.1 jakllsch IN OUT UINTN *ReadSize, 954 1.1 jakllsch OUT VOID *Buffer 955 1.1 jakllsch ); 956 1.1 jakllsch 957 1.1 jakllsch 958 1.1 jakllsch VOID 959 1.1 jakllsch CloseSimpleReadFile ( 960 1.1 jakllsch IN SIMPLE_READ_FILE SimpleReadHandle 961 1.1 jakllsch ); 962 1.1 jakllsch 963 1.1 jakllsch VOID 964 1.1 jakllsch InitializeGuid ( 965 1.1 jakllsch VOID 966 1.1 jakllsch ); 967 1.1 jakllsch 968 1.1 jakllsch UINT8 969 1.1 jakllsch DecimaltoBCD( 970 1.1 jakllsch IN UINT8 DecValue 971 1.1 jakllsch ); 972 1.1 jakllsch 973 1.1 jakllsch UINT8 974 1.1 jakllsch BCDtoDecimal( 975 1.1 jakllsch IN UINT8 BcdValue 976 1.1 jakllsch ); 977 1.1 jakllsch 978 1.1 jakllsch EFI_STATUS 979 1.1 jakllsch LibGetSystemConfigurationTable( 980 1.1 jakllsch IN EFI_GUID *TableGuid, 981 1.1 jakllsch IN OUT VOID **Table 982 1.1 jakllsch ); 983 1.1 jakllsch 984 1.1 jakllsch BOOLEAN 985 1.1 jakllsch LibIsValidTextGraphics ( 986 1.2 jmcneill IN CHAR16 Graphic, 987 1.1 jakllsch OUT CHAR8 *PcAnsi, OPTIONAL 988 1.1 jakllsch OUT CHAR8 *Ascii OPTIONAL 989 1.1 jakllsch ); 990 1.1 jakllsch 991 1.1 jakllsch BOOLEAN 992 1.1 jakllsch IsValidAscii ( 993 1.1 jakllsch IN CHAR16 Ascii 994 1.1 jakllsch ); 995 1.1 jakllsch 996 1.1 jakllsch BOOLEAN 997 1.1 jakllsch IsValidEfiCntlChar ( 998 1.1 jakllsch IN CHAR16 c 999 1.1 jakllsch ); 1000 1.1 jakllsch 1001 1.1 jakllsch CHAR16 * 1002 1.1 jakllsch LibGetUiString ( 1003 1.1 jakllsch IN EFI_HANDLE Handle, 1004 1.1 jakllsch IN UI_STRING_TYPE StringType, 1005 1.1 jakllsch IN ISO_639_2 *LangCode, 1006 1.1 jakllsch IN BOOLEAN ReturnDevicePathStrOnMismatch 1007 1.1 jakllsch ); 1008 1.1 jakllsch 1009 1.1 jakllsch CHAR8* 1010 1.1 jakllsch LibGetSmbiosString ( 1011 1.1 jakllsch IN SMBIOS_STRUCTURE_POINTER *Smbios, 1012 1.1 jakllsch IN UINT16 StringNumber 1013 1.1 jakllsch ); 1014 1.1 jakllsch 1015 1.1 jakllsch EFI_STATUS 1016 1.1 jakllsch LibGetSmbiosSystemGuidAndSerialNumber ( 1017 1.1 jakllsch IN EFI_GUID *SystemGuid, 1018 1.1 jakllsch OUT CHAR8 **SystemSerialNumber 1019 1.1 jakllsch ); 1020 1.1 jakllsch 1021 1.1 jakllsch 1022 1.1 jakllsch EFI_STATUS 1023 1.1 jakllsch InitializeGlobalIoDevice ( 1024 1.1 jakllsch IN EFI_DEVICE_PATH *DevicePath, 1025 1.1 jakllsch IN EFI_GUID *Protocol, 1026 1.1 jakllsch IN CHAR8 *ErrorStr, 1027 1.2 jmcneill OUT EFI_DEVICE_IO_INTERFACE **GlobalIoFncs 1028 1.1 jakllsch ); 1029 1.1 jakllsch 1030 1.2 jmcneill UINT32 1031 1.1 jakllsch ReadPort ( 1032 1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, 1033 1.1 jakllsch IN EFI_IO_WIDTH Width, 1034 1.1 jakllsch IN UINTN Port 1035 1.1 jakllsch ); 1036 1.1 jakllsch 1037 1.2 jmcneill UINT32 1038 1.1 jakllsch WritePort ( 1039 1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, 1040 1.1 jakllsch IN EFI_IO_WIDTH Width, 1041 1.1 jakllsch IN UINTN Port, 1042 1.1 jakllsch IN UINTN Data 1043 1.1 jakllsch ); 1044 1.1 jakllsch 1045 1.2 jmcneill UINT32 1046 1.1 jakllsch ReadPciConfig ( 1047 1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, 1048 1.1 jakllsch IN EFI_IO_WIDTH Width, 1049 1.1 jakllsch IN UINTN Port 1050 1.1 jakllsch ); 1051 1.1 jakllsch 1052 1.2 jmcneill UINT32 1053 1.1 jakllsch WritePciConfig ( 1054 1.2 jmcneill IN EFI_DEVICE_IO_INTERFACE *GlobalIoFncs, 1055 1.1 jakllsch IN EFI_IO_WIDTH Width, 1056 1.1 jakllsch IN UINTN Port, 1057 1.1 jakllsch IN UINTN Data 1058 1.1 jakllsch ); 1059 1.1 jakllsch 1060 1.3 jmcneill VOID 1061 1.3 jmcneill Pause ( 1062 1.3 jmcneill VOID 1063 1.3 jmcneill ); 1064 1.3 jmcneill 1065 1.1 jakllsch extern EFI_DEVICE_IO_INTERFACE *GlobalIoFncs; 1066 1.1 jakllsch 1067 1.1 jakllsch #define outp(_Port, _DataByte) (UINT8)WritePort(GlobalIoFncs, IO_UINT8, (UINTN)_Port, (UINTN)_DataByte) 1068 1.1 jakllsch #define inp(_Port) (UINT8)ReadPort(GlobalIoFncs, IO_UINT8, (UINTN)_Port) 1069 1.1 jakllsch #define outpw(_Port, _DataByte) (UINT16)WritePort(GlobalIoFncs, IO_UINT16, (UINTN)_Port, (UINTN)_DataByte) 1070 1.1 jakllsch #define inpw(_Port) (UINT16)ReadPort(GlobalIoFncs, IO_UINT16, (UINTN)_Port) 1071 1.1 jakllsch #define outpd(_Port, _DataByte) (UINT32)WritePort(GlobalIoFncs, IO_UINT32, (UINTN)_Port, (UINTN)_DataByte) 1072 1.1 jakllsch #define inpd(_Port) (UINT32)ReadPort(GlobalIoFncs, IO_UINT32, (UINTN)_Port) 1073 1.1 jakllsch 1074 1.1 jakllsch #define writepci8(_Addr, _DataByte) (UINT8)WritePciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr, (UINTN)_DataByte) 1075 1.1 jakllsch #define readpci8(_Addr) (UINT8)ReadPciConfig(GlobalIoFncs, IO_UINT8, (UINTN)_Addr) 1076 1.1 jakllsch #define writepci16(_Addr, _DataByte) (UINT16)WritePciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr, (UINTN)_DataByte) 1077 1.1 jakllsch #define readpci16(_Addr) (UINT16)ReadPciConfig(GlobalIoFncs, IO_UINT16, (UINTN)_Addr) 1078 1.1 jakllsch #define writepci32(_Addr, _DataByte) (UINT32)WritePciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr, (UINTN)_DataByte) 1079 1.1 jakllsch #define readpci32(_Addr) (UINT32)ReadPciConfig(GlobalIoFncs, IO_UINT32, (UINTN)_Addr) 1080 1.1 jakllsch 1081 1.1 jakllsch #define Port80(_PostCode) GlobalIoFncs->Io.Write (GlobalIoFncs, IO_UINT16, (UINT64)0x80, 1, &(_PostCode)) 1082 1.1 jakllsch 1083 1.1 jakllsch #endif 1084