1060fee10Skettenis /* $FreeBSD: head/sys/boot/efi/include/efiapi.h 278234 2015-02-05 07:19:30Z rpaulo $ */ 2060fee10Skettenis #ifndef _EFI_API_H 3060fee10Skettenis #define _EFI_API_H 4060fee10Skettenis 5060fee10Skettenis /*++ 6060fee10Skettenis 7060fee10Skettenis Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved 8060fee10Skettenis This software and associated documentation (if any) is furnished 9060fee10Skettenis under a license and may only be used or copied in accordance 10060fee10Skettenis with the terms of the license. Except as permitted by such 11060fee10Skettenis license, no part of this software or documentation may be 12060fee10Skettenis reproduced, stored in a retrieval system, or transmitted in any 13060fee10Skettenis form or by any means without the express written consent of 14060fee10Skettenis Intel Corporation. 15060fee10Skettenis 16060fee10Skettenis Module Name: 17060fee10Skettenis 18060fee10Skettenis efiapi.h 19060fee10Skettenis 20060fee10Skettenis Abstract: 21060fee10Skettenis 22060fee10Skettenis Global EFI runtime & boot service interfaces 23060fee10Skettenis 24060fee10Skettenis 25060fee10Skettenis 26060fee10Skettenis 27060fee10Skettenis Revision History 28060fee10Skettenis 29060fee10Skettenis --*/ 30060fee10Skettenis 31060fee10Skettenis // 32060fee10Skettenis // EFI Specification Revision 33060fee10Skettenis // 34060fee10Skettenis 35060fee10Skettenis #define EFI_SPECIFICATION_MAJOR_REVISION 1 36060fee10Skettenis #define EFI_SPECIFICATION_MINOR_REVISION 10 37060fee10Skettenis 38060fee10Skettenis // 39060fee10Skettenis // Declare forward referenced data structures 40060fee10Skettenis // 41060fee10Skettenis 42060fee10Skettenis INTERFACE_DECL(_EFI_SYSTEM_TABLE); 43060fee10Skettenis 44060fee10Skettenis // 45060fee10Skettenis // EFI Memory 46060fee10Skettenis // 47060fee10Skettenis 48060fee10Skettenis typedef 49060fee10Skettenis EFI_STATUS 50060fee10Skettenis (EFIAPI *EFI_ALLOCATE_PAGES) ( 51060fee10Skettenis IN EFI_ALLOCATE_TYPE Type, 52060fee10Skettenis IN EFI_MEMORY_TYPE MemoryType, 53060fee10Skettenis IN UINTN NoPages, 54060fee10Skettenis OUT EFI_PHYSICAL_ADDRESS *Memory 55060fee10Skettenis ); 56060fee10Skettenis 57060fee10Skettenis typedef 58060fee10Skettenis EFI_STATUS 59060fee10Skettenis (EFIAPI *EFI_FREE_PAGES) ( 60060fee10Skettenis IN EFI_PHYSICAL_ADDRESS Memory, 61060fee10Skettenis IN UINTN NoPages 62060fee10Skettenis ); 63060fee10Skettenis 64060fee10Skettenis typedef 65060fee10Skettenis EFI_STATUS 66060fee10Skettenis (EFIAPI *EFI_GET_MEMORY_MAP) ( 67060fee10Skettenis IN OUT UINTN *MemoryMapSize, 68060fee10Skettenis IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, 69060fee10Skettenis OUT UINTN *MapKey, 70060fee10Skettenis OUT UINTN *DescriptorSize, 71060fee10Skettenis OUT UINT32 *DescriptorVersion 72060fee10Skettenis ); 73060fee10Skettenis 74060fee10Skettenis #define NextMemoryDescriptor(Ptr,Size) ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size)) 75060fee10Skettenis 76060fee10Skettenis 77060fee10Skettenis typedef 78060fee10Skettenis EFI_STATUS 79060fee10Skettenis (EFIAPI *EFI_ALLOCATE_POOL) ( 80060fee10Skettenis IN EFI_MEMORY_TYPE PoolType, 81060fee10Skettenis IN UINTN Size, 82060fee10Skettenis OUT VOID **Buffer 83060fee10Skettenis ); 84060fee10Skettenis 85060fee10Skettenis typedef 86060fee10Skettenis EFI_STATUS 87060fee10Skettenis (EFIAPI *EFI_FREE_POOL) ( 88060fee10Skettenis IN VOID *Buffer 89060fee10Skettenis ); 90060fee10Skettenis 91060fee10Skettenis typedef 92060fee10Skettenis EFI_STATUS 93060fee10Skettenis (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) ( 94060fee10Skettenis IN UINTN MemoryMapSize, 95060fee10Skettenis IN UINTN DescriptorSize, 96060fee10Skettenis IN UINT32 DescriptorVersion, 97060fee10Skettenis IN EFI_MEMORY_DESCRIPTOR *VirtualMap 98060fee10Skettenis ); 99060fee10Skettenis 100060fee10Skettenis 101060fee10Skettenis #define EFI_OPTIONAL_PTR 0x00000001 102060fee10Skettenis #define EFI_INTERNAL_FNC 0x00000002 // Pointer to internal runtime fnc 103060fee10Skettenis #define EFI_INTERNAL_PTR 0x00000004 // Pointer to internal runtime data 104060fee10Skettenis 105060fee10Skettenis 106060fee10Skettenis typedef 107060fee10Skettenis EFI_STATUS 108060fee10Skettenis (EFIAPI *EFI_CONVERT_POINTER) ( 109060fee10Skettenis IN UINTN DebugDisposition, 110060fee10Skettenis IN OUT VOID **Address 111060fee10Skettenis ); 112060fee10Skettenis 113060fee10Skettenis 114060fee10Skettenis // 115060fee10Skettenis // EFI Events 116060fee10Skettenis // 117060fee10Skettenis 118060fee10Skettenis 119060fee10Skettenis 120060fee10Skettenis #define EVT_TIMER 0x80000000 121060fee10Skettenis #define EVT_RUNTIME 0x40000000 122060fee10Skettenis #define EVT_RUNTIME_CONTEXT 0x20000000 123060fee10Skettenis 124060fee10Skettenis #define EVT_NOTIFY_WAIT 0x00000100 125060fee10Skettenis #define EVT_NOTIFY_SIGNAL 0x00000200 126060fee10Skettenis 127060fee10Skettenis #define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201 128060fee10Skettenis #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202 129060fee10Skettenis 130060fee10Skettenis #define EVT_EFI_SIGNAL_MASK 0x000000FF 131060fee10Skettenis #define EVT_EFI_SIGNAL_MAX 2 132060fee10Skettenis 133060fee10Skettenis typedef 134060fee10Skettenis VOID 135060fee10Skettenis (EFIAPI *EFI_EVENT_NOTIFY) ( 136060fee10Skettenis IN EFI_EVENT Event, 137060fee10Skettenis IN VOID *Context 138060fee10Skettenis ); 139060fee10Skettenis 140060fee10Skettenis typedef 141060fee10Skettenis EFI_STATUS 142060fee10Skettenis (EFIAPI *EFI_CREATE_EVENT) ( 143060fee10Skettenis IN UINT32 Type, 144060fee10Skettenis IN EFI_TPL NotifyTpl, 145060fee10Skettenis IN EFI_EVENT_NOTIFY NotifyFunction, 146060fee10Skettenis IN VOID *NotifyContext, 147060fee10Skettenis OUT EFI_EVENT *Event 148060fee10Skettenis ); 149060fee10Skettenis 150060fee10Skettenis typedef enum { 151060fee10Skettenis TimerCancel, 152060fee10Skettenis TimerPeriodic, 153060fee10Skettenis TimerRelative, 154060fee10Skettenis TimerTypeMax 155060fee10Skettenis } EFI_TIMER_DELAY; 156060fee10Skettenis 157060fee10Skettenis typedef 158060fee10Skettenis EFI_STATUS 159060fee10Skettenis (EFIAPI *EFI_SET_TIMER) ( 160060fee10Skettenis IN EFI_EVENT Event, 161060fee10Skettenis IN EFI_TIMER_DELAY Type, 162060fee10Skettenis IN UINT64 TriggerTime 163060fee10Skettenis ); 164060fee10Skettenis 165060fee10Skettenis typedef 166060fee10Skettenis EFI_STATUS 167060fee10Skettenis (EFIAPI *EFI_SIGNAL_EVENT) ( 168060fee10Skettenis IN EFI_EVENT Event 169060fee10Skettenis ); 170060fee10Skettenis 171060fee10Skettenis typedef 172060fee10Skettenis EFI_STATUS 173060fee10Skettenis (EFIAPI *EFI_WAIT_FOR_EVENT) ( 174060fee10Skettenis IN UINTN NumberOfEvents, 175060fee10Skettenis IN EFI_EVENT *Event, 176060fee10Skettenis OUT UINTN *Index 177060fee10Skettenis ); 178060fee10Skettenis 179060fee10Skettenis typedef 180060fee10Skettenis EFI_STATUS 181060fee10Skettenis (EFIAPI *EFI_CLOSE_EVENT) ( 182060fee10Skettenis IN EFI_EVENT Event 183060fee10Skettenis ); 184060fee10Skettenis 185060fee10Skettenis typedef 186060fee10Skettenis EFI_STATUS 187060fee10Skettenis (EFIAPI *EFI_CHECK_EVENT) ( 188060fee10Skettenis IN EFI_EVENT Event 189060fee10Skettenis ); 190060fee10Skettenis 191060fee10Skettenis // 192060fee10Skettenis // Task priority level 193060fee10Skettenis // 194060fee10Skettenis 195060fee10Skettenis #define TPL_APPLICATION 4 196060fee10Skettenis #define TPL_CALLBACK 8 197060fee10Skettenis #define TPL_NOTIFY 16 198060fee10Skettenis #define TPL_HIGH_LEVEL 31 199060fee10Skettenis 200060fee10Skettenis typedef 201060fee10Skettenis EFI_TPL 202060fee10Skettenis (EFIAPI *EFI_RAISE_TPL) ( 203060fee10Skettenis IN EFI_TPL NewTpl 204060fee10Skettenis ); 205060fee10Skettenis 206060fee10Skettenis typedef 207060fee10Skettenis VOID 208060fee10Skettenis (EFIAPI *EFI_RESTORE_TPL) ( 209060fee10Skettenis IN EFI_TPL OldTpl 210060fee10Skettenis ); 211060fee10Skettenis 212060fee10Skettenis 213060fee10Skettenis // 214*9593dc34Smglocker // EFI platform variables 215060fee10Skettenis // 216060fee10Skettenis 217060fee10Skettenis #define EFI_GLOBAL_VARIABLE \ 218aa2a8ca5Sjsg { 0x8BE4DF61, 0x93CA, 0x11d2, { 0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C } } 219060fee10Skettenis 220060fee10Skettenis // Variable attributes 221060fee10Skettenis #define EFI_VARIABLE_NON_VOLATILE 0x00000001 222060fee10Skettenis #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 223060fee10Skettenis #define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 224060fee10Skettenis 225060fee10Skettenis // Variable size limitation 226060fee10Skettenis #define EFI_MAXIMUM_VARIABLE_SIZE 1024 227060fee10Skettenis 228060fee10Skettenis typedef 229060fee10Skettenis EFI_STATUS 230060fee10Skettenis (EFIAPI *EFI_GET_VARIABLE) ( 231060fee10Skettenis IN CHAR16 *VariableName, 232060fee10Skettenis IN EFI_GUID *VendorGuid, 233060fee10Skettenis OUT UINT32 *Attributes OPTIONAL, 234060fee10Skettenis IN OUT UINTN *DataSize, 235060fee10Skettenis OUT VOID *Data 236060fee10Skettenis ); 237060fee10Skettenis 238060fee10Skettenis typedef 239060fee10Skettenis EFI_STATUS 240060fee10Skettenis (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) ( 241060fee10Skettenis IN OUT UINTN *VariableNameSize, 242060fee10Skettenis IN OUT CHAR16 *VariableName, 243060fee10Skettenis IN OUT EFI_GUID *VendorGuid 244060fee10Skettenis ); 245060fee10Skettenis 246060fee10Skettenis 247060fee10Skettenis typedef 248060fee10Skettenis EFI_STATUS 249060fee10Skettenis (EFIAPI *EFI_SET_VARIABLE) ( 250060fee10Skettenis IN CHAR16 *VariableName, 251060fee10Skettenis IN EFI_GUID *VendorGuid, 252060fee10Skettenis IN UINT32 Attributes, 253060fee10Skettenis IN UINTN DataSize, 254060fee10Skettenis IN VOID *Data 255060fee10Skettenis ); 256060fee10Skettenis 257060fee10Skettenis 258060fee10Skettenis // 259060fee10Skettenis // EFI Time 260060fee10Skettenis // 261060fee10Skettenis 262060fee10Skettenis typedef struct { 263060fee10Skettenis UINT32 Resolution; // 1e-6 parts per million 264060fee10Skettenis UINT32 Accuracy; // hertz 265060fee10Skettenis BOOLEAN SetsToZero; // Set clears sub-second time 266060fee10Skettenis } EFI_TIME_CAPABILITIES; 267060fee10Skettenis 268060fee10Skettenis 269060fee10Skettenis typedef 270060fee10Skettenis EFI_STATUS 271060fee10Skettenis (EFIAPI *EFI_GET_TIME) ( 272060fee10Skettenis OUT EFI_TIME *Time, 273060fee10Skettenis OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL 274060fee10Skettenis ); 275060fee10Skettenis 276060fee10Skettenis typedef 277060fee10Skettenis EFI_STATUS 278060fee10Skettenis (EFIAPI *EFI_SET_TIME) ( 279060fee10Skettenis IN EFI_TIME *Time 280060fee10Skettenis ); 281060fee10Skettenis 282060fee10Skettenis typedef 283060fee10Skettenis EFI_STATUS 284060fee10Skettenis (EFIAPI *EFI_GET_WAKEUP_TIME) ( 285060fee10Skettenis OUT BOOLEAN *Enabled, 286060fee10Skettenis OUT BOOLEAN *Pending, 287060fee10Skettenis OUT EFI_TIME *Time 288060fee10Skettenis ); 289060fee10Skettenis 290060fee10Skettenis typedef 291060fee10Skettenis EFI_STATUS 292060fee10Skettenis (EFIAPI *EFI_SET_WAKEUP_TIME) ( 293060fee10Skettenis IN BOOLEAN Enable, 294060fee10Skettenis IN EFI_TIME *Time OPTIONAL 295060fee10Skettenis ); 296060fee10Skettenis 297060fee10Skettenis 298060fee10Skettenis // 299060fee10Skettenis // Image functions 300060fee10Skettenis // 301060fee10Skettenis 302060fee10Skettenis 303060fee10Skettenis // PE32+ Subsystem type for EFI images 304060fee10Skettenis 305060fee10Skettenis #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION) 306060fee10Skettenis #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 307060fee10Skettenis #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 308060fee10Skettenis #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 309060fee10Skettenis #endif 310060fee10Skettenis 311060fee10Skettenis // PE32+ Machine type for EFI images 312060fee10Skettenis 313060fee10Skettenis #if !defined(EFI_IMAGE_MACHINE_IA32) 314060fee10Skettenis #define EFI_IMAGE_MACHINE_IA32 0x014c 315060fee10Skettenis #endif 316060fee10Skettenis 317060fee10Skettenis #if !defined(EFI_IMAGE_MACHINE_EBC) 318060fee10Skettenis #define EFI_IMAGE_MACHINE_EBC 0x0EBC 319060fee10Skettenis #endif 320060fee10Skettenis 321060fee10Skettenis // Image Entry prototype 322060fee10Skettenis 323060fee10Skettenis typedef 324060fee10Skettenis EFI_STATUS 325060fee10Skettenis (EFIAPI *EFI_IMAGE_ENTRY_POINT) ( 326060fee10Skettenis IN EFI_HANDLE ImageHandle, 327060fee10Skettenis IN struct _EFI_SYSTEM_TABLE *SystemTable 328060fee10Skettenis ); 329060fee10Skettenis 330060fee10Skettenis typedef 331060fee10Skettenis EFI_STATUS 332060fee10Skettenis (EFIAPI *EFI_IMAGE_LOAD) ( 333060fee10Skettenis IN BOOLEAN BootPolicy, 334060fee10Skettenis IN EFI_HANDLE ParentImageHandle, 335060fee10Skettenis IN EFI_DEVICE_PATH *FilePath, 336060fee10Skettenis IN VOID *SourceBuffer OPTIONAL, 337060fee10Skettenis IN UINTN SourceSize, 338060fee10Skettenis OUT EFI_HANDLE *ImageHandle 339060fee10Skettenis ); 340060fee10Skettenis 341060fee10Skettenis typedef 342060fee10Skettenis EFI_STATUS 343060fee10Skettenis (EFIAPI *EFI_IMAGE_START) ( 344060fee10Skettenis IN EFI_HANDLE ImageHandle, 345060fee10Skettenis OUT UINTN *ExitDataSize, 346060fee10Skettenis OUT CHAR16 **ExitData OPTIONAL 347060fee10Skettenis ); 348060fee10Skettenis 349060fee10Skettenis typedef 350060fee10Skettenis EFI_STATUS 351060fee10Skettenis (EFIAPI *EFI_EXIT) ( 352060fee10Skettenis IN EFI_HANDLE ImageHandle, 353060fee10Skettenis IN EFI_STATUS ExitStatus, 354060fee10Skettenis IN UINTN ExitDataSize, 355060fee10Skettenis IN CHAR16 *ExitData OPTIONAL 356060fee10Skettenis ); 357060fee10Skettenis 358060fee10Skettenis typedef 359060fee10Skettenis EFI_STATUS 360060fee10Skettenis (EFIAPI *EFI_IMAGE_UNLOAD) ( 361060fee10Skettenis IN EFI_HANDLE ImageHandle 362060fee10Skettenis ); 363060fee10Skettenis 364060fee10Skettenis 365060fee10Skettenis // Image handle 366060fee10Skettenis #define LOADED_IMAGE_PROTOCOL \ 367060fee10Skettenis { 0x5B1B31A1, 0x9562, 0x11d2, { 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B } } 368060fee10Skettenis 369060fee10Skettenis #define EFI_LOADED_IMAGE_INFORMATION_REVISION 0x1000 370060fee10Skettenis typedef struct { 371060fee10Skettenis UINT32 Revision; 372060fee10Skettenis EFI_HANDLE ParentHandle; 373060fee10Skettenis struct _EFI_SYSTEM_TABLE *SystemTable; 374060fee10Skettenis 375060fee10Skettenis // Source location of image 376060fee10Skettenis EFI_HANDLE DeviceHandle; 377060fee10Skettenis EFI_DEVICE_PATH *FilePath; 378060fee10Skettenis VOID *Reserved; 379060fee10Skettenis 380060fee10Skettenis // Images load options 381060fee10Skettenis UINT32 LoadOptionsSize; 382060fee10Skettenis VOID *LoadOptions; 383060fee10Skettenis 384060fee10Skettenis // Location of where image was loaded 385060fee10Skettenis VOID *ImageBase; 386060fee10Skettenis UINT64 ImageSize; 387060fee10Skettenis EFI_MEMORY_TYPE ImageCodeType; 388060fee10Skettenis EFI_MEMORY_TYPE ImageDataType; 389060fee10Skettenis 390060fee10Skettenis // If the driver image supports a dynamic unload request 391060fee10Skettenis EFI_IMAGE_UNLOAD Unload; 392060fee10Skettenis 393060fee10Skettenis } EFI_LOADED_IMAGE; 394060fee10Skettenis 395060fee10Skettenis 396060fee10Skettenis typedef 397060fee10Skettenis EFI_STATUS 398060fee10Skettenis (EFIAPI *EFI_EXIT_BOOT_SERVICES) ( 399060fee10Skettenis IN EFI_HANDLE ImageHandle, 400060fee10Skettenis IN UINTN MapKey 401060fee10Skettenis ); 402060fee10Skettenis 403060fee10Skettenis // 404060fee10Skettenis // Misc 405060fee10Skettenis // 406060fee10Skettenis 407060fee10Skettenis 408060fee10Skettenis typedef 409060fee10Skettenis EFI_STATUS 410060fee10Skettenis (EFIAPI *EFI_STALL) ( 411060fee10Skettenis IN UINTN Microseconds 412060fee10Skettenis ); 413060fee10Skettenis 414060fee10Skettenis typedef 415060fee10Skettenis EFI_STATUS 416060fee10Skettenis (EFIAPI *EFI_SET_WATCHDOG_TIMER) ( 417060fee10Skettenis IN UINTN Timeout, 418060fee10Skettenis IN UINT64 WatchdogCode, 419060fee10Skettenis IN UINTN DataSize, 420060fee10Skettenis IN CHAR16 *WatchdogData OPTIONAL 421060fee10Skettenis ); 422060fee10Skettenis 423060fee10Skettenis 424060fee10Skettenis typedef enum { 425060fee10Skettenis EfiResetCold, 426060fee10Skettenis EfiResetWarm, 427060fee10Skettenis EfiResetShutdown 428060fee10Skettenis } EFI_RESET_TYPE; 429060fee10Skettenis 430060fee10Skettenis typedef 431060fee10Skettenis VOID 432060fee10Skettenis (EFIAPI *EFI_RESET_SYSTEM) ( 433060fee10Skettenis IN EFI_RESET_TYPE ResetType, 434060fee10Skettenis IN EFI_STATUS ResetStatus, 435060fee10Skettenis IN UINTN DataSize, 436060fee10Skettenis IN CHAR16 *ResetData OPTIONAL 437060fee10Skettenis ); 438060fee10Skettenis 439060fee10Skettenis typedef 440060fee10Skettenis EFI_STATUS 441060fee10Skettenis (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) ( 442060fee10Skettenis OUT UINT64 *Count 443060fee10Skettenis ); 444060fee10Skettenis 445060fee10Skettenis typedef 446060fee10Skettenis EFI_STATUS 447060fee10Skettenis (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) ( 448060fee10Skettenis OUT UINT32 *HighCount 449060fee10Skettenis ); 450060fee10Skettenis 451060fee10Skettenis // 452060fee10Skettenis // Protocol handler functions 453060fee10Skettenis // 454060fee10Skettenis 455060fee10Skettenis typedef enum { 456060fee10Skettenis EFI_NATIVE_INTERFACE 457060fee10Skettenis } EFI_INTERFACE_TYPE; 458060fee10Skettenis 459060fee10Skettenis typedef 460060fee10Skettenis EFI_STATUS 461060fee10Skettenis (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) ( 462060fee10Skettenis IN OUT EFI_HANDLE *Handle, 463060fee10Skettenis IN EFI_GUID *Protocol, 464060fee10Skettenis IN EFI_INTERFACE_TYPE InterfaceType, 465060fee10Skettenis IN VOID *Interface 466060fee10Skettenis ); 467060fee10Skettenis 468060fee10Skettenis typedef 469060fee10Skettenis EFI_STATUS 470060fee10Skettenis (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) ( 471060fee10Skettenis IN EFI_HANDLE Handle, 472060fee10Skettenis IN EFI_GUID *Protocol, 473060fee10Skettenis IN VOID *OldInterface, 474060fee10Skettenis IN VOID *NewInterface 475060fee10Skettenis ); 476060fee10Skettenis 477060fee10Skettenis typedef 478060fee10Skettenis EFI_STATUS 479060fee10Skettenis (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) ( 480060fee10Skettenis IN EFI_HANDLE Handle, 481060fee10Skettenis IN EFI_GUID *Protocol, 482060fee10Skettenis IN VOID *Interface 483060fee10Skettenis ); 484060fee10Skettenis 485060fee10Skettenis typedef 486060fee10Skettenis EFI_STATUS 487060fee10Skettenis (EFIAPI *EFI_HANDLE_PROTOCOL) ( 488060fee10Skettenis IN EFI_HANDLE Handle, 489060fee10Skettenis IN EFI_GUID *Protocol, 490060fee10Skettenis OUT VOID **Interface 491060fee10Skettenis ); 492060fee10Skettenis 493060fee10Skettenis typedef 494060fee10Skettenis EFI_STATUS 495060fee10Skettenis (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) ( 496060fee10Skettenis IN EFI_GUID *Protocol, 497060fee10Skettenis IN EFI_EVENT Event, 498060fee10Skettenis OUT VOID **Registration 499060fee10Skettenis ); 500060fee10Skettenis 501060fee10Skettenis typedef enum { 502060fee10Skettenis AllHandles, 503060fee10Skettenis ByRegisterNotify, 504060fee10Skettenis ByProtocol 505060fee10Skettenis } EFI_LOCATE_SEARCH_TYPE; 506060fee10Skettenis 507060fee10Skettenis typedef 508060fee10Skettenis EFI_STATUS 509060fee10Skettenis (EFIAPI *EFI_LOCATE_HANDLE) ( 510060fee10Skettenis IN EFI_LOCATE_SEARCH_TYPE SearchType, 511060fee10Skettenis IN EFI_GUID *Protocol OPTIONAL, 512060fee10Skettenis IN VOID *SearchKey OPTIONAL, 513060fee10Skettenis IN OUT UINTN *BufferSize, 514060fee10Skettenis OUT EFI_HANDLE *Buffer 515060fee10Skettenis ); 516060fee10Skettenis 517060fee10Skettenis typedef 518060fee10Skettenis EFI_STATUS 519060fee10Skettenis (EFIAPI *EFI_LOCATE_DEVICE_PATH) ( 520060fee10Skettenis IN EFI_GUID *Protocol, 521060fee10Skettenis IN OUT EFI_DEVICE_PATH **DevicePath, 522060fee10Skettenis OUT EFI_HANDLE *Device 523060fee10Skettenis ); 524060fee10Skettenis 525060fee10Skettenis typedef 526060fee10Skettenis EFI_STATUS 527060fee10Skettenis (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) ( 528060fee10Skettenis IN EFI_GUID *Guid, 529060fee10Skettenis IN VOID *Table 530060fee10Skettenis ); 531060fee10Skettenis 532060fee10Skettenis typedef 533060fee10Skettenis EFI_STATUS 534060fee10Skettenis (EFIAPI *EFI_RESERVED_SERVICE) ( 535060fee10Skettenis ); 536060fee10Skettenis 537060fee10Skettenis typedef 538060fee10Skettenis EFI_STATUS 539060fee10Skettenis (EFIAPI *EFI_CONNECT_CONTROLLER) ( 540060fee10Skettenis IN EFI_HANDLE ControllerHandle, 541060fee10Skettenis IN EFI_HANDLE *DriverImageHandle OPTIONAL, 542060fee10Skettenis IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL, 543060fee10Skettenis IN BOOLEAN Recursive 544060fee10Skettenis ); 545060fee10Skettenis 546060fee10Skettenis typedef 547060fee10Skettenis EFI_STATUS 548060fee10Skettenis (EFIAPI *EFI_DISCONNECT_CONTROLLER)( 549060fee10Skettenis IN EFI_HANDLE ControllerHandle, 550060fee10Skettenis IN EFI_HANDLE DriverImageHandle, OPTIONAL 551060fee10Skettenis IN EFI_HANDLE ChildHandle OPTIONAL 552060fee10Skettenis ); 553060fee10Skettenis 554060fee10Skettenis #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001 555060fee10Skettenis #define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002 556060fee10Skettenis #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004 557060fee10Skettenis #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008 558060fee10Skettenis #define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010 559060fee10Skettenis #define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020 560060fee10Skettenis 561060fee10Skettenis typedef 562060fee10Skettenis EFI_STATUS 563060fee10Skettenis (EFIAPI *EFI_OPEN_PROTOCOL) ( 564060fee10Skettenis IN EFI_HANDLE Handle, 565060fee10Skettenis IN EFI_GUID *Protocol, 566060fee10Skettenis OUT VOID **Interface, 567060fee10Skettenis IN EFI_HANDLE ImageHandle, 568060fee10Skettenis IN EFI_HANDLE ControllerHandle, OPTIONAL 569060fee10Skettenis IN UINT32 Attributes 570060fee10Skettenis ); 571060fee10Skettenis 572060fee10Skettenis typedef 573060fee10Skettenis EFI_STATUS 574060fee10Skettenis (EFIAPI *EFI_CLOSE_PROTOCOL) ( 575060fee10Skettenis IN EFI_HANDLE Handle, 576060fee10Skettenis IN EFI_GUID *Protocol, 577060fee10Skettenis IN EFI_HANDLE ImageHandle, 578060fee10Skettenis IN EFI_HANDLE DeviceHandle 579060fee10Skettenis ); 580060fee10Skettenis 581060fee10Skettenis typedef struct { 582060fee10Skettenis EFI_HANDLE AgentHandle; 583060fee10Skettenis EFI_HANDLE ControllerHandle; 584060fee10Skettenis UINT32 Attributes; 585060fee10Skettenis UINT32 OpenCount; 586060fee10Skettenis } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY; 587060fee10Skettenis 588060fee10Skettenis typedef 589060fee10Skettenis EFI_STATUS 590060fee10Skettenis (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) ( 591060fee10Skettenis IN EFI_HANDLE UserHandle, 592060fee10Skettenis IN EFI_GUID *Protocol, 593060fee10Skettenis IN EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, 594060fee10Skettenis OUT UINTN *EntryCount 595060fee10Skettenis ); 596060fee10Skettenis 597060fee10Skettenis typedef 598060fee10Skettenis EFI_STATUS 599060fee10Skettenis (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) ( 600060fee10Skettenis IN EFI_HANDLE UserHandle, 601060fee10Skettenis OUT EFI_GUID ***ProtocolBuffer, 602060fee10Skettenis OUT UINTN *ProtocolBufferCount 603060fee10Skettenis ); 604060fee10Skettenis 605060fee10Skettenis typedef 606060fee10Skettenis EFI_STATUS 607060fee10Skettenis (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) ( 608060fee10Skettenis IN EFI_LOCATE_SEARCH_TYPE SearchType, 609060fee10Skettenis IN EFI_GUID *Protocol OPTIONAL, 610060fee10Skettenis IN VOID *SearchKey OPTIONAL, 611060fee10Skettenis IN OUT UINTN *NumberHandles, 612060fee10Skettenis OUT EFI_HANDLE **Buffer 613060fee10Skettenis ); 614060fee10Skettenis 615060fee10Skettenis typedef 616060fee10Skettenis EFI_STATUS 617060fee10Skettenis (EFIAPI *EFI_LOCATE_PROTOCOL) ( 618060fee10Skettenis EFI_GUID *Protocol, 619060fee10Skettenis VOID *Registration, OPTIONAL 620060fee10Skettenis VOID **Interface 621060fee10Skettenis ); 622060fee10Skettenis 623060fee10Skettenis typedef 624060fee10Skettenis EFI_STATUS 625060fee10Skettenis (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( 626060fee10Skettenis IN OUT EFI_HANDLE *Handle, 627060fee10Skettenis ... 628060fee10Skettenis ); 629060fee10Skettenis 630060fee10Skettenis typedef 631060fee10Skettenis EFI_STATUS 632060fee10Skettenis (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( 633060fee10Skettenis IN EFI_HANDLE Handle, 634060fee10Skettenis ... 635060fee10Skettenis ); 636060fee10Skettenis 637060fee10Skettenis typedef 638060fee10Skettenis EFI_STATUS 639060fee10Skettenis (EFIAPI *EFI_CALCULATE_CRC32) ( 640060fee10Skettenis IN VOID *Data, 641060fee10Skettenis IN UINTN DataSize, 642060fee10Skettenis OUT UINT32 *Crc32 643060fee10Skettenis ); 644060fee10Skettenis 645060fee10Skettenis typedef 646060fee10Skettenis VOID 647060fee10Skettenis (EFIAPI *EFI_COPY_MEM) ( 648060fee10Skettenis IN VOID *Destination, 649060fee10Skettenis IN VOID *Source, 650060fee10Skettenis IN UINTN Length 651060fee10Skettenis ); 652060fee10Skettenis 653060fee10Skettenis typedef 654060fee10Skettenis VOID 655060fee10Skettenis (EFIAPI *EFI_SET_MEM) ( 656060fee10Skettenis IN VOID *Buffer, 657060fee10Skettenis IN UINTN Size, 658060fee10Skettenis IN UINT8 Value 659060fee10Skettenis ); 660060fee10Skettenis 661060fee10Skettenis // 662060fee10Skettenis // Standard EFI table header 663060fee10Skettenis // 664060fee10Skettenis 665060fee10Skettenis typedef struct _EFI_TABLE_HEARDER { 666060fee10Skettenis UINT64 Signature; 667060fee10Skettenis UINT32 Revision; 668060fee10Skettenis UINT32 HeaderSize; 669060fee10Skettenis UINT32 CRC32; 670060fee10Skettenis UINT32 Reserved; 671060fee10Skettenis } EFI_TABLE_HEADER; 672060fee10Skettenis 673060fee10Skettenis 674060fee10Skettenis // 675*9593dc34Smglocker // EFI Runtime Services Table 676060fee10Skettenis // 677060fee10Skettenis 678060fee10Skettenis #define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552 679060fee10Skettenis #define EFI_RUNTIME_SERVICES_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)) 680060fee10Skettenis 681060fee10Skettenis typedef struct { 682060fee10Skettenis EFI_TABLE_HEADER Hdr; 683060fee10Skettenis 684060fee10Skettenis // 685060fee10Skettenis // Time services 686060fee10Skettenis // 687060fee10Skettenis 688060fee10Skettenis EFI_GET_TIME GetTime; 689060fee10Skettenis EFI_SET_TIME SetTime; 690060fee10Skettenis EFI_GET_WAKEUP_TIME GetWakeupTime; 691060fee10Skettenis EFI_SET_WAKEUP_TIME SetWakeupTime; 692060fee10Skettenis 693060fee10Skettenis // 694060fee10Skettenis // Virtual memory services 695060fee10Skettenis // 696060fee10Skettenis 697060fee10Skettenis EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap; 698060fee10Skettenis EFI_CONVERT_POINTER ConvertPointer; 699060fee10Skettenis 700060fee10Skettenis // 701060fee10Skettenis // Variable serviers 702060fee10Skettenis // 703060fee10Skettenis 704060fee10Skettenis EFI_GET_VARIABLE GetVariable; 705060fee10Skettenis EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName; 706060fee10Skettenis EFI_SET_VARIABLE SetVariable; 707060fee10Skettenis 708060fee10Skettenis // 709060fee10Skettenis // Misc 710060fee10Skettenis // 711060fee10Skettenis 712060fee10Skettenis EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount; 713060fee10Skettenis EFI_RESET_SYSTEM ResetSystem; 714060fee10Skettenis 715060fee10Skettenis } EFI_RUNTIME_SERVICES; 716060fee10Skettenis 717060fee10Skettenis 718060fee10Skettenis // 719060fee10Skettenis // EFI Boot Services Table 720060fee10Skettenis // 721060fee10Skettenis 722060fee10Skettenis #define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42 723060fee10Skettenis #define EFI_BOOT_SERVICES_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)) 724060fee10Skettenis 725060fee10Skettenis typedef struct { 726060fee10Skettenis 727060fee10Skettenis EFI_TABLE_HEADER Hdr; 728060fee10Skettenis 729060fee10Skettenis // 730060fee10Skettenis // Task priority functions 731060fee10Skettenis // 732060fee10Skettenis 733060fee10Skettenis EFI_RAISE_TPL RaiseTPL; 734060fee10Skettenis EFI_RESTORE_TPL RestoreTPL; 735060fee10Skettenis 736060fee10Skettenis // 737060fee10Skettenis // Memory functions 738060fee10Skettenis // 739060fee10Skettenis 740060fee10Skettenis EFI_ALLOCATE_PAGES AllocatePages; 741060fee10Skettenis EFI_FREE_PAGES FreePages; 742060fee10Skettenis EFI_GET_MEMORY_MAP GetMemoryMap; 743060fee10Skettenis EFI_ALLOCATE_POOL AllocatePool; 744060fee10Skettenis EFI_FREE_POOL FreePool; 745060fee10Skettenis 746060fee10Skettenis // 747060fee10Skettenis // Event & timer functions 748060fee10Skettenis // 749060fee10Skettenis 750060fee10Skettenis EFI_CREATE_EVENT CreateEvent; 751060fee10Skettenis EFI_SET_TIMER SetTimer; 752060fee10Skettenis EFI_WAIT_FOR_EVENT WaitForEvent; 753060fee10Skettenis EFI_SIGNAL_EVENT SignalEvent; 754060fee10Skettenis EFI_CLOSE_EVENT CloseEvent; 755060fee10Skettenis EFI_CHECK_EVENT CheckEvent; 756060fee10Skettenis 757060fee10Skettenis // 758060fee10Skettenis // Protocol handler functions 759060fee10Skettenis // 760060fee10Skettenis 761060fee10Skettenis EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface; 762060fee10Skettenis EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface; 763060fee10Skettenis EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface; 764060fee10Skettenis EFI_HANDLE_PROTOCOL HandleProtocol; 765060fee10Skettenis VOID *Reserved; 766060fee10Skettenis EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify; 767060fee10Skettenis EFI_LOCATE_HANDLE LocateHandle; 768060fee10Skettenis EFI_LOCATE_DEVICE_PATH LocateDevicePath; 769060fee10Skettenis EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable; 770060fee10Skettenis 771060fee10Skettenis // 772060fee10Skettenis // Image functions 773060fee10Skettenis // 774060fee10Skettenis 775060fee10Skettenis EFI_IMAGE_LOAD LoadImage; 776060fee10Skettenis EFI_IMAGE_START StartImage; 777060fee10Skettenis EFI_EXIT Exit; 778060fee10Skettenis EFI_IMAGE_UNLOAD UnloadImage; 779060fee10Skettenis EFI_EXIT_BOOT_SERVICES ExitBootServices; 780060fee10Skettenis 781060fee10Skettenis // 782060fee10Skettenis // Misc functions 783060fee10Skettenis // 784060fee10Skettenis 785060fee10Skettenis EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; 786060fee10Skettenis EFI_STALL Stall; 787060fee10Skettenis EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; 788060fee10Skettenis 789060fee10Skettenis // 790060fee10Skettenis // DriverSupport Services 791060fee10Skettenis // 792060fee10Skettenis EFI_CONNECT_CONTROLLER ConnectController; 793060fee10Skettenis EFI_DISCONNECT_CONTROLLER DisconnectController; 794060fee10Skettenis 795060fee10Skettenis // 796060fee10Skettenis // Open and Close Protocol Services 797060fee10Skettenis // 798060fee10Skettenis EFI_OPEN_PROTOCOL OpenProtocol; 799060fee10Skettenis EFI_CLOSE_PROTOCOL CloseProtocol; 800060fee10Skettenis EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation; 801060fee10Skettenis 802060fee10Skettenis // 803060fee10Skettenis // Library Services to reduce size of drivers 804060fee10Skettenis // 805060fee10Skettenis EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle; 806060fee10Skettenis EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer; 807060fee10Skettenis EFI_LOCATE_PROTOCOL LocateProtocol; 808060fee10Skettenis 809060fee10Skettenis EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces; 810060fee10Skettenis EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces; 811060fee10Skettenis 812060fee10Skettenis // 813060fee10Skettenis // CRC32 services 814060fee10Skettenis // 815060fee10Skettenis EFI_CALCULATE_CRC32 CalculateCrc32; 816060fee10Skettenis 817060fee10Skettenis // 818060fee10Skettenis // Memory Utility Services 819060fee10Skettenis // 820060fee10Skettenis EFI_COPY_MEM CopyMem; 821060fee10Skettenis EFI_SET_MEM SetMem; 822060fee10Skettenis 823060fee10Skettenis } EFI_BOOT_SERVICES; 824060fee10Skettenis 825060fee10Skettenis 826060fee10Skettenis // 827060fee10Skettenis // EFI Configuration Table and GUID definitions 828060fee10Skettenis // 829060fee10Skettenis 830060fee10Skettenis #define MPS_TABLE_GUID \ 831060fee10Skettenis { 0xeb9d2d2f, 0x2d88, 0x11d3, \ 832060fee10Skettenis { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } } 833060fee10Skettenis 834060fee10Skettenis #define ACPI_TABLE_GUID \ 835060fee10Skettenis { 0xeb9d2d30, 0x2d88, 0x11d3, \ 836060fee10Skettenis { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } } 837060fee10Skettenis 838060fee10Skettenis #define ACPI_20_TABLE_GUID \ 839060fee10Skettenis { 0x8868e871, 0xe4f1, 0x11d3, \ 840060fee10Skettenis { 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } } 841060fee10Skettenis 842060fee10Skettenis #define SMBIOS_TABLE_GUID \ 843060fee10Skettenis { 0xeb9d2d31, 0x2d88, 0x11d3, \ 844060fee10Skettenis { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } } 845060fee10Skettenis 8464befd8f0Spatrick #define SMBIOS3_TABLE_GUID \ 8474befd8f0Spatrick { 0xf2fd1544, 0x9794, 0x4a2c, \ 8484befd8f0Spatrick { 0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94 } } 8494befd8f0Spatrick 850060fee10Skettenis #define SAL_SYSTEM_TABLE_GUID \ 851060fee10Skettenis { 0xeb9d2d32, 0x2d88, 0x11d3, \ 852060fee10Skettenis { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } } 853060fee10Skettenis 854060fee10Skettenis #define FDT_TABLE_GUID \ 855060fee10Skettenis { 0xb1b621d5, 0xf19c, 0x41a5, \ 856060fee10Skettenis { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } } 857060fee10Skettenis 858060fee10Skettenis #define DXE_SERVICES_TABLE_GUID \ 859060fee10Skettenis { 0x5ad34ba, 0x6f02, 0x4214, \ 860060fee10Skettenis { 0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9 } } 861060fee10Skettenis 862060fee10Skettenis #define HOB_LIST_TABLE_GUID \ 863060fee10Skettenis { 0x7739f24c, 0x93d7, 0x11d4, \ 864060fee10Skettenis { 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } } 865060fee10Skettenis 866060fee10Skettenis #define MEMORY_TYPE_INFORMATION_TABLE_GUID \ 867060fee10Skettenis { 0x4c19049f, 0x4137, 0x4dd3, \ 868060fee10Skettenis { 0x9c, 0x10, 0x8b, 0x97, 0xa8, 0x3f, 0xfd, 0xfa } } 869060fee10Skettenis 870060fee10Skettenis #define DEBUG_IMAGE_INFO_TABLE_GUID \ 871060fee10Skettenis { 0x49152e77, 0x1ada, 0x4764, \ 872060fee10Skettenis { 0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b } } 873060fee10Skettenis 8748584df4eSkettenis #define EFI_SYSTEM_RESOURCE_TABLE_GUID \ 8758584df4eSkettenis { 0xb122a263, 0x3661, 0x4f68, \ 8768584df4eSkettenis { 0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80 } } 8778584df4eSkettenis 878060fee10Skettenis typedef struct _EFI_CONFIGURATION_TABLE { 879060fee10Skettenis EFI_GUID VendorGuid; 880060fee10Skettenis VOID *VendorTable; 881060fee10Skettenis } EFI_CONFIGURATION_TABLE; 882060fee10Skettenis 883060fee10Skettenis 884060fee10Skettenis // 885060fee10Skettenis // EFI System Table 886060fee10Skettenis // 887060fee10Skettenis 888060fee10Skettenis 889060fee10Skettenis 890060fee10Skettenis 891060fee10Skettenis #define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249 892060fee10Skettenis #define EFI_SYSTEM_TABLE_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)) 893060fee10Skettenis #define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | 10) 894060fee10Skettenis #define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | 02) 895060fee10Skettenis 896060fee10Skettenis typedef struct _EFI_SYSTEM_TABLE { 897060fee10Skettenis EFI_TABLE_HEADER Hdr; 898060fee10Skettenis 899060fee10Skettenis CHAR16 *FirmwareVendor; 900060fee10Skettenis UINT32 FirmwareRevision; 901060fee10Skettenis 902060fee10Skettenis EFI_HANDLE ConsoleInHandle; 903060fee10Skettenis SIMPLE_INPUT_INTERFACE *ConIn; 904060fee10Skettenis 905060fee10Skettenis EFI_HANDLE ConsoleOutHandle; 906060fee10Skettenis SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut; 907060fee10Skettenis 908060fee10Skettenis EFI_HANDLE StandardErrorHandle; 909060fee10Skettenis SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr; 910060fee10Skettenis 911060fee10Skettenis EFI_RUNTIME_SERVICES *RuntimeServices; 912060fee10Skettenis EFI_BOOT_SERVICES *BootServices; 913060fee10Skettenis 914060fee10Skettenis UINTN NumberOfTableEntries; 915060fee10Skettenis EFI_CONFIGURATION_TABLE *ConfigurationTable; 916060fee10Skettenis 917060fee10Skettenis } EFI_SYSTEM_TABLE; 918060fee10Skettenis 9198584df4eSkettenis // 9208584df4eSkettenis // EFI System Resource Table 9218584df4eSkettenis // 9228584df4eSkettenis 9238584df4eSkettenis typedef struct _EFI_SYSTEM_RESOURCE_TABLE { 9248584df4eSkettenis UINT32 FwResourceCount; 9258584df4eSkettenis UINT32 FwResourceCountMax; 9268584df4eSkettenis UINT64 FwResourceVersion; 9278584df4eSkettenis //EFI_SYSTEM_RESOURCE_ENTRY Entries[]; 9288584df4eSkettenis } EFI_SYSTEM_RESOURCE_TABLE; 9298584df4eSkettenis 9308584df4eSkettenis #define EFI_SYSTEM_RESOURCE_TABLE_FIRMWARE_RESOURCE_VERSION 1 9318584df4eSkettenis 9328584df4eSkettenis typedef struct _EFI_SYSTEM_RESOURCE_ENTRY { 9338584df4eSkettenis EFI_GUID FwClass; 9348584df4eSkettenis UINT32 FwType; 9358584df4eSkettenis UINT32 FwVersion; 9368584df4eSkettenis UINT32 LowestSupportedFwVersion; 9378584df4eSkettenis UINT32 CapsuleFlags; 9388584df4eSkettenis UINT32 LastAttemptVersion; 9398584df4eSkettenis UINT32 LastAttemptStatus; 9408584df4eSkettenis } EFI_SYSTEM_RESOURCE_ENTRY; 9418584df4eSkettenis 942060fee10Skettenis #endif 943