15398454dfr/* $FreeBSD$ */
25398454dfr#ifndef _EFI_API_H
35398454dfr#define _EFI_API_H
45398454dfr
55398454dfr/*++
65398454dfr
72904312marcelCopyright (c)  1999 - 2002 Intel Corporation. All rights reserved
82904312marcelThis software and associated documentation (if any) is furnished
92904312marcelunder a license and may only be used or copied in accordance
102904312marcelwith the terms of the license. Except as permitted by such
112904312marcellicense, no part of this software or documentation may be
122904312marcelreproduced, stored in a retrieval system, or transmitted in any
132904312marcelform or by any means without the express written consent of
142904312marcelIntel Corporation.
155398454dfr
165398454dfrModule Name:
175398454dfr
185398454dfr    efiapi.h
195398454dfr
205398454dfrAbstract:
215398454dfr
225398454dfr    Global EFI runtime & boot service interfaces
235398454dfr
245398454dfr
255398454dfr
265398454dfr
275398454dfrRevision History
285398454dfr
295398454dfr--*/
305398454dfr
312904312marcel//
322904312marcel// EFI Specification Revision
332904312marcel//
345398454dfr
355398454dfr#define EFI_SPECIFICATION_MAJOR_REVISION 1
362904312marcel#define EFI_SPECIFICATION_MINOR_REVISION 10
375398454dfr
382904312marcel//
392904312marcel// Declare forward referenced data structures
402904312marcel//
415398454dfr
425398454dfrINTERFACE_DECL(_EFI_SYSTEM_TABLE);
435398454dfr
442904312marcel//
452904312marcel// EFI Memory
462904312marcel//
475398454dfr
485398454dfrtypedef
495398454dfrEFI_STATUS
505398454dfr(EFIAPI *EFI_ALLOCATE_PAGES) (
515398454dfr    IN EFI_ALLOCATE_TYPE            Type,
525398454dfr    IN EFI_MEMORY_TYPE              MemoryType,
535398454dfr    IN UINTN                        NoPages,
545398454dfr    OUT EFI_PHYSICAL_ADDRESS        *Memory
555398454dfr    );
565398454dfr
575398454dfrtypedef
585398454dfrEFI_STATUS
595398454dfr(EFIAPI *EFI_FREE_PAGES) (
605398454dfr    IN EFI_PHYSICAL_ADDRESS         Memory,
615398454dfr    IN UINTN                        NoPages
625398454dfr    );
635398454dfr
645398454dfrtypedef
655398454dfrEFI_STATUS
665398454dfr(EFIAPI *EFI_GET_MEMORY_MAP) (
675398454dfr    IN OUT UINTN                    *MemoryMapSize,
685398454dfr    IN OUT EFI_MEMORY_DESCRIPTOR    *MemoryMap,
695398454dfr    OUT UINTN                       *MapKey,
705398454dfr    OUT UINTN                       *DescriptorSize,
715398454dfr    OUT UINT32                      *DescriptorVersion
725398454dfr    );
735398454dfr
745398454dfr#define NextMemoryDescriptor(Ptr,Size)  ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
755398454dfr
765398454dfr
775398454dfrtypedef
785398454dfrEFI_STATUS
795398454dfr(EFIAPI *EFI_ALLOCATE_POOL) (
805398454dfr    IN EFI_MEMORY_TYPE              PoolType,
815398454dfr    IN UINTN                        Size,
825398454dfr    OUT VOID                        **Buffer
835398454dfr    );
845398454dfr
855398454dfrtypedef
865398454dfrEFI_STATUS
875398454dfr(EFIAPI *EFI_FREE_POOL) (
885398454dfr    IN VOID                         *Buffer
895398454dfr    );
905398454dfr
917bfd35frpaulotypedef
925398454dfrEFI_STATUS
935398454dfr(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
945398454dfr    IN UINTN                        MemoryMapSize,
955398454dfr    IN UINTN                        DescriptorSize,
965398454dfr    IN UINT32                       DescriptorVersion,
975398454dfr    IN EFI_MEMORY_DESCRIPTOR        *VirtualMap
985398454dfr    );
995398454dfr
1005398454dfr
1015398454dfr#define EFI_OPTIONAL_PTR            0x00000001
1022904312marcel#define EFI_INTERNAL_FNC            0x00000002      // Pointer to internal runtime fnc
1032904312marcel#define EFI_INTERNAL_PTR            0x00000004      // Pointer to internal runtime data
1045398454dfr
1055398454dfr
1067bfd35frpaulotypedef
1075398454dfrEFI_STATUS
1085398454dfr(EFIAPI *EFI_CONVERT_POINTER) (
1095398454dfr    IN UINTN                        DebugDisposition,
1105398454dfr    IN OUT VOID                     **Address
1115398454dfr    );
1125398454dfr
1135398454dfr
1142904312marcel//
1152904312marcel// EFI Events
1162904312marcel//
1175398454dfr
1185398454dfr
1195398454dfr
1205398454dfr#define EVT_TIMER                           0x80000000
1215398454dfr#define EVT_RUNTIME                         0x40000000
1225398454dfr#define EVT_RUNTIME_CONTEXT                 0x20000000
1235398454dfr
1245398454dfr#define EVT_NOTIFY_WAIT                     0x00000100
1255398454dfr#define EVT_NOTIFY_SIGNAL                   0x00000200
1265398454dfr
1275398454dfr#define EVT_SIGNAL_EXIT_BOOT_SERVICES       0x00000201
1285398454dfr#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE   0x60000202
1295398454dfr
1305398454dfr#define EVT_EFI_SIGNAL_MASK                 0x000000FF
1315398454dfr#define EVT_EFI_SIGNAL_MAX                  2
1325398454dfr
1335398454dfrtypedef
1345398454dfrVOID
1355398454dfr(EFIAPI *EFI_EVENT_NOTIFY) (
1365398454dfr    IN EFI_EVENT                Event,
1375398454dfr    IN VOID                     *Context
1385398454dfr    );
1395398454dfr
1405398454dfrtypedef
1415398454dfrEFI_STATUS
1425398454dfr(EFIAPI *EFI_CREATE_EVENT) (
1435398454dfr    IN UINT32                       Type,
1445398454dfr    IN EFI_TPL                      NotifyTpl,
1455398454dfr    IN EFI_EVENT_NOTIFY             NotifyFunction,
1465398454dfr    IN VOID                         *NotifyContext,
1475398454dfr    OUT EFI_EVENT                   *Event
1485398454dfr    );
1495398454dfr
1505398454dfrtypedef enum {
1515398454dfr    TimerCancel,
1525398454dfr    TimerPeriodic,
1535398454dfr    TimerRelative,
1545398454dfr    TimerTypeMax
1555398454dfr} EFI_TIMER_DELAY;
1565398454dfr
1575398454dfrtypedef
1585398454dfrEFI_STATUS
1595398454dfr(EFIAPI *EFI_SET_TIMER) (
1605398454dfr    IN EFI_EVENT                Event,
1615398454dfr    IN EFI_TIMER_DELAY          Type,
1625398454dfr    IN UINT64                   TriggerTime
1635398454dfr    );
1645398454dfr
1655398454dfrtypedef
1665398454dfrEFI_STATUS
1675398454dfr(EFIAPI *EFI_SIGNAL_EVENT) (
1685398454dfr    IN EFI_EVENT                Event
1695398454dfr    );
1705398454dfr
1717bfd35frpaulotypedef
1725398454dfrEFI_STATUS
1735398454dfr(EFIAPI *EFI_WAIT_FOR_EVENT) (
1745398454dfr    IN UINTN                    NumberOfEvents,
1755398454dfr    IN EFI_EVENT                *Event,
1765398454dfr    OUT UINTN                   *Index
1775398454dfr    );
1785398454dfr
1795398454dfrtypedef
1805398454dfrEFI_STATUS
1815398454dfr(EFIAPI *EFI_CLOSE_EVENT) (
1825398454dfr    IN EFI_EVENT                Event
1835398454dfr    );
1845398454dfr
1855398454dfrtypedef
1865398454dfrEFI_STATUS
1875398454dfr(EFIAPI *EFI_CHECK_EVENT) (
1885398454dfr    IN EFI_EVENT                Event
1895398454dfr    );
1905398454dfr
1912904312marcel//
1922904312marcel// Task priority level
1932904312marcel//
1945398454dfr
1955398454dfr#define TPL_APPLICATION    4
1965398454dfr#define TPL_CALLBACK       8
1977bfd35frpaulo#define TPL_NOTIFY        16
1987bfd35frpaulo#define TPL_HIGH_LEVEL    31
1995398454dfr
2005398454dfrtypedef
2015398454dfrEFI_TPL
2025398454dfr(EFIAPI *EFI_RAISE_TPL) (
2035398454dfr    IN EFI_TPL      NewTpl
2045398454dfr    );
2055398454dfr
2065398454dfrtypedef
2075398454dfrVOID
2085398454dfr(EFIAPI *EFI_RESTORE_TPL) (
2095398454dfr    IN EFI_TPL      OldTpl
2105398454dfr    );
2115398454dfr
2125398454dfr
2132904312marcel//
2142904312marcel// EFI platform varibles
2152904312marcel//
2165398454dfr
2175bfbb8esmh#define EFI_GLOBAL_VARIABLE \
2185bfbb8esmh    { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
2195398454dfr
2202904312marcel// Variable attributes
2210ee2302tsoome#define EFI_VARIABLE_NON_VOLATILE		0x00000001
2220ee2302tsoome#define EFI_VARIABLE_BOOTSERVICE_ACCESS		0x00000002
2230ee2302tsoome#define EFI_VARIABLE_RUNTIME_ACCESS		0x00000004
2240ee2302tsoome#define	EFI_VARIABLE_HARDWARE_ERROR_RECORD	0x00000008
2250ee2302tsoome#define	EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS	0x00000010
2260ee2302tsoome#define	EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS	0x00000020
2270ee2302tsoome#define	EFI_VARIABLE_APPEND_WRITE		0x00000040
2285398454dfr
2292904312marcel// Variable size limitation
2305398454dfr#define EFI_MAXIMUM_VARIABLE_SIZE           1024
2315398454dfr
2325398454dfrtypedef
2335398454dfrEFI_STATUS
2345398454dfr(EFIAPI *EFI_GET_VARIABLE) (
2355398454dfr    IN CHAR16                       *VariableName,
2365398454dfr    IN EFI_GUID                     *VendorGuid,
2375398454dfr    OUT UINT32                      *Attributes OPTIONAL,
2385398454dfr    IN OUT UINTN                    *DataSize,
2395398454dfr    OUT VOID                        *Data
2405398454dfr    );
2415398454dfr
2425398454dfrtypedef
2435398454dfrEFI_STATUS
2445398454dfr(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
2455398454dfr    IN OUT UINTN                    *VariableNameSize,
2465398454dfr    IN OUT CHAR16                   *VariableName,
2475398454dfr    IN OUT EFI_GUID                 *VendorGuid
2485398454dfr    );
2495398454dfr
2505398454dfr
2515398454dfrtypedef
2525398454dfrEFI_STATUS
2535398454dfr(EFIAPI *EFI_SET_VARIABLE) (
2542038468imp    IN const CHAR16                 *VariableName,
2555398454dfr    IN EFI_GUID                     *VendorGuid,
2565398454dfr    IN UINT32                       Attributes,
2575398454dfr    IN UINTN                        DataSize,
2585398454dfr    IN VOID                         *Data
2595398454dfr    );
2605398454dfr
2615398454dfr
2622904312marcel//
2632904312marcel// EFI Time
2642904312marcel//
2655398454dfr
2665398454dfrtypedef struct {
2672904312marcel        UINT32                      Resolution;     // 1e-6 parts per million
2682904312marcel        UINT32                      Accuracy;       // hertz
2692904312marcel        BOOLEAN                     SetsToZero;     // Set clears sub-second time
2705398454dfr} EFI_TIME_CAPABILITIES;
2715398454dfr
2725398454dfr
2735398454dfrtypedef
2745398454dfrEFI_STATUS
2755398454dfr(EFIAPI *EFI_GET_TIME) (
2765398454dfr    OUT EFI_TIME                    *Time,
2775398454dfr    OUT EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
2785398454dfr    );
2795398454dfr
2805398454dfrtypedef
2815398454dfrEFI_STATUS
2825398454dfr(EFIAPI *EFI_SET_TIME) (
2835398454dfr    IN EFI_TIME                     *Time
2845398454dfr    );
2855398454dfr
2865398454dfrtypedef
2875398454dfrEFI_STATUS
2885398454dfr(EFIAPI *EFI_GET_WAKEUP_TIME) (
2895398454dfr    OUT BOOLEAN                     *Enabled,
2905398454dfr    OUT BOOLEAN                     *Pending,
2915398454dfr    OUT EFI_TIME                    *Time
2925398454dfr    );
2935398454dfr
2945398454dfrtypedef
2955398454dfrEFI_STATUS
2965398454dfr(EFIAPI *EFI_SET_WAKEUP_TIME) (
2975398454dfr    IN BOOLEAN                      Enable,
2985398454dfr    IN EFI_TIME                     *Time OPTIONAL
2995398454dfr    );
3005398454dfr
3015398454dfr
3022904312marcel//
3032904312marcel// Image functions
3042904312marcel//
3055398454dfr
3065398454dfr
3072904312marcel// PE32+ Subsystem type for EFI images
3085398454dfr
3095398454dfr#if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
3105398454dfr#define IMAGE_SUBSYSTEM_EFI_APPLICATION             10
3115398454dfr#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER     11
3125398454dfr#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER          12
3135398454dfr#endif
3145398454dfr
3152904312marcel// PE32+ Machine type for EFI images
3165398454dfr
3175398454dfr#if !defined(EFI_IMAGE_MACHINE_IA32)
3185398454dfr#define EFI_IMAGE_MACHINE_IA32      0x014c
3195398454dfr#endif
3205398454dfr
3212904312marcel#if !defined(EFI_IMAGE_MACHINE_EBC)
3222904312marcel#define EFI_IMAGE_MACHINE_EBC       0x0EBC
3232904312marcel#endif
3242904312marcel
3252904312marcel// Image Entry prototype
3265398454dfr
3277bfd35frpaulotypedef
3285398454dfrEFI_STATUS
3295398454dfr(EFIAPI *EFI_IMAGE_ENTRY_POINT) (
3305398454dfr    IN EFI_HANDLE                   ImageHandle,
3315398454dfr    IN struct _EFI_SYSTEM_TABLE     *SystemTable
3325398454dfr    );
3335398454dfr
3347bfd35frpaulotypedef
3355398454dfrEFI_STATUS
3365398454dfr(EFIAPI *EFI_IMAGE_LOAD) (
3375398454dfr    IN BOOLEAN                      BootPolicy,
3385398454dfr    IN EFI_HANDLE                   ParentImageHandle,
3395398454dfr    IN EFI_DEVICE_PATH              *FilePath,
3405398454dfr    IN VOID                         *SourceBuffer   OPTIONAL,
3415398454dfr    IN UINTN                        SourceSize,
3425398454dfr    OUT EFI_HANDLE                  *ImageHandle
3435398454dfr    );
3445398454dfr
3457bfd35frpaulotypedef
3465398454dfrEFI_STATUS
3475398454dfr(EFIAPI *EFI_IMAGE_START) (
3485398454dfr    IN EFI_HANDLE                   ImageHandle,
3495398454dfr    OUT UINTN                       *ExitDataSize,
3505398454dfr    OUT CHAR16                      **ExitData  OPTIONAL
3515398454dfr    );
3525398454dfr
3535398454dfrtypedef
3545398454dfrEFI_STATUS
3555398454dfr(EFIAPI *EFI_EXIT) (
3565398454dfr    IN EFI_HANDLE                   ImageHandle,
3575398454dfr    IN EFI_STATUS                   ExitStatus,
3585398454dfr    IN UINTN                        ExitDataSize,
3595398454dfr    IN CHAR16                       *ExitData OPTIONAL
360ed67956imp    ) __dead2;
3615398454dfr
3627bfd35frpaulotypedef
3635398454dfrEFI_STATUS
3645398454dfr(EFIAPI *EFI_IMAGE_UNLOAD) (
3655398454dfr    IN EFI_HANDLE                   ImageHandle
3665398454dfr    );
3675398454dfr
3685398454dfr
3692904312marcel// Image handle
3705bfbb8esmh#define LOADED_IMAGE_PROTOCOL \
3715bfbb8esmh    { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
3725398454dfr
3732904312marcel#define EFI_LOADED_IMAGE_INFORMATION_REVISION      0x1000
3745398454dfrtypedef struct {
3755398454dfr    UINT32                          Revision;
3765398454dfr    EFI_HANDLE                      ParentHandle;
3775398454dfr    struct _EFI_SYSTEM_TABLE        *SystemTable;
3785398454dfr
3792904312marcel    // Source location of image
3805398454dfr    EFI_HANDLE                      DeviceHandle;
3815398454dfr    EFI_DEVICE_PATH                 *FilePath;
3825398454dfr    VOID                            *Reserved;
3835398454dfr
3842904312marcel    // Images load options
3855398454dfr    UINT32                          LoadOptionsSize;
3865398454dfr    VOID                            *LoadOptions;
3875398454dfr
3882904312marcel    // Location of where image was loaded
3895398454dfr    VOID                            *ImageBase;
3905398454dfr    UINT64                          ImageSize;
3915398454dfr    EFI_MEMORY_TYPE                 ImageCodeType;
3925398454dfr    EFI_MEMORY_TYPE                 ImageDataType;
3935398454dfr
3942904312marcel    // If the driver image supports a dynamic unload request
3955398454dfr    EFI_IMAGE_UNLOAD                Unload;
3965398454dfr
3975398454dfr} EFI_LOADED_IMAGE;
3985398454dfr
3995398454dfr
4005398454dfrtypedef
4015398454dfrEFI_STATUS
4025398454dfr(EFIAPI *EFI_EXIT_BOOT_SERVICES) (
4035398454dfr    IN EFI_HANDLE                   ImageHandle,
4045398454dfr    IN UINTN                        MapKey
4055398454dfr    );
4065398454dfr
4072904312marcel//
4082904312marcel// Misc
4092904312marcel//
4105398454dfr
4115398454dfr
4125398454dfrtypedef
4135398454dfrEFI_STATUS
4145398454dfr(EFIAPI *EFI_STALL) (
4155398454dfr    IN UINTN                    Microseconds
4165398454dfr    );
4175398454dfr
4185398454dfrtypedef
4195398454dfrEFI_STATUS
4205398454dfr(EFIAPI *EFI_SET_WATCHDOG_TIMER) (
4215398454dfr    IN UINTN                    Timeout,
4225398454dfr    IN UINT64                   WatchdogCode,
4235398454dfr    IN UINTN                    DataSize,
4245398454dfr    IN CHAR16                   *WatchdogData OPTIONAL
4255398454dfr    );
4265398454dfr
4275398454dfr
4285398454dfrtypedef enum {
4295398454dfr    EfiResetCold,
4302904312marcel    EfiResetWarm,
4312904312marcel    EfiResetShutdown
4325398454dfr} EFI_RESET_TYPE;
4335398454dfr
4345398454dfrtypedef
4352904312marcelVOID
4365398454dfr(EFIAPI *EFI_RESET_SYSTEM) (
4375398454dfr    IN EFI_RESET_TYPE           ResetType,
4385398454dfr    IN EFI_STATUS               ResetStatus,
4395398454dfr    IN UINTN                    DataSize,
4405398454dfr    IN CHAR16                   *ResetData OPTIONAL
4415398454dfr    );
4425398454dfr
4435398454dfrtypedef
4445398454dfrEFI_STATUS
4455398454dfr(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
4465398454dfr    OUT UINT64                  *Count
4475398454dfr    );
4485398454dfr
4495398454dfrtypedef
4505398454dfrEFI_STATUS
4515398454dfr(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
4525398454dfr    OUT UINT32                  *HighCount
4535398454dfr    );
4545398454dfr
4552904312marcel//
4562904312marcel// Protocol handler functions
4572904312marcel//
4585398454dfr
4595398454dfrtypedef enum {
4602904312marcel    EFI_NATIVE_INTERFACE
4615398454dfr} EFI_INTERFACE_TYPE;
4625398454dfr
4635398454dfrtypedef
4645398454dfrEFI_STATUS
4655398454dfr(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
4665398454dfr    IN OUT EFI_HANDLE           *Handle,
4675398454dfr    IN EFI_GUID                 *Protocol,
4685398454dfr    IN EFI_INTERFACE_TYPE       InterfaceType,
4695398454dfr    IN VOID                     *Interface
4705398454dfr    );
4715398454dfr
4725398454dfrtypedef
4735398454dfrEFI_STATUS
4745398454dfr(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
4755398454dfr    IN EFI_HANDLE               Handle,
4765398454dfr    IN EFI_GUID                 *Protocol,
4775398454dfr    IN VOID                     *OldInterface,
4785398454dfr    IN VOID                     *NewInterface
4795398454dfr    );
4805398454dfr
4815398454dfrtypedef
4825398454dfrEFI_STATUS
4835398454dfr(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
4845398454dfr    IN EFI_HANDLE               Handle,
4855398454dfr    IN EFI_GUID                 *Protocol,
4865398454dfr    IN VOID                     *Interface
4875398454dfr    );
4885398454dfr
4895398454dfrtypedef
4905398454dfrEFI_STATUS
4915398454dfr(EFIAPI *EFI_HANDLE_PROTOCOL) (
4925398454dfr    IN EFI_HANDLE               Handle,
4935398454dfr    IN EFI_GUID                 *Protocol,
4945398454dfr    OUT VOID                    **Interface
4955398454dfr    );
4965398454dfr
4975398454dfrtypedef
4987bfd35frpauloEFI_STATUS
4995398454dfr(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
5005398454dfr    IN EFI_GUID                 *Protocol,
5015398454dfr    IN EFI_EVENT                Event,
5025398454dfr    OUT VOID                    **Registration
5035398454dfr    );
5045398454dfr
5055398454dfrtypedef enum {
5065398454dfr    AllHandles,
5075398454dfr    ByRegisterNotify,
5085398454dfr    ByProtocol
5095398454dfr} EFI_LOCATE_SEARCH_TYPE;
5105398454dfr
5115398454dfrtypedef
5125398454dfrEFI_STATUS
5135398454dfr(EFIAPI *EFI_LOCATE_HANDLE) (
5145398454dfr    IN EFI_LOCATE_SEARCH_TYPE   SearchType,
5155398454dfr    IN EFI_GUID                 *Protocol OPTIONAL,
5165398454dfr    IN VOID                     *SearchKey OPTIONAL,
5175398454dfr    IN OUT UINTN                *BufferSize,
5185398454dfr    OUT EFI_HANDLE              *Buffer
5195398454dfr    );
5205398454dfr
5215398454dfrtypedef
5225398454dfrEFI_STATUS
5235398454dfr(EFIAPI *EFI_LOCATE_DEVICE_PATH) (
5245398454dfr    IN EFI_GUID                 *Protocol,
5255398454dfr    IN OUT EFI_DEVICE_PATH      **DevicePath,
5265398454dfr    OUT EFI_HANDLE              *Device
5275398454dfr    );
5285398454dfr
5295398454dfrtypedef
5305398454dfrEFI_STATUS
5315398454dfr(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
5325398454dfr    IN EFI_GUID                 *Guid,
5335398454dfr    IN VOID                     *Table
5345398454dfr    );
5355398454dfr
5365398454dfrtypedef
5375398454dfrEFI_STATUS
5385398454dfr(EFIAPI *EFI_RESERVED_SERVICE) (
539da02c94dim    VOID
5405398454dfr    );
5415398454dfr
5422904312marceltypedef
5437bfd35frpauloEFI_STATUS
5442904312marcel(EFIAPI *EFI_CONNECT_CONTROLLER) (
5452904312marcel  IN  EFI_HANDLE                    ControllerHandle,
5462904312marcel  IN  EFI_HANDLE                    *DriverImageHandle    OPTIONAL,
5472904312marcel  IN  EFI_DEVICE_PATH               *RemainingDevicePath  OPTIONAL,
5482904312marcel  IN  BOOLEAN                       Recursive
5492904312marcel  );
5505398454dfr
5512904312marceltypedef
5527bfd35frpauloEFI_STATUS
5532904312marcel(EFIAPI *EFI_DISCONNECT_CONTROLLER)(
5542904312marcel  IN EFI_HANDLE           ControllerHandle,
5552904312marcel  IN EFI_HANDLE           DriverImageHandle, OPTIONAL
5562904312marcel  IN EFI_HANDLE           ChildHandle        OPTIONAL
5577bfd35frpaulo  );
5585398454dfr
5597bfd35frpaulo#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL	 0x00000001
5607bfd35frpaulo#define EFI_OPEN_PROTOCOL_GET_PROTOCOL	       0x00000002
5617bfd35frpaulo#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL        0x00000004
5627bfd35frpaulo#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER  0x00000008
5637bfd35frpaulo#define EFI_OPEN_PROTOCOL_BY_DRIVER            0x00000010
5647bfd35frpaulo#define EFI_OPEN_PROTOCOL_EXCLUSIVE            0x00000020
5655398454dfr
5662904312marceltypedef
5672904312marcelEFI_STATUS
5682904312marcel(EFIAPI *EFI_OPEN_PROTOCOL) (
5692904312marcel  IN EFI_HANDLE                 Handle,
5702904312marcel  IN EFI_GUID                   *Protocol,
5712904312marcel  OUT VOID                      **Interface,
5722904312marcel  IN  EFI_HANDLE                ImageHandle,
5732904312marcel  IN  EFI_HANDLE                ControllerHandle, OPTIONAL
5742904312marcel  IN  UINT32                    Attributes
5752904312marcel  );
5765398454dfr
5772904312marceltypedef
5782904312marcelEFI_STATUS
5792904312marcel(EFIAPI *EFI_CLOSE_PROTOCOL) (
5802904312marcel  IN EFI_HANDLE               Handle,
5812904312marcel  IN EFI_GUID                 *Protocol,
5822904312marcel  IN EFI_HANDLE               ImageHandle,
5832904312marcel  IN EFI_HANDLE               DeviceHandle
5842904312marcel  );
5855398454dfr
5862904312marceltypedef struct {
5872904312marcel  EFI_HANDLE                  AgentHandle;
5882904312marcel  EFI_HANDLE                  ControllerHandle;
5892904312marcel  UINT32                      Attributes;
5902904312marcel  UINT32                      OpenCount;
5912904312marcel} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
5925398454dfr
5932904312marceltypedef
5942904312marcelEFI_STATUS
5952904312marcel(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
5962904312marcel  IN  EFI_HANDLE                          UserHandle,
5972904312marcel  IN  EFI_GUID                            *Protocol,
5982904312marcel  IN  EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
5992904312marcel  OUT UINTN                               *EntryCount
6002904312marcel  );
6015398454dfr
6022904312marceltypedef
6032904312marcelEFI_STATUS
6042904312marcel(EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
6052904312marcel  IN EFI_HANDLE       UserHandle,
6062904312marcel  OUT EFI_GUID        ***ProtocolBuffer,
6072904312marcel  OUT UINTN           *ProtocolBufferCount
6082904312marcel  );
6095398454dfr
6102904312marceltypedef
6112904312marcelEFI_STATUS
6122904312marcel(EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
6132904312marcel  IN EFI_LOCATE_SEARCH_TYPE       SearchType,
6142904312marcel  IN EFI_GUID                     *Protocol OPTIONAL,
6152904312marcel  IN VOID                         *SearchKey OPTIONAL,
6162904312marcel  IN OUT UINTN                    *NumberHandles,
6172904312marcel  OUT EFI_HANDLE                  **Buffer
6182904312marcel  );
6195398454dfr
6202904312marceltypedef
6212904312marcelEFI_STATUS
6222904312marcel(EFIAPI *EFI_LOCATE_PROTOCOL) (
6232904312marcel  EFI_GUID  *Protocol,
6242904312marcel  VOID      *Registration, OPTIONAL
6252904312marcel  VOID      **Interface
6262904312marcel  );
6275398454dfr
6282904312marceltypedef
6292904312marcelEFI_STATUS
6302904312marcel(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
6312904312marcel  IN OUT EFI_HANDLE           *Handle,
6322904312marcel  ...
6332904312marcel  );
6345398454dfr
6352904312marceltypedef
6362904312marcelEFI_STATUS
6372904312marcel(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
6382904312marcel  IN EFI_HANDLE           Handle,
6392904312marcel  ...
6402904312marcel  );
6415398454dfr
6422904312marceltypedef
6432904312marcelEFI_STATUS
6442904312marcel(EFIAPI *EFI_CALCULATE_CRC32) (
6452904312marcel  IN  VOID                              *Data,
6462904312marcel  IN  UINTN                             DataSize,
6472904312marcel  OUT UINT32                            *Crc32
6482904312marcel  );
6495398454dfr
6502904312marceltypedef
6512904312marcelVOID
6522904312marcel(EFIAPI *EFI_COPY_MEM) (
6532904312marcel  IN VOID     *Destination,
6542904312marcel  IN VOID     *Source,
6552904312marcel  IN UINTN    Length
6562904312marcel  );
6575398454dfr
6582904312marceltypedef
6592904312marcelVOID
6602904312marcel(EFIAPI *EFI_SET_MEM) (
6612904312marcel  IN VOID     *Buffer,
6622904312marcel  IN UINTN    Size,
6632904312marcel  IN UINT8    Value
6642904312marcel  );
6655398454dfr
6662904312marcel//
6672904312marcel// Standard EFI table header
6682904312marcel//
6695398454dfr
6702904312marceltypedef struct _EFI_TABLE_HEARDER {
6712904312marcel  UINT64                      Signature;
6722904312marcel  UINT32                      Revision;
6732904312marcel  UINT32                      HeaderSize;
6742904312marcel  UINT32                      CRC32;
6752904312marcel  UINT32                      Reserved;
6762904312marcel} EFI_TABLE_HEADER;
6775398454dfr
6785398454dfr
6792904312marcel//
6802904312marcel// EFI Runtime Serivces Table
6812904312marcel//
6825398454dfr
6832904312marcel#define EFI_RUNTIME_SERVICES_SIGNATURE  0x56524553544e5552
6842904312marcel#define EFI_RUNTIME_SERVICES_REVISION   ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
6855398454dfr
6862904312marceltypedef struct  {
6872904312marcel  EFI_TABLE_HEADER                Hdr;
6885398454dfr
6892904312marcel  //
6902904312marcel  // Time services
6912904312marcel  //
6925398454dfr
6932904312marcel  EFI_GET_TIME                    GetTime;
6942904312marcel  EFI_SET_TIME                    SetTime;
6952904312marcel  EFI_GET_WAKEUP_TIME             GetWakeupTime;
6962904312marcel  EFI_SET_WAKEUP_TIME             SetWakeupTime;
6975398454dfr
6982904312marcel  //
6992904312marcel  // Virtual memory services
7002904312marcel  //
7015398454dfr
7022904312marcel  EFI_SET_VIRTUAL_ADDRESS_MAP     SetVirtualAddressMap;
7032904312marcel  EFI_CONVERT_POINTER             ConvertPointer;
7045398454dfr
7052904312marcel  //
7062904312marcel  // Variable serviers
7072904312marcel  //
7085398454dfr
7092904312marcel  EFI_GET_VARIABLE                GetVariable;
7102904312marcel  EFI_GET_NEXT_VARIABLE_NAME      GetNextVariableName;
7112904312marcel  EFI_SET_VARIABLE                SetVariable;
7125398454dfr
7132904312marcel  //
7142904312marcel  // Misc
7152904312marcel  //
7165398454dfr
7172904312marcel  EFI_GET_NEXT_HIGH_MONO_COUNT    GetNextHighMonotonicCount;
7182904312marcel  EFI_RESET_SYSTEM                ResetSystem;
7195398454dfr
7202904312marcel} EFI_RUNTIME_SERVICES;
7215398454dfr
7225398454dfr
7232904312marcel//
7242904312marcel// EFI Boot Services Table
7252904312marcel//
7262904312marcel
7272904312marcel#define EFI_BOOT_SERVICES_SIGNATURE     0x56524553544f4f42
7282904312marcel#define EFI_BOOT_SERVICES_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
7292904312marcel
7302904312marceltypedef struct {
7312904312marcel
7322904312marcel  EFI_TABLE_HEADER                Hdr;
7332904312marcel
7342904312marcel  //
7352904312marcel  // Task priority functions
7362904312marcel  //
7372904312marcel
7382904312marcel  EFI_RAISE_TPL                   RaiseTPL;
7392904312marcel  EFI_RESTORE_TPL                 RestoreTPL;
7402904312marcel
7412904312marcel  //
7422904312marcel  // Memory functions
7432904312marcel  //
7442904312marcel
7452904312marcel  EFI_ALLOCATE_PAGES              AllocatePages;
7462904312marcel  EFI_FREE_PAGES                  FreePages;
7472904312marcel  EFI_GET_MEMORY_MAP              GetMemoryMap;
7482904312marcel  EFI_ALLOCATE_POOL               AllocatePool;
7492904312marcel  EFI_FREE_POOL                   FreePool;
7502904312marcel
7512904312marcel  //
7522904312marcel  // Event & timer functions
7532904312marcel  //
7542904312marcel
7552904312marcel  EFI_CREATE_EVENT                CreateEvent;
7562904312marcel  EFI_SET_TIMER                   SetTimer;
7572904312marcel  EFI_WAIT_FOR_EVENT              WaitForEvent;
7582904312marcel  EFI_SIGNAL_EVENT                SignalEvent;
7592904312marcel  EFI_CLOSE_EVENT                 CloseEvent;
7602904312marcel  EFI_CHECK_EVENT                 CheckEvent;
7612904312marcel
7622904312marcel  //
7632904312marcel  // Protocol handler functions
7642904312marcel  //
7652904312marcel
7662904312marcel  EFI_INSTALL_PROTOCOL_INTERFACE  InstallProtocolInterface;
7672904312marcel  EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
7682904312marcel  EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
7692904312marcel  EFI_HANDLE_PROTOCOL             HandleProtocol;
7702904312marcel  VOID                            *Reserved;
7712904312marcel  EFI_REGISTER_PROTOCOL_NOTIFY    RegisterProtocolNotify;
7722904312marcel  EFI_LOCATE_HANDLE               LocateHandle;
7732904312marcel  EFI_LOCATE_DEVICE_PATH          LocateDevicePath;
7742904312marcel  EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
7752904312marcel
7762904312marcel  //
7772904312marcel  // Image functions
7782904312marcel  //
7792904312marcel
7802904312marcel  EFI_IMAGE_LOAD                  LoadImage;
7812904312marcel  EFI_IMAGE_START                 StartImage;
7822904312marcel  EFI_EXIT                        Exit;
7832904312marcel  EFI_IMAGE_UNLOAD                UnloadImage;
7842904312marcel  EFI_EXIT_BOOT_SERVICES          ExitBootServices;
7852904312marcel
7862904312marcel  //
7872904312marcel  // Misc functions
7882904312marcel  //
7892904312marcel
7902904312marcel  EFI_GET_NEXT_MONOTONIC_COUNT    GetNextMonotonicCount;
7912904312marcel  EFI_STALL                       Stall;
7922904312marcel  EFI_SET_WATCHDOG_TIMER          SetWatchdogTimer;
7932904312marcel
7942904312marcel  //
7952904312marcel  // DriverSupport Services
7962904312marcel  //
7972904312marcel  EFI_CONNECT_CONTROLLER	        ConnectController;
7982904312marcel  EFI_DISCONNECT_CONTROLLER       DisconnectController;
7992904312marcel
8002904312marcel  //
8012904312marcel  // Open and Close Protocol Services
8022904312marcel  //
8032904312marcel  EFI_OPEN_PROTOCOL               OpenProtocol;
8042904312marcel  EFI_CLOSE_PROTOCOL              CloseProtocol;
8052904312marcel  EFI_OPEN_PROTOCOL_INFORMATION   OpenProtocolInformation;
8062904312marcel
8072904312marcel  //
8082904312marcel  // Library Services to reduce size of drivers
8092904312marcel  //
8102904312marcel  EFI_PROTOCOLS_PER_HANDLE        ProtocolsPerHandle;
8112904312marcel  EFI_LOCATE_HANDLE_BUFFER        LocateHandleBuffer;
8127bfd35frpaulo  EFI_LOCATE_PROTOCOL             LocateProtocol;
8132904312marcel
8142904312marcel  EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES    InstallMultipleProtocolInterfaces;
8152904312marcel  EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES  UninstallMultipleProtocolInterfaces;
8162904312marcel
8172904312marcel  //
8182904312marcel  // CRC32 services
8192904312marcel  //
8202904312marcel  EFI_CALCULATE_CRC32             CalculateCrc32;
8212904312marcel
8222904312marcel  //
8232904312marcel  // Memory Utility Services
8242904312marcel  //
8252904312marcel  EFI_COPY_MEM                    CopyMem;
8262904312marcel  EFI_SET_MEM                     SetMem;
8275398454dfr
8285398454dfr} EFI_BOOT_SERVICES;
8295398454dfr
8305398454dfr
8312904312marcel//
8322904312marcel// EFI Configuration Table and GUID definitions
8332904312marcel//
8345398454dfr
8355bfbb8esmh#define MPS_TABLE_GUID \
8365bfbb8esmh    { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
8375398454dfr
8385bfbb8esmh#define ACPI_TABLE_GUID \
8395bfbb8esmh    { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
8405398454dfr
8415bfbb8esmh#define ACPI_20_TABLE_GUID \
8425bfbb8esmh    { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
8435398454dfr
8445bfbb8esmh#define SMBIOS_TABLE_GUID \
8455bfbb8esmh    { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
8465398454dfr
847406a2e9emaste#define SMBIOS3_TABLE_GUID \
848406a2e9emaste	{ 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94} }
849406a2e9emaste
8505bfbb8esmh#define SAL_SYSTEM_TABLE_GUID  \
8515bfbb8esmh    { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
8525398454dfr
8535bfbb8esmh#define FDT_TABLE_GUID \
8545bfbb8esmh    { 0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0} }
8555398454dfr
8565bfbb8esmh#define DXE_SERVICES_TABLE_GUID \
8575bfbb8esmh    { 0x5ad34ba, 0x6f02, 0x4214, {0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9} }
8587bfd35frpaulo
8595bfbb8esmh#define HOB_LIST_TABLE_GUID \
8605bfbb8esmh    { 0x7739f24c, 0x93d7, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
8617bfd35frpaulo
862406a2e9emaste#define LZMA_DECOMPRESSION_GUID \
863406a2e9emaste	{ 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x3, 0xcf} }
864406a2e9emaste
865406a2e9emaste#define ARM_MP_CORE_INFO_TABLE_GUID \
866406a2e9emaste	{ 0xa4ee0728, 0xe5d7, 0x4ac5, {0xb2, 0x1e, 0x65, 0x8e, 0xd8, 0x57, 0xe8, 0x34} }
867406a2e9emaste
868406a2e9emaste#define ESRT_TABLE_GUID \
869406a2e9emaste	{ 0xb122a263, 0x3661, 0x4f68, {0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80} }
870406a2e9emaste
8717bfd35frpaulo#define MEMORY_TYPE_INFORMATION_TABLE_GUID \
8725bfbb8esmh    { 0x4c19049f, 0x4137, 0x4dd3, {0x9c, 0x10, 0x8b, 0x97, 0xa8, 0x3f, 0xfd, 0xfa} }
8737bfd35frpaulo
8747bfd35frpaulo#define DEBUG_IMAGE_INFO_TABLE_GUID \
8755bfbb8esmh    { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} }
8767bfd35frpaulo
8775398454dfrtypedef struct _EFI_CONFIGURATION_TABLE {
8782904312marcel  EFI_GUID                VendorGuid;
8792904312marcel  VOID                    *VendorTable;
8805398454dfr} EFI_CONFIGURATION_TABLE;
8815398454dfr
8825398454dfr
8832904312marcel//
8842904312marcel// EFI System Table
8852904312marcel//
8865398454dfr
8875398454dfr
8885398454dfr
8895398454dfr
8905398454dfr#define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
8912904312marcel#define EFI_SYSTEM_TABLE_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
8922904312marcel#define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | 10)
8932904312marcel#define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | 02)
8945398454dfr
8955398454dfrtypedef struct _EFI_SYSTEM_TABLE {
8962904312marcel  EFI_TABLE_HEADER                Hdr;
8975398454dfr
8982904312marcel  CHAR16                          *FirmwareVendor;
8992904312marcel  UINT32                          FirmwareRevision;
9005398454dfr
9012904312marcel  EFI_HANDLE                      ConsoleInHandle;
9022904312marcel  SIMPLE_INPUT_INTERFACE          *ConIn;
9035398454dfr
9042904312marcel  EFI_HANDLE                      ConsoleOutHandle;
9052904312marcel  SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
9065398454dfr
9072904312marcel  EFI_HANDLE                      StandardErrorHandle;
9082904312marcel  SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
9095398454dfr
9102904312marcel  EFI_RUNTIME_SERVICES            *RuntimeServices;
9112904312marcel  EFI_BOOT_SERVICES               *BootServices;
9125398454dfr
9132904312marcel  UINTN                           NumberOfTableEntries;
9142904312marcel  EFI_CONFIGURATION_TABLE         *ConfigurationTable;
9155398454dfr
9165398454dfr} EFI_SYSTEM_TABLE;
9175398454dfr
9180ee2302tsoome/*
9190ee2302tsoome * unlisted GUID's..
9200ee2302tsoome */
9210ee2302tsoome#define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
9220ee2302tsoome{ 0x13AC6DD1, 0x73D0, 0x11D4, {0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7} }
9230ee2302tsoome
9240ee2302tsoome#define EFI_DRIVER_CONFIGURATION2_PROTOCOL_GUID \
9250ee2302tsoome{ 0xbfd7dc1d, 0x24f1, 0x40d9, {0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe} }
9260ee2302tsoome
9270ee2302tsoome#define EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID \
9280ee2302tsoome{ 0x107a772b, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
9290ee2302tsoome
9300ee2302tsoome#define EFI_DRIVER_BINDING_PROTOCOL_GUID \
9310ee2302tsoome  { 0x18A031AB, 0xB443, 0x4D1A, \
9320ee2302tsoome    { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71 } \
9330ee2302tsoome  }
9340ee2302tsoome
9350ee2302tsoome#define EFI_TAPE_IO_PROTOCOL_GUID \
9360ee2302tsoome  { 0x1e93e633, 0xd65a, 0x459e, \
9370ee2302tsoome    { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
9380ee2302tsoome  }
9390ee2302tsoome
9400ee2302tsoome#define EFI_SCSI_IO_PROTOCOL_GUID \
9410ee2302tsoome  { 0x932f47e6, 0x2362, 0x4002, \
9420ee2302tsoome    { 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
9430ee2302tsoome  }
9440ee2302tsoome
9450ee2302tsoome#define EFI_USB2_HC_PROTOCOL_GUID \
9460ee2302tsoome  { 0x3e745226, 0x9818, 0x45b6, \
9470ee2302tsoome    { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } \
9480ee2302tsoome  }
9490ee2302tsoome
9500ee2302tsoome#define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
9510ee2302tsoome  { 0x2755590C, 0x6F3C, 0x42FA, \
9520ee2302tsoome    { 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
9530ee2302tsoome  }
9540ee2302tsoome
9550ee2302tsoome#define EFI_DEBUGPORT_PROTOCOL_GUID \
9560ee2302tsoome  { 0xEBA4E8D2, 0x3858, 0x41EC, \
9570ee2302tsoome    { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
9580ee2302tsoome  }
9590ee2302tsoome
9600ee2302tsoome#define EFI_DECOMPRESS_PROTOCOL_GUID \
9610ee2302tsoome  { 0xd8117cfe, 0x94a6, 0x11d4, \
9620ee2302tsoome    { 0x9a, 0x3a, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
9630ee2302tsoome  }
9640ee2302tsoome
9650ee2302tsoome#define EFI_ACPI_TABLE_PROTOCOL_GUID \
9660ee2302tsoome  { 0xffe06bdd, 0x6107, 0x46a6, \
9670ee2302tsoome    { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
9680ee2302tsoome  }
9690ee2302tsoome
9700ee2302tsoome#define EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \
9710ee2302tsoome  { 0x587e72d7, 0xcc50, 0x4f79, \
9720ee2302tsoome    { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } \
9730ee2302tsoome  }
9740ee2302tsoome
9750ee2302tsoome#define EFI_HII_DATABASE_PROTOCOL_GUID \
9760ee2302tsoome  { 0xef9fc172, 0xa1b2, 0x4693, \
9770ee2302tsoome    { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } \
9780ee2302tsoome  }
9790ee2302tsoome
9800ee2302tsoome#define EFI_HII_STRING_PROTOCOL_GUID \
9810ee2302tsoome  { 0xfd96974, 0x23aa, 0x4cdc, \
9820ee2302tsoome    { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } \
9830ee2302tsoome  }
9840ee2302tsoome
9850ee2302tsoome#define EFI_HII_IMAGE_PROTOCOL_GUID \
9860ee2302tsoome  { 0x31a6406a, 0x6bdf, 0x4e46, \
9870ee2302tsoome    { 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20 } \
9880ee2302tsoome  }
9890ee2302tsoome
9900ee2302tsoome#define EFI_HII_FONT_PROTOCOL_GUID \
9910ee2302tsoome  { 0xe9ca4775, 0x8657, 0x47fc, \
9920ee2302tsoome    { 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24 } \
9930ee2302tsoome  }
9940ee2302tsoome#define EFI_HII_CONFIGURATION_ACCESS_PROTOCOL_GUID \
9950ee2302tsoome  { 0x330d4706, 0xf2a0, 0x4e4f, \
9960ee2302tsoome    { 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 } \
9970ee2302tsoome  }
9980ee2302tsoome
9990ee2302tsoome#define EFI_COMPONENT_NAME_PROTOCOL_GUID \
10000ee2302tsoome{ 0x107a772c, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
10010ee2302tsoome
10020ee2302tsoome#define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
10030ee2302tsoome  { 0x6a7a5cff, 0xe8d9, 0x4f70, \
10040ee2302tsoome    { 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \
10050ee2302tsoome  }
10060ee2302tsoome
10070ee2302tsoome#define EFI_USB_IO_PROTOCOL_GUID \
10080ee2302tsoome  { 0x2B2F68D6, 0x0CD2, 0x44cf, \
10090ee2302tsoome    { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
10100ee2302tsoome  }
10110ee2302tsoome#define EFI_HCDP_TABLE_GUID \
10120ee2302tsoome  { 0xf951938d, 0x620b, 0x42ef, \
10130ee2302tsoome      { 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } \
10140ee2302tsoome  }
10150ee2302tsoome
10160ee2302tsoome#define EFI_DEVICE_TREE_GUID \
10170ee2302tsoome  { 0xb1b621d5, 0xf19c, 0x41a5, \
10180ee2302tsoome      { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } \
10190ee2302tsoome  }
10200ee2302tsoome
10210ee2302tsoome#define EFI_VENDOR_APPLE_GUID \
10220ee2302tsoome  { 0x2B0585EB, 0xD8B8, 0x49A9, \
10230ee2302tsoome      { 0x8B, 0x8C, 0xE2, 0x1B, 0x01, 0xAE, 0xF2, 0xB7 } \
10240ee2302tsoome  }
10250ee2302tsoome
10260ee2302tsoome#define EFI_CONSOLE_IN_DEVICE_GUID    \
10270ee2302tsoome{ 0xd3b36f2b, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
10280ee2302tsoome
10290ee2302tsoome#define EFI_CONSOLE_OUT_DEVICE_GUID    \
10300ee2302tsoome{ 0xd3b36f2c, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
10310ee2302tsoome
10320ee2302tsoome#define EFI_STANDARD_ERROR_DEVICE_GUID	\
10330ee2302tsoome{ 0xd3b36f2d, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
10340ee2302tsoome
10350ee2302tsoome#define EFI_UNICODE_COLLATION2_PROTOCOL_GUID \
10360ee2302tsoome{ 0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49} }
10370ee2302tsoome
10380ee2302tsoome#define EFI_FORM_BROWSER2_PROTOCOL_GUID \
10390ee2302tsoome{ 0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58} }
10400ee2302tsoome
10410ee2302tsoome#define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \
10420ee2302tsoome{ 0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3} }
10430ee2302tsoome
10440ee2302tsoome#define EFI_ARP_PROTOCOL_GUID \
10450ee2302tsoome{ 0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c} }
10460ee2302tsoome
10470ee2302tsoome#define EFI_IP4_CONFIG_PROTOCOL_GUID \
10480ee2302tsoome{ 0x3b95aa31, 0x3793, 0x434b, {0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e} }
10490ee2302tsoome
10500ee2302tsoome#define EFI_IP6_CONFIG_PROTOCOL_GUID \
10510ee2302tsoome{ 0x937fe521, 0x95ae, 0x4d1a, {0x89, 0x29, 0x48, 0xbc, 0xd9, 0x0a, 0xd3, 0x1a} }
10520ee2302tsoome
10530ee2302tsoome#define EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID \
10540ee2302tsoome{ 0xf36ff770, 0xa7e1, 0x42cf, {0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c} }
10550ee2302tsoome
10560ee2302tsoome#define EFI_MANAGED_NETWORK_PROTOCOL_GUID \
10570ee2302tsoome{ 0x7ab33a91, 0xace5, 0x4326, {0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16} }
10580ee2302tsoome
10590ee2302tsoome#define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \
10600ee2302tsoome{ 0x2FE800BE, 0x8F01, 0x4aa6, {0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F} }
10610ee2302tsoome
10620ee2302tsoome#define EFI_MTFTP4_PROTOCOL_GUID \
10630ee2302tsoome{ 0x78247c57, 0x63db, 0x4708, {0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b} }
10640ee2302tsoome
10650ee2302tsoome#define EFI_MTFTP6_SERVICE_BINDING_PROTOCOL_GUID \
10660ee2302tsoome{ 0xd9760ff3, 0x3cca, 0x4267, {0x80, 0xf9, 0x75, 0x27, 0xfa, 0xfa, 0x42, 0x23} }
10670ee2302tsoome
10680ee2302tsoome#define EFI_MTFTP6_PROTOCOL_GUID \
10690ee2302tsoome{ 0xbf0a78ba, 0xec29, 0x49cf, {0xa1, 0xc9, 0x7a, 0xe5, 0x4e, 0xab, 0x6a, 0x51} }
10700ee2302tsoome
10710ee2302tsoome#define EFI_DHCP4_PROTOCOL_GUID \
10720ee2302tsoome{ 0x8a219718, 0x4ef5, 0x4761, {0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56} }
10730ee2302tsoome
10740ee2302tsoome#define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \
10750ee2302tsoome{ 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80} }
10760ee2302tsoome
10770ee2302tsoome#define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \
10780ee2302tsoome{ 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5} }
10790ee2302tsoome
10800ee2302tsoome#define EFI_DHCP6_PROTOCOL_GUID \
10810ee2302tsoome{ 0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b} }
10820ee2302tsoome
10830ee2302tsoome#define EFI_SCSI_PASS_THRU_PROTOCOL_GUID \
10840ee2302tsoome{ 0xa59e8fcf, 0xbda0, 0x43bb, {0x90, 0xb1, 0xd3, 0x73, 0x2e, 0xca, 0xa8, 0x77} }
10850ee2302tsoome
10860ee2302tsoome#define EFI_EXT_SCSI_PASS_THRU_PROTOCOL_GUID \
10870ee2302tsoome{ 0x143b7632, 0xb81b, 0x4cb7, {0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe} }
10880ee2302tsoome
10890ee2302tsoome#define EFI_DISK_INFO_PROTOCOL_GUID \
10900ee2302tsoome{ 0xd432a67f, 0x14dc, 0x484b, {0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27} }
10910ee2302tsoome
10920ee2302tsoome#define EFI_ISA_IO_PROTOCOL_GUID \
10930ee2302tsoome{ 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
10940ee2302tsoome
10950ee2302tsoome#define EFI_VLAN_CONFIG_PROTOCOL_GUID \
10960ee2302tsoome{ 0x9e23d768, 0xd2f3, 0x4366, {0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74} }
10970ee2302tsoome
10980ee2302tsoome#define EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID \
10990ee2302tsoome{ 0xa1e37052, 0x80d9, 0x4e65, {0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9} }
11000ee2302tsoome
11010ee2302tsoome#define EFI_ISA_ACPI_PROTOCOL_GUID \
11020ee2302tsoome{ 0x64a892dc, 0x5561, 0x4536, {0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55} }
11030ee2302tsoome
11040ee2302tsoome#define EFI_PCI_ENUMERATION_COMPLETE_GUID \
11050ee2302tsoome{ 0x30cfe3e7, 0x3de1, 0x4586, {0xbe, 0x20, 0xde, 0xab, 0xa1, 0xb3, 0xb7, 0x93} }
11060ee2302tsoome
11070ee2302tsoome#define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID \
11080ee2302tsoome{ 0x0784924f, 0xe296, 0x11d4, {0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
11090ee2302tsoome
11100ee2302tsoome#define EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID \
11110ee2302tsoome{ 0x4d330321, 0x025f, 0x4aac, {0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63} }
11120ee2302tsoome
11130ee2302tsoome#define EFI_CAPSULE_ARCH_PROTOCOL_GUID \
11140ee2302tsoome{ 0x5053697e, 0x2cbc, 0x4819, {0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54} }
11150ee2302tsoome
11160ee2302tsoome#define EFI_MONOTONIC_COUNTER_ARCH_PROTOCOL_GUID \
11170ee2302tsoome{0x1da97072, 0xbddc, 0x4b30, {0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a} }
11180ee2302tsoome
11190ee2302tsoome#define EFI_REALTIME_CLOCK_ARCH_PROTOCOL_GUID \
11200ee2302tsoome{0x27cfac87, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
11210ee2302tsoome
11220ee2302tsoome#define EFI_MP_SERVICES_PROTOCOL_GUID \
11230ee2302tsoome{ 0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08} }
11240ee2302tsoome
11250ee2302tsoome#define EFI_VARIABLE_ARCH_PROTOCOL_GUID \
11260ee2302tsoome{ 0x1e5668e2, 0x8481, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
11270ee2302tsoome
11280ee2302tsoome#define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \
11290ee2302tsoome{ 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
11300ee2302tsoome
11310ee2302tsoome#define EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID \
11320ee2302tsoome{ 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
11330ee2302tsoome
11340ee2302tsoome#define EFI_ACPI_SUPPORT_PROTOCOL_GUID \
11350ee2302tsoome{ 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
11360ee2302tsoome
11370ee2302tsoome#define EFI_BDS_ARCH_PROTOCOL_GUID \
11380ee2302tsoome{ 0x665e3ff6, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
11390ee2302tsoome
11400ee2302tsoome#define EFI_METRONOME_ARCH_PROTOCOL_GUID \
11410ee2302tsoome{ 0x26baccb2, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
11420ee2302tsoome
11430ee2302tsoome#define EFI_TIMER_ARCH_PROTOCOL_GUID \
11440ee2302tsoome{ 0x26baccb3, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
11450ee2302tsoome
11460ee2302tsoome#define EFI_DPC_PROTOCOL_GUID \
11470ee2302tsoome{ 0x480f8ae9, 0xc46, 0x4aa9, { 0xbc, 0x89, 0xdb, 0x9f, 0xba, 0x61, 0x98, 0x6} }
11480ee2302tsoome
11490ee2302tsoome#define EFI_PRINT2_PROTOCOL_GUID  \
11500ee2302tsoome{ 0xf05976ef, 0x83f1, 0x4f3d, {0x86, 0x19, 0xf7, 0x59, 0x5d, 0x41, 0xe5, 0x38} }
11510ee2302tsoome
11520ee2302tsoome#define EFI_RESET_ARCH_PROTOCOL_GUID  \
11530ee2302tsoome{ 0x27cfac88, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
11540ee2302tsoome
11550ee2302tsoome#define EFI_CPU_ARCH_PROTOCOL_GUID \
11560ee2302tsoome{ 0x26baccb1, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
11570ee2302tsoome
11580ee2302tsoome#define EFI_CPU_IO2_PROTOCOL_GUID \
11590ee2302tsoome{ 0xad61f191, 0xae5f, 0x4c0e, {0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f} }
11600ee2302tsoome
11610ee2302tsoome#define EFI_LEGACY_8259_PROTOCOL_GUID \
11620ee2302tsoome{ 0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1} }
11630ee2302tsoome
11640ee2302tsoome#define EFI_SECURITY_ARCH_PROTOCOL_GUID \
11650ee2302tsoome{ 0xa46423e3, 0x4617, 0x49f1, {0xb9, 0xff, 0xd1, 0xbf, 0xa9, 0x11, 0x58, 0x39} }
11660ee2302tsoome
11670ee2302tsoome#define EFI_SECURITY2_ARCH_PROTOCOL_GUID \
11680ee2302tsoome{ 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68} }
11690ee2302tsoome
11700ee2302tsoome#define EFI_RUNTIME_ARCH_PROTOCOL_GUID \
11710ee2302tsoome{ 0xb7dfb4e1, 0x52f, 0x449f, {0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33} }
11720ee2302tsoome
11730ee2302tsoome#define EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID  \
11740ee2302tsoome{ 0xd2b2b828, 0x826, 0x48a7, {0xb3, 0xdf, 0x98, 0x3c, 0x0, 0x60, 0x24, 0xf0} }
11750ee2302tsoome
11760ee2302tsoome#define EFI_DATA_HUB_PROTOCOL_GUID \
11770ee2302tsoome{ 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
11780ee2302tsoome
11790ee2302tsoome#define PCD_PROTOCOL_GUID \
11800ee2302tsoome{ 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7} }
11810ee2302tsoome
11820ee2302tsoome#define EFI_PCD_PROTOCOL_GUID \
11830ee2302tsoome{ 0x13a3f0f6, 0x264a, 0x3ef0, {0xf2, 0xe0, 0xde, 0xc5, 0x12, 0x34, 0x2f, 0x34} }
11840ee2302tsoome
11850ee2302tsoome#define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \
11860ee2302tsoome{ 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } }
11870ee2302tsoome
11880ee2302tsoome#define EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID \
11890ee2302tsoome{ 0x220e73b6, 0x6bdb, 0x4413, { 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a } }
11900ee2302tsoome
11910ee2302tsoome#define EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID \
11920ee2302tsoome{ 0x7aa35a69, 0x506c, 0x444f, {0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8} }
11930ee2302tsoome
11940ee2302tsoome#define LZMA_COMPRESS_GUID \
11950ee2302tsoome{ 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x03, 0xcf} }
11965398454dfr#endif
1197