Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:05

0001 /* $FreeBSD$ */
0002 #ifndef _EFI_API_H
0003 #define _EFI_API_H
0004 
0005 /*++
0006 
0007 Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
0008 This software and associated documentation (if any) is furnished
0009 under a license and may only be used or copied in accordance
0010 with the terms of the license. Except as permitted by such
0011 license, no part of this software or documentation may be
0012 reproduced, stored in a retrieval system, or transmitted in any
0013 form or by any means without the express written consent of
0014 Intel Corporation.
0015 
0016 Module Name:
0017 
0018     efiapi.h
0019 
0020 Abstract:
0021 
0022     Global EFI runtime & boot service interfaces
0023 
0024 
0025 
0026 
0027 Revision History
0028 
0029 --*/
0030 
0031 //
0032 // EFI Specification Revision
0033 //
0034 
0035 #define EFI_SPECIFICATION_MAJOR_REVISION 1
0036 #define EFI_SPECIFICATION_MINOR_REVISION 10
0037 
0038 //
0039 // Declare forward referenced data structures
0040 //
0041 
0042 INTERFACE_DECL(_EFI_SYSTEM_TABLE);
0043 
0044 //
0045 // EFI Memory
0046 //
0047 
0048 typedef
0049 EFI_STATUS
0050 (EFIAPI *EFI_ALLOCATE_PAGES) (
0051     IN EFI_ALLOCATE_TYPE            Type,
0052     IN EFI_MEMORY_TYPE              MemoryType,
0053     IN UINTN                        NoPages,
0054     OUT EFI_PHYSICAL_ADDRESS        *Memory
0055     );
0056 
0057 typedef
0058 EFI_STATUS
0059 (EFIAPI *EFI_FREE_PAGES) (
0060     IN EFI_PHYSICAL_ADDRESS         Memory,
0061     IN UINTN                        NoPages
0062     );
0063 
0064 typedef
0065 EFI_STATUS
0066 (EFIAPI *EFI_GET_MEMORY_MAP) (
0067     IN OUT UINTN                    *MemoryMapSize,
0068     IN OUT EFI_MEMORY_DESCRIPTOR    *MemoryMap,
0069     OUT UINTN                       *MapKey,
0070     OUT UINTN                       *DescriptorSize,
0071     OUT UINT32                      *DescriptorVersion
0072     );
0073 
0074 #define NextMemoryDescriptor(Ptr,Size)  ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
0075 
0076 
0077 typedef
0078 EFI_STATUS
0079 (EFIAPI *EFI_ALLOCATE_POOL) (
0080     IN EFI_MEMORY_TYPE              PoolType,
0081     IN UINTN                        Size,
0082     OUT VOID                        **Buffer
0083     );
0084 
0085 typedef
0086 EFI_STATUS
0087 (EFIAPI *EFI_FREE_POOL) (
0088     IN VOID                         *Buffer
0089     );
0090 
0091 typedef
0092 EFI_STATUS
0093 (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
0094     IN UINTN                        MemoryMapSize,
0095     IN UINTN                        DescriptorSize,
0096     IN UINT32                       DescriptorVersion,
0097     IN EFI_MEMORY_DESCRIPTOR        *VirtualMap
0098     );
0099 
0100 
0101 #define EFI_OPTIONAL_PTR            0x00000001
0102 #define EFI_INTERNAL_FNC            0x00000002      // Pointer to internal runtime fnc
0103 #define EFI_INTERNAL_PTR            0x00000004      // Pointer to internal runtime data
0104 
0105 
0106 typedef
0107 EFI_STATUS
0108 (EFIAPI *EFI_CONVERT_POINTER) (
0109     IN UINTN                        DebugDisposition,
0110     IN OUT VOID                     **Address
0111     );
0112 
0113 
0114 //
0115 // EFI Events
0116 //
0117 
0118 
0119 
0120 #define EVT_TIMER                           0x80000000
0121 #define EVT_RUNTIME                         0x40000000
0122 #define EVT_RUNTIME_CONTEXT                 0x20000000
0123 
0124 #define EVT_NOTIFY_WAIT                     0x00000100
0125 #define EVT_NOTIFY_SIGNAL                   0x00000200
0126 
0127 #define EVT_SIGNAL_EXIT_BOOT_SERVICES       0x00000201
0128 #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE   0x60000202
0129 
0130 #define EVT_EFI_SIGNAL_MASK                 0x000000FF
0131 #define EVT_EFI_SIGNAL_MAX                  2
0132 
0133 typedef
0134 VOID
0135 (EFIAPI *EFI_EVENT_NOTIFY) (
0136     IN EFI_EVENT                Event,
0137     IN VOID                     *Context
0138     );
0139 
0140 typedef
0141 EFI_STATUS
0142 (EFIAPI *EFI_CREATE_EVENT) (
0143     IN UINT32                       Type,
0144     IN EFI_TPL                      NotifyTpl,
0145     IN EFI_EVENT_NOTIFY             NotifyFunction,
0146     IN VOID                         *NotifyContext,
0147     OUT EFI_EVENT                   *Event
0148     );
0149 
0150 typedef enum {
0151     TimerCancel,
0152     TimerPeriodic,
0153     TimerRelative,
0154     TimerTypeMax
0155 } EFI_TIMER_DELAY;
0156 
0157 typedef
0158 EFI_STATUS
0159 (EFIAPI *EFI_SET_TIMER) (
0160     IN EFI_EVENT                Event,
0161     IN EFI_TIMER_DELAY          Type,
0162     IN UINT64                   TriggerTime
0163     );
0164 
0165 typedef
0166 EFI_STATUS
0167 (EFIAPI *EFI_SIGNAL_EVENT) (
0168     IN EFI_EVENT                Event
0169     );
0170 
0171 typedef
0172 EFI_STATUS
0173 (EFIAPI *EFI_WAIT_FOR_EVENT) (
0174     IN UINTN                    NumberOfEvents,
0175     IN EFI_EVENT                *Event,
0176     OUT UINTN                   *Index
0177     );
0178 
0179 typedef
0180 EFI_STATUS
0181 (EFIAPI *EFI_CLOSE_EVENT) (
0182     IN EFI_EVENT                Event
0183     );
0184 
0185 typedef
0186 EFI_STATUS
0187 (EFIAPI *EFI_CHECK_EVENT) (
0188     IN EFI_EVENT                Event
0189     );
0190 
0191 //
0192 // Task priority level
0193 //
0194 
0195 #define TPL_APPLICATION    4
0196 #define TPL_CALLBACK       8
0197 #define TPL_NOTIFY        16
0198 #define TPL_HIGH_LEVEL    31
0199 
0200 typedef
0201 EFI_TPL
0202 (EFIAPI *EFI_RAISE_TPL) (
0203     IN EFI_TPL      NewTpl
0204     );
0205 
0206 typedef
0207 VOID
0208 (EFIAPI *EFI_RESTORE_TPL) (
0209     IN EFI_TPL      OldTpl
0210     );
0211 
0212 
0213 //
0214 // EFI platform varibles
0215 //
0216 
0217 #define EFI_GLOBAL_VARIABLE \
0218     { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
0219 
0220 // Variable attributes
0221 #define EFI_VARIABLE_NON_VOLATILE       0x00000001
0222 #define EFI_VARIABLE_BOOTSERVICE_ACCESS     0x00000002
0223 #define EFI_VARIABLE_RUNTIME_ACCESS     0x00000004
0224 #define EFI_VARIABLE_HARDWARE_ERROR_RECORD  0x00000008
0225 #define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
0226 #define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS  0x00000020
0227 #define EFI_VARIABLE_APPEND_WRITE       0x00000040
0228 
0229 // Variable size limitation
0230 #define EFI_MAXIMUM_VARIABLE_SIZE           1024
0231 
0232 typedef
0233 EFI_STATUS
0234 (EFIAPI *EFI_GET_VARIABLE) (
0235     IN CHAR16                       *VariableName,
0236     IN EFI_GUID                     *VendorGuid,
0237     OUT UINT32                      *Attributes OPTIONAL,
0238     IN OUT UINTN                    *DataSize,
0239     OUT VOID                        *Data
0240     );
0241 
0242 typedef
0243 EFI_STATUS
0244 (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
0245     IN OUT UINTN                    *VariableNameSize,
0246     IN OUT CHAR16                   *VariableName,
0247     IN OUT EFI_GUID                 *VendorGuid
0248     );
0249 
0250 
0251 typedef
0252 EFI_STATUS
0253 (EFIAPI *EFI_SET_VARIABLE) (
0254     IN const CHAR16                 *VariableName,
0255     IN EFI_GUID                     *VendorGuid,
0256     IN UINT32                       Attributes,
0257     IN UINTN                        DataSize,
0258     IN VOID                         *Data
0259     );
0260 
0261 
0262 //
0263 // EFI Time
0264 //
0265 
0266 typedef struct {
0267         UINT32                      Resolution;     // 1e-6 parts per million
0268         UINT32                      Accuracy;       // hertz
0269         BOOLEAN                     SetsToZero;     // Set clears sub-second time
0270 } EFI_TIME_CAPABILITIES;
0271 
0272 
0273 typedef
0274 EFI_STATUS
0275 (EFIAPI *EFI_GET_TIME) (
0276     OUT EFI_TIME                    *Time,
0277     OUT EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
0278     );
0279 
0280 typedef
0281 EFI_STATUS
0282 (EFIAPI *EFI_SET_TIME) (
0283     IN EFI_TIME                     *Time
0284     );
0285 
0286 typedef
0287 EFI_STATUS
0288 (EFIAPI *EFI_GET_WAKEUP_TIME) (
0289     OUT BOOLEAN                     *Enabled,
0290     OUT BOOLEAN                     *Pending,
0291     OUT EFI_TIME                    *Time
0292     );
0293 
0294 typedef
0295 EFI_STATUS
0296 (EFIAPI *EFI_SET_WAKEUP_TIME) (
0297     IN BOOLEAN                      Enable,
0298     IN EFI_TIME                     *Time OPTIONAL
0299     );
0300 
0301 
0302 //
0303 // Image functions
0304 //
0305 
0306 
0307 // PE32+ Subsystem type for EFI images
0308 
0309 #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
0310 #define IMAGE_SUBSYSTEM_EFI_APPLICATION             10
0311 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER     11
0312 #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER          12
0313 #endif
0314 
0315 // PE32+ Machine type for EFI images
0316 
0317 #if !defined(EFI_IMAGE_MACHINE_IA32)
0318 #define EFI_IMAGE_MACHINE_IA32      0x014c
0319 #endif
0320 
0321 #if !defined(EFI_IMAGE_MACHINE_EBC)
0322 #define EFI_IMAGE_MACHINE_EBC       0x0EBC
0323 #endif
0324 
0325 // Image Entry prototype
0326 
0327 typedef
0328 EFI_STATUS
0329 (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
0330     IN EFI_HANDLE                   ImageHandle,
0331     IN struct _EFI_SYSTEM_TABLE     *SystemTable
0332     );
0333 
0334 typedef
0335 EFI_STATUS
0336 (EFIAPI *EFI_IMAGE_LOAD) (
0337     IN BOOLEAN                      BootPolicy,
0338     IN EFI_HANDLE                   ParentImageHandle,
0339     IN EFI_DEVICE_PATH              *FilePath,
0340     IN VOID                         *SourceBuffer   OPTIONAL,
0341     IN UINTN                        SourceSize,
0342     OUT EFI_HANDLE                  *ImageHandle
0343     );
0344 
0345 typedef
0346 EFI_STATUS
0347 (EFIAPI *EFI_IMAGE_START) (
0348     IN EFI_HANDLE                   ImageHandle,
0349     OUT UINTN                       *ExitDataSize,
0350     OUT CHAR16                      **ExitData  OPTIONAL
0351     );
0352 
0353 typedef
0354 EFI_STATUS
0355 (EFIAPI *EFI_EXIT) (
0356     IN EFI_HANDLE                   ImageHandle,
0357     IN EFI_STATUS                   ExitStatus,
0358     IN UINTN                        ExitDataSize,
0359     IN CHAR16                       *ExitData OPTIONAL
0360     )
0361 #ifndef __rtems__
0362     __dead2
0363 #endif
0364     ;
0365 
0366 typedef
0367 EFI_STATUS
0368 (EFIAPI *EFI_IMAGE_UNLOAD) (
0369     IN EFI_HANDLE                   ImageHandle
0370     );
0371 
0372 
0373 // Image handle
0374 #define LOADED_IMAGE_PROTOCOL \
0375     { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
0376 
0377 #define EFI_LOADED_IMAGE_INFORMATION_REVISION      0x1000
0378 typedef struct {
0379     UINT32                          Revision;
0380     EFI_HANDLE                      ParentHandle;
0381     struct _EFI_SYSTEM_TABLE        *SystemTable;
0382 
0383     // Source location of image
0384     EFI_HANDLE                      DeviceHandle;
0385     EFI_DEVICE_PATH                 *FilePath;
0386     VOID                            *Reserved;
0387 
0388     // Images load options
0389     UINT32                          LoadOptionsSize;
0390     VOID                            *LoadOptions;
0391 
0392     // Location of where image was loaded
0393     VOID                            *ImageBase;
0394     UINT64                          ImageSize;
0395     EFI_MEMORY_TYPE                 ImageCodeType;
0396     EFI_MEMORY_TYPE                 ImageDataType;
0397 
0398     // If the driver image supports a dynamic unload request
0399     EFI_IMAGE_UNLOAD                Unload;
0400 
0401 } EFI_LOADED_IMAGE;
0402 
0403 
0404 typedef
0405 EFI_STATUS
0406 (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
0407     IN EFI_HANDLE                   ImageHandle,
0408     IN UINTN                        MapKey
0409     );
0410 
0411 //
0412 // Misc
0413 //
0414 
0415 
0416 typedef
0417 EFI_STATUS
0418 (EFIAPI *EFI_STALL) (
0419     IN UINTN                    Microseconds
0420     );
0421 
0422 typedef
0423 EFI_STATUS
0424 (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
0425     IN UINTN                    Timeout,
0426     IN UINT64                   WatchdogCode,
0427     IN UINTN                    DataSize,
0428     IN CHAR16                   *WatchdogData OPTIONAL
0429     );
0430 
0431 
0432 typedef enum {
0433     EfiResetCold,
0434     EfiResetWarm,
0435     EfiResetShutdown
0436 } EFI_RESET_TYPE;
0437 
0438 typedef
0439 VOID
0440 (EFIAPI *EFI_RESET_SYSTEM) (
0441     IN EFI_RESET_TYPE           ResetType,
0442     IN EFI_STATUS               ResetStatus,
0443     IN UINTN                    DataSize,
0444     IN CHAR16                   *ResetData OPTIONAL
0445     )
0446 #ifndef __rtems__
0447     __dead2
0448 #endif
0449     ;
0450 
0451 typedef
0452 EFI_STATUS
0453 (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
0454     OUT UINT64                  *Count
0455     );
0456 
0457 typedef
0458 EFI_STATUS
0459 (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
0460     OUT UINT32                  *HighCount
0461     );
0462 
0463 //
0464 // Protocol handler functions
0465 //
0466 
0467 typedef enum {
0468     EFI_NATIVE_INTERFACE
0469 } EFI_INTERFACE_TYPE;
0470 
0471 typedef
0472 EFI_STATUS
0473 (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
0474     IN OUT EFI_HANDLE           *Handle,
0475     IN EFI_GUID                 *Protocol,
0476     IN EFI_INTERFACE_TYPE       InterfaceType,
0477     IN VOID                     *Interface
0478     );
0479 
0480 typedef
0481 EFI_STATUS
0482 (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
0483     IN EFI_HANDLE               Handle,
0484     IN EFI_GUID                 *Protocol,
0485     IN VOID                     *OldInterface,
0486     IN VOID                     *NewInterface
0487     );
0488 
0489 typedef
0490 EFI_STATUS
0491 (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
0492     IN EFI_HANDLE               Handle,
0493     IN EFI_GUID                 *Protocol,
0494     IN VOID                     *Interface
0495     );
0496 
0497 typedef
0498 EFI_STATUS
0499 (EFIAPI *EFI_HANDLE_PROTOCOL) (
0500     IN EFI_HANDLE               Handle,
0501     IN EFI_GUID                 *Protocol,
0502     OUT VOID                    **Interface
0503     );
0504 
0505 typedef
0506 EFI_STATUS
0507 (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
0508     IN EFI_GUID                 *Protocol,
0509     IN EFI_EVENT                Event,
0510     OUT VOID                    **Registration
0511     );
0512 
0513 typedef enum {
0514     AllHandles,
0515     ByRegisterNotify,
0516     ByProtocol
0517 } EFI_LOCATE_SEARCH_TYPE;
0518 
0519 typedef
0520 EFI_STATUS
0521 (EFIAPI *EFI_LOCATE_HANDLE) (
0522     IN EFI_LOCATE_SEARCH_TYPE   SearchType,
0523     IN EFI_GUID                 *Protocol OPTIONAL,
0524     IN VOID                     *SearchKey OPTIONAL,
0525     IN OUT UINTN                *BufferSize,
0526     OUT EFI_HANDLE              *Buffer
0527     );
0528 
0529 typedef
0530 EFI_STATUS
0531 (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
0532     IN EFI_GUID                 *Protocol,
0533     IN OUT EFI_DEVICE_PATH      **DevicePath,
0534     OUT EFI_HANDLE              *Device
0535     );
0536 
0537 typedef
0538 EFI_STATUS
0539 (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
0540     IN EFI_GUID                 *Guid,
0541     IN VOID                     *Table
0542     );
0543 
0544 typedef
0545 EFI_STATUS
0546 (EFIAPI *EFI_RESERVED_SERVICE) (
0547     VOID
0548     );
0549 
0550 typedef
0551 EFI_STATUS
0552 (EFIAPI *EFI_CONNECT_CONTROLLER) (
0553   IN  EFI_HANDLE                    ControllerHandle,
0554   IN  EFI_HANDLE                    *DriverImageHandle    OPTIONAL,
0555   IN  EFI_DEVICE_PATH               *RemainingDevicePath  OPTIONAL,
0556   IN  BOOLEAN                       Recursive
0557   );
0558 
0559 typedef
0560 EFI_STATUS
0561 (EFIAPI *EFI_DISCONNECT_CONTROLLER)(
0562   IN EFI_HANDLE           ControllerHandle,
0563   IN EFI_HANDLE           DriverImageHandle, OPTIONAL
0564   IN EFI_HANDLE           ChildHandle        OPTIONAL
0565   );
0566 
0567 #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL     0x00000001
0568 #define EFI_OPEN_PROTOCOL_GET_PROTOCOL         0x00000002
0569 #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL        0x00000004
0570 #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER  0x00000008
0571 #define EFI_OPEN_PROTOCOL_BY_DRIVER            0x00000010
0572 #define EFI_OPEN_PROTOCOL_EXCLUSIVE            0x00000020
0573 
0574 typedef
0575 EFI_STATUS
0576 (EFIAPI *EFI_OPEN_PROTOCOL) (
0577   IN EFI_HANDLE                 Handle,
0578   IN EFI_GUID                   *Protocol,
0579   OUT VOID                      **Interface,
0580   IN  EFI_HANDLE                ImageHandle,
0581   IN  EFI_HANDLE                ControllerHandle, OPTIONAL
0582   IN  UINT32                    Attributes
0583   );
0584 
0585 typedef
0586 EFI_STATUS
0587 (EFIAPI *EFI_CLOSE_PROTOCOL) (
0588   IN EFI_HANDLE               Handle,
0589   IN EFI_GUID                 *Protocol,
0590   IN EFI_HANDLE               ImageHandle,
0591   IN EFI_HANDLE               DeviceHandle
0592   );
0593 
0594 typedef struct {
0595   EFI_HANDLE                  AgentHandle;
0596   EFI_HANDLE                  ControllerHandle;
0597   UINT32                      Attributes;
0598   UINT32                      OpenCount;
0599 } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
0600 
0601 typedef
0602 EFI_STATUS
0603 (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
0604   IN  EFI_HANDLE                          UserHandle,
0605   IN  EFI_GUID                            *Protocol,
0606   IN  EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
0607   OUT UINTN                               *EntryCount
0608   );
0609 
0610 typedef
0611 EFI_STATUS
0612 (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
0613   IN EFI_HANDLE       UserHandle,
0614   OUT EFI_GUID        ***ProtocolBuffer,
0615   OUT UINTN           *ProtocolBufferCount
0616   );
0617 
0618 typedef
0619 EFI_STATUS
0620 (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
0621   IN EFI_LOCATE_SEARCH_TYPE       SearchType,
0622   IN EFI_GUID                     *Protocol OPTIONAL,
0623   IN VOID                         *SearchKey OPTIONAL,
0624   IN OUT UINTN                    *NumberHandles,
0625   OUT EFI_HANDLE                  **Buffer
0626   );
0627 
0628 typedef
0629 EFI_STATUS
0630 (EFIAPI *EFI_LOCATE_PROTOCOL) (
0631   EFI_GUID  *Protocol,
0632   VOID      *Registration, OPTIONAL
0633   VOID      **Interface
0634   );
0635 
0636 typedef
0637 EFI_STATUS
0638 (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
0639   IN OUT EFI_HANDLE           *Handle,
0640   ...
0641   );
0642 
0643 typedef
0644 EFI_STATUS
0645 (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
0646   IN EFI_HANDLE           Handle,
0647   ...
0648   );
0649 
0650 typedef
0651 EFI_STATUS
0652 (EFIAPI *EFI_CALCULATE_CRC32) (
0653   IN  VOID                              *Data,
0654   IN  UINTN                             DataSize,
0655   OUT UINT32                            *Crc32
0656   );
0657 
0658 typedef
0659 VOID
0660 (EFIAPI *EFI_COPY_MEM) (
0661   IN VOID     *Destination,
0662   IN VOID     *Source,
0663   IN UINTN    Length
0664   );
0665 
0666 typedef
0667 VOID
0668 (EFIAPI *EFI_SET_MEM) (
0669   IN VOID     *Buffer,
0670   IN UINTN    Size,
0671   IN UINT8    Value
0672   );
0673 
0674 //
0675 // Standard EFI table header
0676 //
0677 
0678 typedef struct _EFI_TABLE_HEARDER {
0679   UINT64                      Signature;
0680   UINT32                      Revision;
0681   UINT32                      HeaderSize;
0682   UINT32                      CRC32;
0683   UINT32                      Reserved;
0684 } EFI_TABLE_HEADER;
0685 
0686 
0687 //
0688 // EFI Runtime Serivces Table
0689 //
0690 
0691 #define EFI_RUNTIME_SERVICES_SIGNATURE  0x56524553544e5552
0692 #define EFI_RUNTIME_SERVICES_REVISION   ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
0693 
0694 typedef struct  {
0695   EFI_TABLE_HEADER                Hdr;
0696 
0697   //
0698   // Time services
0699   //
0700 
0701   EFI_GET_TIME                    GetTime;
0702   EFI_SET_TIME                    SetTime;
0703   EFI_GET_WAKEUP_TIME             GetWakeupTime;
0704   EFI_SET_WAKEUP_TIME             SetWakeupTime;
0705 
0706   //
0707   // Virtual memory services
0708   //
0709 
0710   EFI_SET_VIRTUAL_ADDRESS_MAP     SetVirtualAddressMap;
0711   EFI_CONVERT_POINTER             ConvertPointer;
0712 
0713   //
0714   // Variable serviers
0715   //
0716 
0717   EFI_GET_VARIABLE                GetVariable;
0718   EFI_GET_NEXT_VARIABLE_NAME      GetNextVariableName;
0719   EFI_SET_VARIABLE                SetVariable;
0720 
0721   //
0722   // Misc
0723   //
0724 
0725   EFI_GET_NEXT_HIGH_MONO_COUNT    GetNextHighMonotonicCount;
0726   EFI_RESET_SYSTEM                ResetSystem;
0727 
0728 } EFI_RUNTIME_SERVICES;
0729 
0730 
0731 //
0732 // EFI Boot Services Table
0733 //
0734 
0735 #define EFI_BOOT_SERVICES_SIGNATURE     0x56524553544f4f42
0736 #define EFI_BOOT_SERVICES_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
0737 
0738 typedef struct {
0739 
0740   EFI_TABLE_HEADER                Hdr;
0741 
0742   //
0743   // Task priority functions
0744   //
0745 
0746   EFI_RAISE_TPL                   RaiseTPL;
0747   EFI_RESTORE_TPL                 RestoreTPL;
0748 
0749   //
0750   // Memory functions
0751   //
0752 
0753   EFI_ALLOCATE_PAGES              AllocatePages;
0754   EFI_FREE_PAGES                  FreePages;
0755   EFI_GET_MEMORY_MAP              GetMemoryMap;
0756   EFI_ALLOCATE_POOL               AllocatePool;
0757   EFI_FREE_POOL                   FreePool;
0758 
0759   //
0760   // Event & timer functions
0761   //
0762 
0763   EFI_CREATE_EVENT                CreateEvent;
0764   EFI_SET_TIMER                   SetTimer;
0765   EFI_WAIT_FOR_EVENT              WaitForEvent;
0766   EFI_SIGNAL_EVENT                SignalEvent;
0767   EFI_CLOSE_EVENT                 CloseEvent;
0768   EFI_CHECK_EVENT                 CheckEvent;
0769 
0770   //
0771   // Protocol handler functions
0772   //
0773 
0774   EFI_INSTALL_PROTOCOL_INTERFACE  InstallProtocolInterface;
0775   EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
0776   EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
0777   EFI_HANDLE_PROTOCOL             HandleProtocol;
0778   VOID                            *Reserved;
0779   EFI_REGISTER_PROTOCOL_NOTIFY    RegisterProtocolNotify;
0780   EFI_LOCATE_HANDLE               LocateHandle;
0781   EFI_LOCATE_DEVICE_PATH          LocateDevicePath;
0782   EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
0783 
0784   //
0785   // Image functions
0786   //
0787 
0788   EFI_IMAGE_LOAD                  LoadImage;
0789   EFI_IMAGE_START                 StartImage;
0790   EFI_EXIT                        Exit;
0791   EFI_IMAGE_UNLOAD                UnloadImage;
0792   EFI_EXIT_BOOT_SERVICES          ExitBootServices;
0793 
0794   //
0795   // Misc functions
0796   //
0797 
0798   EFI_GET_NEXT_MONOTONIC_COUNT    GetNextMonotonicCount;
0799   EFI_STALL                       Stall;
0800   EFI_SET_WATCHDOG_TIMER          SetWatchdogTimer;
0801 
0802   //
0803   // DriverSupport Services
0804   //
0805   EFI_CONNECT_CONTROLLER            ConnectController;
0806   EFI_DISCONNECT_CONTROLLER       DisconnectController;
0807 
0808   //
0809   // Open and Close Protocol Services
0810   //
0811   EFI_OPEN_PROTOCOL               OpenProtocol;
0812   EFI_CLOSE_PROTOCOL              CloseProtocol;
0813   EFI_OPEN_PROTOCOL_INFORMATION   OpenProtocolInformation;
0814 
0815   //
0816   // Library Services to reduce size of drivers
0817   //
0818   EFI_PROTOCOLS_PER_HANDLE        ProtocolsPerHandle;
0819   EFI_LOCATE_HANDLE_BUFFER        LocateHandleBuffer;
0820   EFI_LOCATE_PROTOCOL             LocateProtocol;
0821 
0822   EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES    InstallMultipleProtocolInterfaces;
0823   EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES  UninstallMultipleProtocolInterfaces;
0824 
0825   //
0826   // CRC32 services
0827   //
0828   EFI_CALCULATE_CRC32             CalculateCrc32;
0829 
0830   //
0831   // Memory Utility Services
0832   //
0833   EFI_COPY_MEM                    CopyMem;
0834   EFI_SET_MEM                     SetMem;
0835 
0836 } EFI_BOOT_SERVICES;
0837 
0838 
0839 //
0840 // EFI Configuration Table and GUID definitions
0841 //
0842 
0843 #define MPS_TABLE_GUID \
0844     { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
0845 
0846 #define ACPI_TABLE_GUID \
0847     { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
0848 
0849 #define ACPI_20_TABLE_GUID \
0850     { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
0851 
0852 #define SMBIOS_TABLE_GUID \
0853     { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
0854 
0855 #define SMBIOS3_TABLE_GUID \
0856     { 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94} }
0857 
0858 #define SAL_SYSTEM_TABLE_GUID  \
0859     { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
0860 
0861 #define FDT_TABLE_GUID \
0862     { 0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0} }
0863 
0864 #define DXE_SERVICES_TABLE_GUID \
0865     { 0x5ad34ba, 0x6f02, 0x4214, {0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9} }
0866 
0867 #define HOB_LIST_TABLE_GUID \
0868     { 0x7739f24c, 0x93d7, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
0869 
0870 #define LZMA_DECOMPRESSION_GUID \
0871     { 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x3, 0xcf} }
0872 
0873 #define ARM_MP_CORE_INFO_TABLE_GUID \
0874     { 0xa4ee0728, 0xe5d7, 0x4ac5, {0xb2, 0x1e, 0x65, 0x8e, 0xd8, 0x57, 0xe8, 0x34} }
0875 
0876 #define ESRT_TABLE_GUID \
0877     { 0xb122a263, 0x3661, 0x4f68, {0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80} }
0878 
0879 #define MEMORY_TYPE_INFORMATION_TABLE_GUID \
0880     { 0x4c19049f, 0x4137, 0x4dd3, {0x9c, 0x10, 0x8b, 0x97, 0xa8, 0x3f, 0xfd, 0xfa} }
0881 
0882 #define DEBUG_IMAGE_INFO_TABLE_GUID \
0883     { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} }
0884 
0885 typedef struct _EFI_CONFIGURATION_TABLE {
0886   EFI_GUID                VendorGuid;
0887   VOID                    *VendorTable;
0888 } EFI_CONFIGURATION_TABLE;
0889 
0890 
0891 //
0892 // EFI System Table
0893 //
0894 
0895 
0896 
0897 
0898 #define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
0899 #define EFI_SYSTEM_TABLE_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
0900 #define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | 10)
0901 #define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | 02)
0902 
0903 typedef struct _EFI_SYSTEM_TABLE {
0904   EFI_TABLE_HEADER                Hdr;
0905 
0906   CHAR16                          *FirmwareVendor;
0907   UINT32                          FirmwareRevision;
0908 
0909   EFI_HANDLE                      ConsoleInHandle;
0910   SIMPLE_INPUT_INTERFACE          *ConIn;
0911 
0912   EFI_HANDLE                      ConsoleOutHandle;
0913   SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
0914 
0915   EFI_HANDLE                      StandardErrorHandle;
0916   SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
0917 
0918   EFI_RUNTIME_SERVICES            *RuntimeServices;
0919   EFI_BOOT_SERVICES               *BootServices;
0920 
0921   UINTN                           NumberOfTableEntries;
0922   EFI_CONFIGURATION_TABLE         *ConfigurationTable;
0923 
0924 } EFI_SYSTEM_TABLE;
0925 
0926 /*
0927  * unlisted GUID's..
0928  */
0929 #define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
0930 { 0x13AC6DD1, 0x73D0, 0x11D4, {0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7} }
0931 
0932 #define EFI_DRIVER_CONFIGURATION2_PROTOCOL_GUID \
0933 { 0xbfd7dc1d, 0x24f1, 0x40d9, {0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe} }
0934 
0935 #define EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID \
0936 { 0x107a772b, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
0937 
0938 #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
0939   { 0x18A031AB, 0xB443, 0x4D1A, \
0940     { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71 } \
0941   }
0942 
0943 #define EFI_TAPE_IO_PROTOCOL_GUID \
0944   { 0x1e93e633, 0xd65a, 0x459e, \
0945     { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
0946   }
0947 
0948 #define EFI_SCSI_IO_PROTOCOL_GUID \
0949   { 0x932f47e6, 0x2362, 0x4002, \
0950     { 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
0951   }
0952 
0953 #define EFI_USB2_HC_PROTOCOL_GUID \
0954   { 0x3e745226, 0x9818, 0x45b6, \
0955     { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } \
0956   }
0957 
0958 #define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
0959   { 0x2755590C, 0x6F3C, 0x42FA, \
0960     { 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
0961   }
0962 
0963 #define EFI_DEBUGPORT_PROTOCOL_GUID \
0964   { 0xEBA4E8D2, 0x3858, 0x41EC, \
0965     { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
0966   }
0967 
0968 #define EFI_DECOMPRESS_PROTOCOL_GUID \
0969   { 0xd8117cfe, 0x94a6, 0x11d4, \
0970     { 0x9a, 0x3a, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
0971   }
0972 
0973 #define EFI_ACPI_TABLE_PROTOCOL_GUID \
0974   { 0xffe06bdd, 0x6107, 0x46a6, \
0975     { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
0976   }
0977 
0978 #define EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \
0979   { 0x587e72d7, 0xcc50, 0x4f79, \
0980     { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } \
0981   }
0982 
0983 #define EFI_HII_DATABASE_PROTOCOL_GUID \
0984   { 0xef9fc172, 0xa1b2, 0x4693, \
0985     { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } \
0986   }
0987 
0988 #define EFI_HII_STRING_PROTOCOL_GUID \
0989   { 0xfd96974, 0x23aa, 0x4cdc, \
0990     { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } \
0991   }
0992 
0993 #define EFI_HII_IMAGE_PROTOCOL_GUID \
0994   { 0x31a6406a, 0x6bdf, 0x4e46, \
0995     { 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20 } \
0996   }
0997 
0998 #define EFI_HII_FONT_PROTOCOL_GUID \
0999   { 0xe9ca4775, 0x8657, 0x47fc, \
1000     { 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24 } \
1001   }
1002 #define EFI_HII_CONFIGURATION_ACCESS_PROTOCOL_GUID \
1003   { 0x330d4706, 0xf2a0, 0x4e4f, \
1004     { 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 } \
1005   }
1006 
1007 #define EFI_COMPONENT_NAME_PROTOCOL_GUID \
1008 { 0x107a772c, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1009 
1010 #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
1011   { 0x6a7a5cff, 0xe8d9, 0x4f70, \
1012     { 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \
1013   }
1014 
1015 #define EFI_USB_IO_PROTOCOL_GUID \
1016   { 0x2B2F68D6, 0x0CD2, 0x44cf, \
1017     { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
1018   }
1019 #define EFI_HCDP_TABLE_GUID \
1020   { 0xf951938d, 0x620b, 0x42ef, \
1021       { 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } \
1022   }
1023 
1024 #define EFI_DEVICE_TREE_GUID \
1025   { 0xb1b621d5, 0xf19c, 0x41a5, \
1026       { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } \
1027   }
1028 
1029 #define EFI_VENDOR_APPLE_GUID \
1030   { 0x2B0585EB, 0xD8B8, 0x49A9, \
1031       { 0x8B, 0x8C, 0xE2, 0x1B, 0x01, 0xAE, 0xF2, 0xB7 } \
1032   }
1033 
1034 #define EFI_CONSOLE_IN_DEVICE_GUID    \
1035 { 0xd3b36f2b, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1036 
1037 #define EFI_CONSOLE_OUT_DEVICE_GUID    \
1038 { 0xd3b36f2c, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1039 
1040 #define EFI_STANDARD_ERROR_DEVICE_GUID  \
1041 { 0xd3b36f2d, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1042 
1043 #define EFI_UNICODE_COLLATION2_PROTOCOL_GUID \
1044 { 0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49} }
1045 
1046 #define EFI_FORM_BROWSER2_PROTOCOL_GUID \
1047 { 0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58} }
1048 
1049 #define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \
1050 { 0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3} }
1051 
1052 #define EFI_ARP_PROTOCOL_GUID \
1053 { 0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c} }
1054 
1055 #define EFI_IP4_CONFIG_PROTOCOL_GUID \
1056 { 0x3b95aa31, 0x3793, 0x434b, {0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e} }
1057 
1058 #define EFI_IP6_CONFIG_PROTOCOL_GUID \
1059 { 0x937fe521, 0x95ae, 0x4d1a, {0x89, 0x29, 0x48, 0xbc, 0xd9, 0x0a, 0xd3, 0x1a} }
1060 
1061 #define EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID \
1062 { 0xf36ff770, 0xa7e1, 0x42cf, {0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c} }
1063 
1064 #define EFI_MANAGED_NETWORK_PROTOCOL_GUID \
1065 { 0x7ab33a91, 0xace5, 0x4326, {0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16} }
1066 
1067 #define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \
1068 { 0x2FE800BE, 0x8F01, 0x4aa6, {0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F} }
1069 
1070 #define EFI_MTFTP4_PROTOCOL_GUID \
1071 { 0x78247c57, 0x63db, 0x4708, {0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b} }
1072 
1073 #define EFI_MTFTP6_SERVICE_BINDING_PROTOCOL_GUID \
1074 { 0xd9760ff3, 0x3cca, 0x4267, {0x80, 0xf9, 0x75, 0x27, 0xfa, 0xfa, 0x42, 0x23} }
1075 
1076 #define EFI_MTFTP6_PROTOCOL_GUID \
1077 { 0xbf0a78ba, 0xec29, 0x49cf, {0xa1, 0xc9, 0x7a, 0xe5, 0x4e, 0xab, 0x6a, 0x51} }
1078 
1079 #define EFI_DHCP4_PROTOCOL_GUID \
1080 { 0x8a219718, 0x4ef5, 0x4761, {0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56} }
1081 
1082 #define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \
1083 { 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80} }
1084 
1085 #define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \
1086 { 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5} }
1087 
1088 #define EFI_DHCP6_PROTOCOL_GUID \
1089 { 0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b} }
1090 
1091 #define EFI_SCSI_PASS_THRU_PROTOCOL_GUID \
1092 { 0xa59e8fcf, 0xbda0, 0x43bb, {0x90, 0xb1, 0xd3, 0x73, 0x2e, 0xca, 0xa8, 0x77} }
1093 
1094 #define EFI_EXT_SCSI_PASS_THRU_PROTOCOL_GUID \
1095 { 0x143b7632, 0xb81b, 0x4cb7, {0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe} }
1096 
1097 #define EFI_DISK_INFO_PROTOCOL_GUID \
1098 { 0xd432a67f, 0x14dc, 0x484b, {0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27} }
1099 
1100 #define EFI_ISA_IO_PROTOCOL_GUID \
1101 { 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1102 
1103 #define EFI_VLAN_CONFIG_PROTOCOL_GUID \
1104 { 0x9e23d768, 0xd2f3, 0x4366, {0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74} }
1105 
1106 #define EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID \
1107 { 0xa1e37052, 0x80d9, 0x4e65, {0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9} }
1108 
1109 #define EFI_ISA_ACPI_PROTOCOL_GUID \
1110 { 0x64a892dc, 0x5561, 0x4536, {0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55} }
1111 
1112 #define EFI_PCI_ENUMERATION_COMPLETE_GUID \
1113 { 0x30cfe3e7, 0x3de1, 0x4586, {0xbe, 0x20, 0xde, 0xab, 0xa1, 0xb3, 0xb7, 0x93} }
1114 
1115 #define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID \
1116 { 0x0784924f, 0xe296, 0x11d4, {0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
1117 
1118 #define EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID \
1119 { 0x4d330321, 0x025f, 0x4aac, {0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63} }
1120 
1121 #define EFI_CAPSULE_ARCH_PROTOCOL_GUID \
1122 { 0x5053697e, 0x2cbc, 0x4819, {0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54} }
1123 
1124 #define EFI_MONOTONIC_COUNTER_ARCH_PROTOCOL_GUID \
1125 {0x1da97072, 0xbddc, 0x4b30, {0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a} }
1126 
1127 #define EFI_REALTIME_CLOCK_ARCH_PROTOCOL_GUID \
1128 {0x27cfac87, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1129 
1130 #define EFI_MP_SERVICES_PROTOCOL_GUID \
1131 { 0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08} }
1132 
1133 #define EFI_VARIABLE_ARCH_PROTOCOL_GUID \
1134 { 0x1e5668e2, 0x8481, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1135 
1136 #define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \
1137 { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1138 
1139 #define EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID \
1140 { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1141 
1142 #define EFI_ACPI_SUPPORT_PROTOCOL_GUID \
1143 { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1144 
1145 #define EFI_BDS_ARCH_PROTOCOL_GUID \
1146 { 0x665e3ff6, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1147 
1148 #define EFI_METRONOME_ARCH_PROTOCOL_GUID \
1149 { 0x26baccb2, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1150 
1151 #define EFI_TIMER_ARCH_PROTOCOL_GUID \
1152 { 0x26baccb3, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1153 
1154 #define EFI_DPC_PROTOCOL_GUID \
1155 { 0x480f8ae9, 0xc46, 0x4aa9, { 0xbc, 0x89, 0xdb, 0x9f, 0xba, 0x61, 0x98, 0x6} }
1156 
1157 #define EFI_PRINT2_PROTOCOL_GUID  \
1158 { 0xf05976ef, 0x83f1, 0x4f3d, {0x86, 0x19, 0xf7, 0x59, 0x5d, 0x41, 0xe5, 0x38} }
1159 
1160 #define EFI_RESET_ARCH_PROTOCOL_GUID  \
1161 { 0x27cfac88, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1162 
1163 #define EFI_CPU_ARCH_PROTOCOL_GUID \
1164 { 0x26baccb1, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1165 
1166 #define EFI_CPU_IO2_PROTOCOL_GUID \
1167 { 0xad61f191, 0xae5f, 0x4c0e, {0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f} }
1168 
1169 #define EFI_LEGACY_8259_PROTOCOL_GUID \
1170 { 0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1} }
1171 
1172 #define EFI_SECURITY_ARCH_PROTOCOL_GUID \
1173 { 0xa46423e3, 0x4617, 0x49f1, {0xb9, 0xff, 0xd1, 0xbf, 0xa9, 0x11, 0x58, 0x39} }
1174 
1175 #define EFI_SECURITY2_ARCH_PROTOCOL_GUID \
1176 { 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68} }
1177 
1178 #define EFI_RUNTIME_ARCH_PROTOCOL_GUID \
1179 { 0xb7dfb4e1, 0x52f, 0x449f, {0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33} }
1180 
1181 #define EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID  \
1182 { 0xd2b2b828, 0x826, 0x48a7, {0xb3, 0xdf, 0x98, 0x3c, 0x0, 0x60, 0x24, 0xf0} }
1183 
1184 #define EFI_DATA_HUB_PROTOCOL_GUID \
1185 { 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
1186 
1187 #define PCD_PROTOCOL_GUID \
1188 { 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7} }
1189 
1190 #define EFI_PCD_PROTOCOL_GUID \
1191 { 0x13a3f0f6, 0x264a, 0x3ef0, {0xf2, 0xe0, 0xde, 0xc5, 0x12, 0x34, 0x2f, 0x34} }
1192 
1193 #define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \
1194 { 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } }
1195 
1196 #define EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID \
1197 { 0x220e73b6, 0x6bdb, 0x4413, { 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a } }
1198 
1199 #define EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID \
1200 { 0x7aa35a69, 0x506c, 0x444f, {0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8} }
1201 
1202 #define LZMA_COMPRESS_GUID \
1203 { 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x03, 0xcf} }
1204 #endif