Home | History | Annotate | Line # | Download | only in inc
efiapi.h revision 1.1.1.1.16.1
      1  1.1.1.1.16.1  pgoyette /*	$NetBSD: efiapi.h,v 1.1.1.1.16.1 2016/08/06 00:19:09 pgoyette Exp $	*/
      2           1.1  jakllsch 
      3           1.1  jakllsch #ifndef _EFI_API_H
      4           1.1  jakllsch #define _EFI_API_H
      5           1.1  jakllsch 
      6           1.1  jakllsch /*++
      7           1.1  jakllsch 
      8           1.1  jakllsch Copyright (c) 1998  Intel Corporation
      9           1.1  jakllsch 
     10           1.1  jakllsch Module Name:
     11           1.1  jakllsch 
     12           1.1  jakllsch     efiapi.h
     13           1.1  jakllsch 
     14           1.1  jakllsch Abstract:
     15           1.1  jakllsch 
     16           1.1  jakllsch     Global EFI runtime & boot service interfaces
     17           1.1  jakllsch 
     18           1.1  jakllsch 
     19           1.1  jakllsch 
     20           1.1  jakllsch 
     21           1.1  jakllsch Revision History
     22           1.1  jakllsch 
     23           1.1  jakllsch --*/
     24           1.1  jakllsch 
     25           1.1  jakllsch //
     26           1.1  jakllsch // EFI Specification Revision
     27           1.1  jakllsch //
     28           1.1  jakllsch 
     29           1.1  jakllsch #define EFI_SPECIFICATION_MAJOR_REVISION 1
     30           1.1  jakllsch #define EFI_SPECIFICATION_MINOR_REVISION 02
     31           1.1  jakllsch 
     32           1.1  jakllsch //
     33           1.1  jakllsch // Declare forward referenced data structures
     34           1.1  jakllsch //
     35           1.1  jakllsch 
     36           1.1  jakllsch INTERFACE_DECL(_EFI_SYSTEM_TABLE);
     37           1.1  jakllsch 
     38           1.1  jakllsch //
     39           1.1  jakllsch // EFI Memory
     40           1.1  jakllsch //
     41           1.1  jakllsch 
     42           1.1  jakllsch typedef
     43           1.1  jakllsch EFI_STATUS
     44           1.1  jakllsch (EFIAPI *EFI_ALLOCATE_PAGES) (
     45           1.1  jakllsch     IN EFI_ALLOCATE_TYPE            Type,
     46           1.1  jakllsch     IN EFI_MEMORY_TYPE              MemoryType,
     47           1.1  jakllsch     IN UINTN                        NoPages,
     48           1.1  jakllsch     OUT EFI_PHYSICAL_ADDRESS        *Memory
     49           1.1  jakllsch     );
     50           1.1  jakllsch 
     51           1.1  jakllsch typedef
     52           1.1  jakllsch EFI_STATUS
     53           1.1  jakllsch (EFIAPI *EFI_FREE_PAGES) (
     54           1.1  jakllsch     IN EFI_PHYSICAL_ADDRESS         Memory,
     55           1.1  jakllsch     IN UINTN                        NoPages
     56           1.1  jakllsch     );
     57           1.1  jakllsch 
     58           1.1  jakllsch typedef
     59           1.1  jakllsch EFI_STATUS
     60           1.1  jakllsch (EFIAPI *EFI_GET_MEMORY_MAP) (
     61           1.1  jakllsch     IN OUT UINTN                    *MemoryMapSize,
     62           1.1  jakllsch     IN OUT EFI_MEMORY_DESCRIPTOR    *MemoryMap,
     63           1.1  jakllsch     OUT UINTN                       *MapKey,
     64           1.1  jakllsch     OUT UINTN                       *DescriptorSize,
     65           1.1  jakllsch     OUT UINT32                      *DescriptorVersion
     66           1.1  jakllsch     );
     67           1.1  jakllsch 
     68           1.1  jakllsch #define NextMemoryDescriptor(Ptr,Size)  ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
     69           1.1  jakllsch 
     70           1.1  jakllsch 
     71           1.1  jakllsch typedef
     72           1.1  jakllsch EFI_STATUS
     73           1.1  jakllsch (EFIAPI *EFI_ALLOCATE_POOL) (
     74           1.1  jakllsch     IN EFI_MEMORY_TYPE              PoolType,
     75           1.1  jakllsch     IN UINTN                        Size,
     76           1.1  jakllsch     OUT VOID                        **Buffer
     77           1.1  jakllsch     );
     78           1.1  jakllsch 
     79           1.1  jakllsch typedef
     80           1.1  jakllsch EFI_STATUS
     81           1.1  jakllsch (EFIAPI *EFI_FREE_POOL) (
     82           1.1  jakllsch     IN VOID                         *Buffer
     83           1.1  jakllsch     );
     84           1.1  jakllsch 
     85           1.1  jakllsch typedef
     86           1.1  jakllsch EFI_STATUS
     87           1.1  jakllsch (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
     88           1.1  jakllsch     IN UINTN                        MemoryMapSize,
     89           1.1  jakllsch     IN UINTN                        DescriptorSize,
     90           1.1  jakllsch     IN UINT32                       DescriptorVersion,
     91           1.1  jakllsch     IN EFI_MEMORY_DESCRIPTOR        *VirtualMap
     92           1.1  jakllsch     );
     93           1.1  jakllsch 
     94           1.1  jakllsch 
     95           1.1  jakllsch #define EFI_OPTIONAL_PTR            0x00000001
     96           1.1  jakllsch #define EFI_INTERNAL_FNC            0x00000002      // Pointer to internal runtime fnc
     97           1.1  jakllsch #define EFI_INTERNAL_PTR            0x00000004      // Pointer to internal runtime data
     98           1.1  jakllsch 
     99           1.1  jakllsch 
    100           1.1  jakllsch typedef
    101           1.1  jakllsch EFI_STATUS
    102           1.1  jakllsch (EFIAPI *EFI_CONVERT_POINTER) (
    103           1.1  jakllsch     IN UINTN                        DebugDisposition,
    104           1.1  jakllsch     IN OUT VOID                     **Address
    105           1.1  jakllsch     );
    106           1.1  jakllsch 
    107           1.1  jakllsch 
    108           1.1  jakllsch //
    109           1.1  jakllsch // EFI Events
    110           1.1  jakllsch //
    111           1.1  jakllsch 
    112           1.1  jakllsch 
    113           1.1  jakllsch 
    114           1.1  jakllsch #define EVT_TIMER                           0x80000000
    115           1.1  jakllsch #define EVT_RUNTIME                         0x40000000
    116           1.1  jakllsch #define EVT_RUNTIME_CONTEXT                 0x20000000
    117           1.1  jakllsch 
    118           1.1  jakllsch #define EVT_NOTIFY_WAIT                     0x00000100
    119           1.1  jakllsch #define EVT_NOTIFY_SIGNAL                   0x00000200
    120           1.1  jakllsch 
    121           1.1  jakllsch #define EVT_SIGNAL_EXIT_BOOT_SERVICES       0x00000201
    122           1.1  jakllsch #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE   0x60000202
    123           1.1  jakllsch 
    124           1.1  jakllsch #define EVT_EFI_SIGNAL_MASK                 0x000000FF
    125           1.1  jakllsch #define EVT_EFI_SIGNAL_MAX                  2
    126           1.1  jakllsch 
    127           1.1  jakllsch typedef
    128           1.1  jakllsch VOID
    129           1.1  jakllsch (EFIAPI *EFI_EVENT_NOTIFY) (
    130           1.1  jakllsch     IN EFI_EVENT                Event,
    131           1.1  jakllsch     IN VOID                     *Context
    132           1.1  jakllsch     );
    133           1.1  jakllsch 
    134           1.1  jakllsch typedef
    135           1.1  jakllsch EFI_STATUS
    136           1.1  jakllsch (EFIAPI *EFI_CREATE_EVENT) (
    137           1.1  jakllsch     IN UINT32                       Type,
    138           1.1  jakllsch     IN EFI_TPL                      NotifyTpl,
    139           1.1  jakllsch     IN EFI_EVENT_NOTIFY             NotifyFunction,
    140           1.1  jakllsch     IN VOID                         *NotifyContext,
    141           1.1  jakllsch     OUT EFI_EVENT                   *Event
    142           1.1  jakllsch     );
    143           1.1  jakllsch 
    144           1.1  jakllsch typedef enum {
    145           1.1  jakllsch     TimerCancel,
    146           1.1  jakllsch     TimerPeriodic,
    147           1.1  jakllsch     TimerRelative,
    148           1.1  jakllsch     TimerTypeMax
    149           1.1  jakllsch } EFI_TIMER_DELAY;
    150           1.1  jakllsch 
    151           1.1  jakllsch typedef
    152           1.1  jakllsch EFI_STATUS
    153           1.1  jakllsch (EFIAPI *EFI_SET_TIMER) (
    154           1.1  jakllsch     IN EFI_EVENT                Event,
    155           1.1  jakllsch     IN EFI_TIMER_DELAY          Type,
    156           1.1  jakllsch     IN UINT64                   TriggerTime
    157           1.1  jakllsch     );
    158           1.1  jakllsch 
    159           1.1  jakllsch typedef
    160           1.1  jakllsch EFI_STATUS
    161           1.1  jakllsch (EFIAPI *EFI_SIGNAL_EVENT) (
    162           1.1  jakllsch     IN EFI_EVENT                Event
    163           1.1  jakllsch     );
    164           1.1  jakllsch 
    165           1.1  jakllsch typedef
    166           1.1  jakllsch EFI_STATUS
    167           1.1  jakllsch (EFIAPI *EFI_WAIT_FOR_EVENT) (
    168           1.1  jakllsch     IN UINTN                    NumberOfEvents,
    169           1.1  jakllsch     IN EFI_EVENT                *Event,
    170           1.1  jakllsch     OUT UINTN                   *Index
    171           1.1  jakllsch     );
    172           1.1  jakllsch 
    173           1.1  jakllsch typedef
    174           1.1  jakllsch EFI_STATUS
    175           1.1  jakllsch (EFIAPI *EFI_CLOSE_EVENT) (
    176           1.1  jakllsch     IN EFI_EVENT                Event
    177           1.1  jakllsch     );
    178           1.1  jakllsch 
    179           1.1  jakllsch typedef
    180           1.1  jakllsch EFI_STATUS
    181           1.1  jakllsch (EFIAPI *EFI_CHECK_EVENT) (
    182           1.1  jakllsch     IN EFI_EVENT                Event
    183           1.1  jakllsch     );
    184           1.1  jakllsch 
    185           1.1  jakllsch //
    186           1.1  jakllsch // Task priority level
    187           1.1  jakllsch //
    188           1.1  jakllsch 
    189           1.1  jakllsch #define TPL_APPLICATION    4
    190           1.1  jakllsch #define TPL_CALLBACK       8
    191           1.1  jakllsch #define TPL_NOTIFY        16
    192           1.1  jakllsch #define TPL_HIGH_LEVEL    31
    193           1.1  jakllsch 
    194           1.1  jakllsch typedef
    195           1.1  jakllsch EFI_TPL
    196           1.1  jakllsch (EFIAPI *EFI_RAISE_TPL) (
    197           1.1  jakllsch     IN EFI_TPL      NewTpl
    198           1.1  jakllsch     );
    199           1.1  jakllsch 
    200           1.1  jakllsch typedef
    201           1.1  jakllsch VOID
    202           1.1  jakllsch (EFIAPI *EFI_RESTORE_TPL) (
    203           1.1  jakllsch     IN EFI_TPL      OldTpl
    204           1.1  jakllsch     );
    205           1.1  jakllsch 
    206           1.1  jakllsch 
    207           1.1  jakllsch //
    208           1.1  jakllsch // EFI platform varibles
    209           1.1  jakllsch //
    210           1.1  jakllsch 
    211           1.1  jakllsch #define EFI_GLOBAL_VARIABLE     \
    212           1.1  jakllsch     { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
    213           1.1  jakllsch 
    214           1.1  jakllsch // Variable attributes
    215           1.1  jakllsch #define EFI_VARIABLE_NON_VOLATILE           0x00000001
    216           1.1  jakllsch #define EFI_VARIABLE_BOOTSERVICE_ACCESS     0x00000002
    217           1.1  jakllsch #define EFI_VARIABLE_RUNTIME_ACCESS         0x00000004
    218           1.1  jakllsch 
    219           1.1  jakllsch // Variable size limitation
    220           1.1  jakllsch #define EFI_MAXIMUM_VARIABLE_SIZE           1024
    221           1.1  jakllsch 
    222           1.1  jakllsch typedef
    223           1.1  jakllsch EFI_STATUS
    224           1.1  jakllsch (EFIAPI *EFI_GET_VARIABLE) (
    225           1.1  jakllsch     IN CHAR16                       *VariableName,
    226           1.1  jakllsch     IN EFI_GUID                     *VendorGuid,
    227           1.1  jakllsch     OUT UINT32                      *Attributes OPTIONAL,
    228           1.1  jakllsch     IN OUT UINTN                    *DataSize,
    229           1.1  jakllsch     OUT VOID                        *Data
    230           1.1  jakllsch     );
    231           1.1  jakllsch 
    232           1.1  jakllsch typedef
    233           1.1  jakllsch EFI_STATUS
    234           1.1  jakllsch (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
    235           1.1  jakllsch     IN OUT UINTN                    *VariableNameSize,
    236           1.1  jakllsch     IN OUT CHAR16                   *VariableName,
    237           1.1  jakllsch     IN OUT EFI_GUID                 *VendorGuid
    238           1.1  jakllsch     );
    239           1.1  jakllsch 
    240           1.1  jakllsch 
    241           1.1  jakllsch typedef
    242           1.1  jakllsch EFI_STATUS
    243           1.1  jakllsch (EFIAPI *EFI_SET_VARIABLE) (
    244           1.1  jakllsch     IN CHAR16                       *VariableName,
    245           1.1  jakllsch     IN EFI_GUID                     *VendorGuid,
    246           1.1  jakllsch     IN UINT32                       Attributes,
    247           1.1  jakllsch     IN UINTN                        DataSize,
    248           1.1  jakllsch     IN VOID                         *Data
    249           1.1  jakllsch     );
    250           1.1  jakllsch 
    251           1.1  jakllsch 
    252           1.1  jakllsch //
    253           1.1  jakllsch // EFI Time
    254           1.1  jakllsch //
    255           1.1  jakllsch 
    256           1.1  jakllsch typedef struct {
    257           1.1  jakllsch         UINT32                      Resolution;     // 1e-6 parts per million
    258           1.1  jakllsch         UINT32                      Accuracy;       // hertz
    259           1.1  jakllsch         BOOLEAN                     SetsToZero;     // Set clears sub-second time
    260           1.1  jakllsch } EFI_TIME_CAPABILITIES;
    261           1.1  jakllsch 
    262           1.1  jakllsch 
    263           1.1  jakllsch typedef
    264           1.1  jakllsch EFI_STATUS
    265           1.1  jakllsch (EFIAPI *EFI_GET_TIME) (
    266           1.1  jakllsch     OUT EFI_TIME                    *Time,
    267           1.1  jakllsch     OUT EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
    268           1.1  jakllsch     );
    269           1.1  jakllsch 
    270           1.1  jakllsch typedef
    271           1.1  jakllsch EFI_STATUS
    272           1.1  jakllsch (EFIAPI *EFI_SET_TIME) (
    273           1.1  jakllsch     IN EFI_TIME                     *Time
    274           1.1  jakllsch     );
    275           1.1  jakllsch 
    276           1.1  jakllsch typedef
    277           1.1  jakllsch EFI_STATUS
    278           1.1  jakllsch (EFIAPI *EFI_GET_WAKEUP_TIME) (
    279           1.1  jakllsch     OUT BOOLEAN                     *Enabled,
    280           1.1  jakllsch     OUT BOOLEAN                     *Pending,
    281           1.1  jakllsch     OUT EFI_TIME                    *Time
    282           1.1  jakllsch     );
    283           1.1  jakllsch 
    284           1.1  jakllsch typedef
    285           1.1  jakllsch EFI_STATUS
    286           1.1  jakllsch (EFIAPI *EFI_SET_WAKEUP_TIME) (
    287           1.1  jakllsch     IN BOOLEAN                      Enable,
    288           1.1  jakllsch     IN EFI_TIME                     *Time OPTIONAL
    289           1.1  jakllsch     );
    290           1.1  jakllsch 
    291           1.1  jakllsch 
    292           1.1  jakllsch //
    293           1.1  jakllsch // Image functions
    294           1.1  jakllsch //
    295           1.1  jakllsch 
    296           1.1  jakllsch 
    297           1.1  jakllsch // PE32+ Subsystem type for EFI images
    298           1.1  jakllsch 
    299           1.1  jakllsch #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
    300           1.1  jakllsch #define IMAGE_SUBSYSTEM_EFI_APPLICATION             10
    301           1.1  jakllsch #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER     11
    302           1.1  jakllsch #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER          12
    303           1.1  jakllsch #endif
    304           1.1  jakllsch 
    305           1.1  jakllsch // PE32+ Machine type for EFI images
    306           1.1  jakllsch 
    307           1.1  jakllsch #if !defined(EFI_IMAGE_MACHINE_IA32)
    308           1.1  jakllsch #define EFI_IMAGE_MACHINE_IA32      0x014c
    309           1.1  jakllsch #endif
    310           1.1  jakllsch 
    311           1.1  jakllsch #if !defined(EFI_IMAGE_MACHINE_IA64)
    312           1.1  jakllsch #define EFI_IMAGE_MACHINE_IA64      0x0200
    313           1.1  jakllsch #endif
    314           1.1  jakllsch 
    315           1.1  jakllsch // Image Entry prototype
    316           1.1  jakllsch 
    317           1.1  jakllsch typedef
    318           1.1  jakllsch EFI_STATUS
    319           1.1  jakllsch (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
    320           1.1  jakllsch     IN EFI_HANDLE                   ImageHandle,
    321           1.1  jakllsch     IN struct _EFI_SYSTEM_TABLE     *SystemTable
    322           1.1  jakllsch     );
    323           1.1  jakllsch 
    324           1.1  jakllsch typedef
    325           1.1  jakllsch EFI_STATUS
    326           1.1  jakllsch (EFIAPI *EFI_IMAGE_LOAD) (
    327           1.1  jakllsch     IN BOOLEAN                      BootPolicy,
    328           1.1  jakllsch     IN EFI_HANDLE                   ParentImageHandle,
    329           1.1  jakllsch     IN EFI_DEVICE_PATH              *FilePath,
    330           1.1  jakllsch     IN VOID                         *SourceBuffer   OPTIONAL,
    331           1.1  jakllsch     IN UINTN                        SourceSize,
    332           1.1  jakllsch     OUT EFI_HANDLE                  *ImageHandle
    333           1.1  jakllsch     );
    334           1.1  jakllsch 
    335           1.1  jakllsch typedef
    336           1.1  jakllsch EFI_STATUS
    337           1.1  jakllsch (EFIAPI *EFI_IMAGE_START) (
    338           1.1  jakllsch     IN EFI_HANDLE                   ImageHandle,
    339           1.1  jakllsch     OUT UINTN                       *ExitDataSize,
    340           1.1  jakllsch     OUT CHAR16                      **ExitData  OPTIONAL
    341           1.1  jakllsch     );
    342           1.1  jakllsch 
    343           1.1  jakllsch typedef
    344           1.1  jakllsch EFI_STATUS
    345           1.1  jakllsch (EFIAPI *EFI_EXIT) (
    346           1.1  jakllsch     IN EFI_HANDLE                   ImageHandle,
    347           1.1  jakllsch     IN EFI_STATUS                   ExitStatus,
    348           1.1  jakllsch     IN UINTN                        ExitDataSize,
    349           1.1  jakllsch     IN CHAR16                       *ExitData OPTIONAL
    350           1.1  jakllsch     );
    351           1.1  jakllsch 
    352           1.1  jakllsch typedef
    353           1.1  jakllsch EFI_STATUS
    354           1.1  jakllsch (EFIAPI *EFI_IMAGE_UNLOAD) (
    355           1.1  jakllsch     IN EFI_HANDLE                   ImageHandle
    356           1.1  jakllsch     );
    357           1.1  jakllsch 
    358           1.1  jakllsch 
    359           1.1  jakllsch // Image handle
    360           1.1  jakllsch #define LOADED_IMAGE_PROTOCOL      \
    361           1.1  jakllsch     { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
    362           1.1  jakllsch 
    363           1.1  jakllsch #define EFI_IMAGE_INFORMATION_REVISION      0x1000
    364           1.1  jakllsch typedef struct {
    365           1.1  jakllsch     UINT32                          Revision;
    366           1.1  jakllsch     EFI_HANDLE                      ParentHandle;
    367           1.1  jakllsch     struct _EFI_SYSTEM_TABLE        *SystemTable;
    368           1.1  jakllsch 
    369           1.1  jakllsch     // Source location of image
    370           1.1  jakllsch     EFI_HANDLE                      DeviceHandle;
    371           1.1  jakllsch     EFI_DEVICE_PATH                 *FilePath;
    372           1.1  jakllsch     VOID                            *Reserved;
    373           1.1  jakllsch 
    374           1.1  jakllsch     // Images load options
    375           1.1  jakllsch     UINT32                          LoadOptionsSize;
    376           1.1  jakllsch     VOID                            *LoadOptions;
    377           1.1  jakllsch 
    378           1.1  jakllsch     // Location of where image was loaded
    379           1.1  jakllsch     VOID                            *ImageBase;
    380           1.1  jakllsch     UINT64                          ImageSize;
    381           1.1  jakllsch     EFI_MEMORY_TYPE                 ImageCodeType;
    382           1.1  jakllsch     EFI_MEMORY_TYPE                 ImageDataType;
    383           1.1  jakllsch 
    384           1.1  jakllsch     // If the driver image supports a dynamic unload request
    385           1.1  jakllsch     EFI_IMAGE_UNLOAD                Unload;
    386           1.1  jakllsch 
    387           1.1  jakllsch } EFI_LOADED_IMAGE;
    388           1.1  jakllsch 
    389           1.1  jakllsch 
    390           1.1  jakllsch typedef
    391           1.1  jakllsch EFI_STATUS
    392           1.1  jakllsch (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
    393           1.1  jakllsch     IN EFI_HANDLE                   ImageHandle,
    394           1.1  jakllsch     IN UINTN                        MapKey
    395           1.1  jakllsch     );
    396           1.1  jakllsch 
    397           1.1  jakllsch //
    398           1.1  jakllsch // Misc
    399           1.1  jakllsch //
    400           1.1  jakllsch 
    401           1.1  jakllsch 
    402           1.1  jakllsch typedef
    403           1.1  jakllsch EFI_STATUS
    404           1.1  jakllsch (EFIAPI *EFI_STALL) (
    405           1.1  jakllsch     IN UINTN                    Microseconds
    406           1.1  jakllsch     );
    407           1.1  jakllsch 
    408           1.1  jakllsch typedef
    409           1.1  jakllsch EFI_STATUS
    410           1.1  jakllsch (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
    411           1.1  jakllsch     IN UINTN                    Timeout,
    412           1.1  jakllsch     IN UINT64                   WatchdogCode,
    413           1.1  jakllsch     IN UINTN                    DataSize,
    414           1.1  jakllsch     IN CHAR16                   *WatchdogData OPTIONAL
    415           1.1  jakllsch     );
    416           1.1  jakllsch 
    417           1.1  jakllsch typedef
    418           1.1  jakllsch EFI_STATUS
    419           1.1  jakllsch (EFIAPI *EFI_CONNECT_CONTROLLER) (
    420           1.1  jakllsch     IN EFI_HANDLE               ControllerHandle,
    421           1.1  jakllsch     IN EFI_HANDLE               *DriverImageHandle OPTIONAL,
    422           1.1  jakllsch     IN EFI_DEVICE_PATH          *RemainingDevicePath OPTIONAL,
    423           1.1  jakllsch     IN BOOLEAN                  Recursive
    424           1.1  jakllsch     );
    425           1.1  jakllsch 
    426           1.1  jakllsch typedef
    427           1.1  jakllsch EFI_STATUS
    428           1.1  jakllsch (EFIAPI *EFI_DISCONNECT_CONTROLLER) (
    429           1.1  jakllsch     IN EFI_HANDLE               ControllerHandle,
    430           1.1  jakllsch     IN EFI_HANDLE               DriverImageHandle OPTIONAL,
    431           1.1  jakllsch     IN EFI_HANDLE               ChildHandle OPTIONAL
    432           1.1  jakllsch     );
    433           1.1  jakllsch 
    434           1.1  jakllsch #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL  0x00000001
    435           1.1  jakllsch #define EFI_OPEN_PROTOCOL_GET_PROTOCOL        0x00000002
    436           1.1  jakllsch #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL       0x00000004
    437           1.1  jakllsch #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
    438           1.1  jakllsch #define EFI_OPEN_PROTOCOL_BY_DRIVER           0x00000010
    439           1.1  jakllsch #define EFI_OPEN_PROTOCOL_EXCLUSIVE           0x00000020
    440           1.1  jakllsch 
    441           1.1  jakllsch typedef
    442           1.1  jakllsch EFI_STATUS
    443           1.1  jakllsch (EFIAPI *EFI_OPEN_PROTOCOL) (
    444           1.1  jakllsch     IN EFI_HANDLE               Handle,
    445           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    446           1.1  jakllsch     OUT VOID                    **Interface OPTIONAL,
    447           1.1  jakllsch     IN EFI_HANDLE               AgentHandle,
    448           1.1  jakllsch     IN EFI_HANDLE               ControllerHandle,
    449           1.1  jakllsch     IN UINT32                   Attributes
    450           1.1  jakllsch     );
    451           1.1  jakllsch 
    452           1.1  jakllsch typedef
    453           1.1  jakllsch EFI_STATUS
    454           1.1  jakllsch (EFIAPI *EFI_CLOSE_PROTOCOL) (
    455           1.1  jakllsch     IN EFI_HANDLE               Handle,
    456           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    457           1.1  jakllsch     IN EFI_HANDLE               AgentHandle,
    458           1.1  jakllsch     IN EFI_HANDLE               ControllerHandle
    459           1.1  jakllsch     );
    460           1.1  jakllsch 
    461           1.1  jakllsch typedef struct {
    462           1.1  jakllsch     EFI_HANDLE                  AgentHandle;
    463           1.1  jakllsch     EFI_HANDLE                  ControllerHandle;
    464           1.1  jakllsch     UINT32                      Attributes;
    465           1.1  jakllsch     UINT32                      OpenCount;
    466           1.1  jakllsch } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
    467           1.1  jakllsch 
    468           1.1  jakllsch typedef
    469           1.1  jakllsch EFI_STATUS
    470           1.1  jakllsch (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
    471           1.1  jakllsch     IN EFI_HANDLE               Handle,
    472           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    473           1.1  jakllsch     OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
    474           1.1  jakllsch     OUT UINTN                   *EntryCount
    475           1.1  jakllsch     );
    476           1.1  jakllsch 
    477           1.1  jakllsch typedef
    478           1.1  jakllsch EFI_STATUS
    479           1.1  jakllsch (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
    480           1.1  jakllsch     IN EFI_HANDLE               Handle,
    481           1.1  jakllsch     OUT EFI_GUID                ***ProtocolBuffer,
    482           1.1  jakllsch     OUT UINTN                   *ProtocolBufferCount
    483           1.1  jakllsch     );
    484           1.1  jakllsch 
    485           1.1  jakllsch typedef enum {
    486           1.1  jakllsch     AllHandles,
    487           1.1  jakllsch     ByRegisterNotify,
    488           1.1  jakllsch     ByProtocol
    489           1.1  jakllsch } EFI_LOCATE_SEARCH_TYPE;
    490           1.1  jakllsch 
    491           1.1  jakllsch typedef
    492           1.1  jakllsch EFI_STATUS
    493           1.1  jakllsch (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
    494           1.1  jakllsch     IN EFI_LOCATE_SEARCH_TYPE   SearchType,
    495           1.1  jakllsch     IN EFI_GUID                 *Protocol OPTIONAL,
    496           1.1  jakllsch     IN VOID                     *SearchKey OPTIONAL,
    497           1.1  jakllsch     IN OUT UINTN                *NoHandles,
    498           1.1  jakllsch     OUT EFI_HANDLE              **Buffer
    499           1.1  jakllsch     );
    500           1.1  jakllsch 
    501           1.1  jakllsch typedef
    502           1.1  jakllsch EFI_STATUS
    503           1.1  jakllsch (EFIAPI *EFI_LOCATE_PROTOCOL) (
    504           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    505           1.1  jakllsch     IN VOID                     *Registration OPTIONAL,
    506           1.1  jakllsch     OUT VOID                    **Interface
    507           1.1  jakllsch     );
    508           1.1  jakllsch 
    509           1.1  jakllsch typedef
    510           1.1  jakllsch EFI_STATUS
    511           1.1  jakllsch (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
    512           1.1  jakllsch     IN OUT EFI_HANDLE           *Handle,
    513           1.1  jakllsch     ...
    514           1.1  jakllsch     );
    515           1.1  jakllsch 
    516           1.1  jakllsch typedef
    517           1.1  jakllsch EFI_STATUS
    518           1.1  jakllsch (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
    519           1.1  jakllsch     IN OUT EFI_HANDLE           Handle,
    520           1.1  jakllsch     ...
    521           1.1  jakllsch     );
    522           1.1  jakllsch 
    523           1.1  jakllsch typedef
    524           1.1  jakllsch EFI_STATUS
    525           1.1  jakllsch (EFIAPI *EFI_CALCULATE_CRC32) (
    526           1.1  jakllsch     IN VOID                     *Data,
    527           1.1  jakllsch     IN UINTN                    DataSize,
    528           1.1  jakllsch     OUT UINT32                  *Crc32
    529           1.1  jakllsch     );
    530           1.1  jakllsch 
    531           1.1  jakllsch typedef
    532           1.1  jakllsch VOID
    533           1.1  jakllsch (EFIAPI *EFI_COPY_MEM) (
    534           1.1  jakllsch     IN VOID                     *Destination,
    535           1.1  jakllsch     IN VOID                     *Source,
    536           1.1  jakllsch     IN UINTN                    Length
    537           1.1  jakllsch     );
    538           1.1  jakllsch 
    539           1.1  jakllsch typedef
    540           1.1  jakllsch VOID
    541           1.1  jakllsch (EFIAPI *EFI_SET_MEM) (
    542           1.1  jakllsch     IN VOID                     *Buffer,
    543           1.1  jakllsch     IN UINTN                    Size,
    544           1.1  jakllsch     IN UINT8                    Value
    545           1.1  jakllsch     );
    546           1.1  jakllsch 
    547           1.1  jakllsch 
    548           1.1  jakllsch typedef
    549           1.1  jakllsch EFI_STATUS
    550           1.1  jakllsch (EFIAPI *EFI_CREATE_EVENT_EX) (
    551           1.1  jakllsch     IN UINT32                   Type,
    552           1.1  jakllsch     IN EFI_TPL                  NotifyTpl,
    553           1.1  jakllsch     IN EFI_EVENT_NOTIFY         NotifyFunction OPTIONAL,
    554           1.1  jakllsch     IN const VOID               *NotifyContext OPTIONAL,
    555           1.1  jakllsch     IN const EFI_GUID           EventGroup OPTIONAL,
    556           1.1  jakllsch     OUT EFI_EVENT               *Event
    557           1.1  jakllsch     );
    558           1.1  jakllsch 
    559           1.1  jakllsch typedef enum {
    560           1.1  jakllsch     EfiResetCold,
    561           1.1  jakllsch     EfiResetWarm,
    562           1.1  jakllsch     EfiResetShutdown
    563           1.1  jakllsch } EFI_RESET_TYPE;
    564           1.1  jakllsch 
    565           1.1  jakllsch typedef
    566           1.1  jakllsch EFI_STATUS
    567           1.1  jakllsch (EFIAPI *EFI_RESET_SYSTEM) (
    568           1.1  jakllsch     IN EFI_RESET_TYPE           ResetType,
    569           1.1  jakllsch     IN EFI_STATUS               ResetStatus,
    570           1.1  jakllsch     IN UINTN                    DataSize,
    571           1.1  jakllsch     IN CHAR16                   *ResetData OPTIONAL
    572           1.1  jakllsch     );
    573           1.1  jakllsch 
    574           1.1  jakllsch typedef
    575           1.1  jakllsch EFI_STATUS
    576           1.1  jakllsch (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
    577           1.1  jakllsch     OUT UINT64                  *Count
    578           1.1  jakllsch     );
    579           1.1  jakllsch 
    580           1.1  jakllsch typedef
    581           1.1  jakllsch EFI_STATUS
    582           1.1  jakllsch (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
    583           1.1  jakllsch     OUT UINT32                  *HighCount
    584           1.1  jakllsch     );
    585           1.1  jakllsch 
    586           1.1  jakllsch //
    587           1.1  jakllsch // Protocol handler functions
    588           1.1  jakllsch //
    589           1.1  jakllsch 
    590           1.1  jakllsch typedef enum {
    591           1.1  jakllsch     EFI_NATIVE_INTERFACE,
    592           1.1  jakllsch     EFI_PCODE_INTERFACE
    593           1.1  jakllsch } EFI_INTERFACE_TYPE;
    594           1.1  jakllsch 
    595           1.1  jakllsch typedef
    596           1.1  jakllsch EFI_STATUS
    597           1.1  jakllsch (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
    598           1.1  jakllsch     IN OUT EFI_HANDLE           *Handle,
    599           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    600           1.1  jakllsch     IN EFI_INTERFACE_TYPE       InterfaceType,
    601           1.1  jakllsch     IN VOID                     *Interface
    602           1.1  jakllsch     );
    603           1.1  jakllsch 
    604           1.1  jakllsch typedef
    605           1.1  jakllsch EFI_STATUS
    606           1.1  jakllsch (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
    607           1.1  jakllsch     IN EFI_HANDLE               Handle,
    608           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    609           1.1  jakllsch     IN VOID                     *OldInterface,
    610           1.1  jakllsch     IN VOID                     *NewInterface
    611           1.1  jakllsch     );
    612           1.1  jakllsch 
    613           1.1  jakllsch typedef
    614           1.1  jakllsch EFI_STATUS
    615           1.1  jakllsch (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
    616           1.1  jakllsch     IN EFI_HANDLE               Handle,
    617           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    618           1.1  jakllsch     IN VOID                     *Interface
    619           1.1  jakllsch     );
    620           1.1  jakllsch 
    621           1.1  jakllsch typedef
    622           1.1  jakllsch EFI_STATUS
    623           1.1  jakllsch (EFIAPI *EFI_HANDLE_PROTOCOL) (
    624           1.1  jakllsch     IN EFI_HANDLE               Handle,
    625           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    626           1.1  jakllsch     OUT VOID                    **Interface
    627           1.1  jakllsch     );
    628           1.1  jakllsch 
    629           1.1  jakllsch typedef
    630           1.1  jakllsch EFI_STATUS
    631           1.1  jakllsch (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
    632           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    633           1.1  jakllsch     IN EFI_EVENT                Event,
    634           1.1  jakllsch     OUT VOID                    **Registration
    635           1.1  jakllsch     );
    636           1.1  jakllsch 
    637           1.1  jakllsch typedef
    638           1.1  jakllsch EFI_STATUS
    639           1.1  jakllsch (EFIAPI *EFI_LOCATE_HANDLE) (
    640           1.1  jakllsch     IN EFI_LOCATE_SEARCH_TYPE   SearchType,
    641           1.1  jakllsch     IN EFI_GUID                 *Protocol OPTIONAL,
    642           1.1  jakllsch     IN VOID                     *SearchKey OPTIONAL,
    643           1.1  jakllsch     IN OUT UINTN                *BufferSize,
    644           1.1  jakllsch     OUT EFI_HANDLE              *Buffer
    645           1.1  jakllsch     );
    646           1.1  jakllsch 
    647           1.1  jakllsch typedef
    648           1.1  jakllsch EFI_STATUS
    649           1.1  jakllsch (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
    650           1.1  jakllsch     IN EFI_GUID                 *Protocol,
    651           1.1  jakllsch     IN OUT EFI_DEVICE_PATH      **DevicePath,
    652           1.1  jakllsch     OUT EFI_HANDLE              *Device
    653           1.1  jakllsch     );
    654           1.1  jakllsch 
    655           1.1  jakllsch typedef
    656           1.1  jakllsch EFI_STATUS
    657           1.1  jakllsch (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
    658           1.1  jakllsch     IN EFI_GUID                 *Guid,
    659           1.1  jakllsch     IN VOID                     *Table
    660           1.1  jakllsch     );
    661           1.1  jakllsch 
    662           1.1  jakllsch typedef
    663           1.1  jakllsch EFI_STATUS
    664           1.1  jakllsch (EFIAPI *EFI_RESERVED_SERVICE) (
    665           1.1  jakllsch     );
    666           1.1  jakllsch 
    667           1.1  jakllsch //
    668           1.1  jakllsch // Standard EFI table header
    669           1.1  jakllsch //
    670           1.1  jakllsch 
    671           1.1  jakllsch typedef struct _EFI_TABLE_HEARDER {
    672           1.1  jakllsch     UINT64                      Signature;
    673           1.1  jakllsch     UINT32                      Revision;
    674           1.1  jakllsch     UINT32                      HeaderSize;
    675           1.1  jakllsch     UINT32                      CRC32;
    676           1.1  jakllsch     UINT32                      Reserved;
    677           1.1  jakllsch } EFI_TABLE_HEADER;
    678           1.1  jakllsch 
    679           1.1  jakllsch 
    680           1.1  jakllsch //
    681           1.1  jakllsch // EFI Runtime Serivces Table
    682           1.1  jakllsch //
    683           1.1  jakllsch 
    684           1.1  jakllsch #define EFI_RUNTIME_SERVICES_SIGNATURE  0x56524553544e5552
    685           1.1  jakllsch #define EFI_RUNTIME_SERVICES_REVISION   (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
    686           1.1  jakllsch 
    687           1.1  jakllsch typedef struct  {
    688           1.1  jakllsch     EFI_TABLE_HEADER                Hdr;
    689           1.1  jakllsch 
    690           1.1  jakllsch     //
    691           1.1  jakllsch     // Time services
    692           1.1  jakllsch     //
    693           1.1  jakllsch 
    694           1.1  jakllsch     EFI_GET_TIME                    GetTime;
    695           1.1  jakllsch     EFI_SET_TIME                    SetTime;
    696           1.1  jakllsch     EFI_GET_WAKEUP_TIME             GetWakeupTime;
    697           1.1  jakllsch     EFI_SET_WAKEUP_TIME             SetWakeupTime;
    698           1.1  jakllsch 
    699           1.1  jakllsch     //
    700           1.1  jakllsch     // Virtual memory services
    701           1.1  jakllsch     //
    702           1.1  jakllsch 
    703           1.1  jakllsch     EFI_SET_VIRTUAL_ADDRESS_MAP     SetVirtualAddressMap;
    704           1.1  jakllsch     EFI_CONVERT_POINTER             ConvertPointer;
    705           1.1  jakllsch 
    706           1.1  jakllsch     //
    707           1.1  jakllsch     // Variable serviers
    708           1.1  jakllsch     //
    709           1.1  jakllsch 
    710           1.1  jakllsch     EFI_GET_VARIABLE                GetVariable;
    711           1.1  jakllsch     EFI_GET_NEXT_VARIABLE_NAME      GetNextVariableName;
    712           1.1  jakllsch     EFI_SET_VARIABLE                SetVariable;
    713           1.1  jakllsch 
    714           1.1  jakllsch     //
    715           1.1  jakllsch     // Misc
    716           1.1  jakllsch     //
    717           1.1  jakllsch 
    718           1.1  jakllsch     EFI_GET_NEXT_HIGH_MONO_COUNT    GetNextHighMonotonicCount;
    719           1.1  jakllsch     EFI_RESET_SYSTEM                ResetSystem;
    720           1.1  jakllsch 
    721           1.1  jakllsch } EFI_RUNTIME_SERVICES;
    722           1.1  jakllsch 
    723           1.1  jakllsch 
    724           1.1  jakllsch //
    725           1.1  jakllsch // EFI Boot Services Table
    726           1.1  jakllsch //
    727           1.1  jakllsch 
    728           1.1  jakllsch #define EFI_BOOT_SERVICES_SIGNATURE     0x56524553544f4f42
    729           1.1  jakllsch #define EFI_BOOT_SERVICES_REVISION      (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
    730           1.1  jakllsch 
    731           1.1  jakllsch typedef struct _EFI_BOOT_SERVICES {
    732           1.1  jakllsch 
    733           1.1  jakllsch     EFI_TABLE_HEADER                Hdr;
    734           1.1  jakllsch 
    735           1.1  jakllsch     //
    736           1.1  jakllsch     // Task priority functions
    737           1.1  jakllsch     //
    738           1.1  jakllsch 
    739           1.1  jakllsch     EFI_RAISE_TPL                   RaiseTPL;
    740           1.1  jakllsch     EFI_RESTORE_TPL                 RestoreTPL;
    741           1.1  jakllsch 
    742           1.1  jakllsch     //
    743           1.1  jakllsch     // Memory functions
    744           1.1  jakllsch     //
    745           1.1  jakllsch 
    746           1.1  jakllsch     EFI_ALLOCATE_PAGES              AllocatePages;
    747           1.1  jakllsch     EFI_FREE_PAGES                  FreePages;
    748           1.1  jakllsch     EFI_GET_MEMORY_MAP              GetMemoryMap;
    749           1.1  jakllsch     EFI_ALLOCATE_POOL               AllocatePool;
    750           1.1  jakllsch     EFI_FREE_POOL                   FreePool;
    751           1.1  jakllsch 
    752           1.1  jakllsch     //
    753           1.1  jakllsch     // Event & timer functions
    754           1.1  jakllsch     //
    755           1.1  jakllsch 
    756           1.1  jakllsch     EFI_CREATE_EVENT                CreateEvent;
    757           1.1  jakllsch     EFI_SET_TIMER                   SetTimer;
    758           1.1  jakllsch     EFI_WAIT_FOR_EVENT              WaitForEvent;
    759           1.1  jakllsch     EFI_SIGNAL_EVENT                SignalEvent;
    760           1.1  jakllsch     EFI_CLOSE_EVENT                 CloseEvent;
    761           1.1  jakllsch     EFI_CHECK_EVENT                 CheckEvent;
    762           1.1  jakllsch 
    763           1.1  jakllsch     //
    764           1.1  jakllsch     // Protocol handler functions
    765           1.1  jakllsch     //
    766           1.1  jakllsch 
    767           1.1  jakllsch     EFI_INSTALL_PROTOCOL_INTERFACE  InstallProtocolInterface;
    768           1.1  jakllsch     EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
    769           1.1  jakllsch     EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
    770           1.1  jakllsch     EFI_HANDLE_PROTOCOL             HandleProtocol;
    771           1.1  jakllsch     EFI_HANDLE_PROTOCOL             PCHandleProtocol;
    772           1.1  jakllsch     EFI_REGISTER_PROTOCOL_NOTIFY    RegisterProtocolNotify;
    773           1.1  jakllsch     EFI_LOCATE_HANDLE               LocateHandle;
    774           1.1  jakllsch     EFI_LOCATE_DEVICE_PATH          LocateDevicePath;
    775           1.1  jakllsch     EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
    776           1.1  jakllsch 
    777           1.1  jakllsch     //
    778           1.1  jakllsch     // Image functions
    779           1.1  jakllsch     //
    780           1.1  jakllsch 
    781           1.1  jakllsch     EFI_IMAGE_LOAD                  LoadImage;
    782           1.1  jakllsch     EFI_IMAGE_START                 StartImage;
    783           1.1  jakllsch     EFI_EXIT                        Exit;
    784           1.1  jakllsch     EFI_IMAGE_UNLOAD                UnloadImage;
    785           1.1  jakllsch     EFI_EXIT_BOOT_SERVICES          ExitBootServices;
    786           1.1  jakllsch 
    787           1.1  jakllsch     //
    788           1.1  jakllsch     // Misc functions
    789           1.1  jakllsch     //
    790           1.1  jakllsch 
    791           1.1  jakllsch     EFI_GET_NEXT_MONOTONIC_COUNT    GetNextMonotonicCount;
    792           1.1  jakllsch     EFI_STALL                       Stall;
    793           1.1  jakllsch     EFI_SET_WATCHDOG_TIMER          SetWatchdogTimer;
    794           1.1  jakllsch 
    795           1.1  jakllsch     //
    796           1.1  jakllsch     // DriverSupport Services
    797           1.1  jakllsch     //
    798           1.1  jakllsch 
    799           1.1  jakllsch     EFI_CONNECT_CONTROLLER          ConnectController;
    800           1.1  jakllsch     EFI_DISCONNECT_CONTROLLER       DisconnectController;
    801           1.1  jakllsch 
    802           1.1  jakllsch     //
    803           1.1  jakllsch     // Open and Close Protocol Services
    804           1.1  jakllsch     //
    805           1.1  jakllsch     EFI_OPEN_PROTOCOL               OpenProtocol;
    806           1.1  jakllsch     EFI_CLOSE_PROTOCOL              CloseProtocol;
    807           1.1  jakllsch     EFI_OPEN_PROTOCOL_INFORMATION   OpenProtocolInformation;
    808           1.1  jakllsch 
    809           1.1  jakllsch     //
    810           1.1  jakllsch     // Library Services
    811           1.1  jakllsch     //
    812           1.1  jakllsch     EFI_PROTOCOLS_PER_HANDLE        ProtocolsPerHandle;
    813           1.1  jakllsch     EFI_LOCATE_HANDLE_BUFFER        LocateHandleBuffer;
    814           1.1  jakllsch     EFI_LOCATE_PROTOCOL             LocateProtocol;
    815           1.1  jakllsch     EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
    816           1.1  jakllsch     EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
    817           1.1  jakllsch 
    818           1.1  jakllsch     //
    819           1.1  jakllsch     // 32-bit CRC Services
    820           1.1  jakllsch     //
    821           1.1  jakllsch     EFI_CALCULATE_CRC32             CalculateCrc32;
    822           1.1  jakllsch 
    823           1.1  jakllsch     //
    824           1.1  jakllsch     // Misc Services
    825           1.1  jakllsch     //
    826           1.1  jakllsch     EFI_COPY_MEM                    CopyMem;
    827           1.1  jakllsch     EFI_SET_MEM                     SetMem;
    828           1.1  jakllsch     EFI_CREATE_EVENT_EX             CreateEventEx;
    829           1.1  jakllsch } EFI_BOOT_SERVICES;
    830           1.1  jakllsch 
    831           1.1  jakllsch 
    832           1.1  jakllsch //
    833           1.1  jakllsch // EFI Configuration Table and GUID definitions
    834           1.1  jakllsch //
    835           1.1  jakllsch 
    836           1.1  jakllsch #define MPS_TABLE_GUID    \
    837           1.1  jakllsch     { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
    838           1.1  jakllsch 
    839           1.1  jakllsch #define ACPI_TABLE_GUID    \
    840           1.1  jakllsch     { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
    841           1.1  jakllsch 
    842           1.1  jakllsch #define ACPI_20_TABLE_GUID  \
    843           1.1  jakllsch     { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
    844           1.1  jakllsch 
    845           1.1  jakllsch #define SMBIOS_TABLE_GUID    \
    846           1.1  jakllsch     { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
    847           1.1  jakllsch 
    848           1.1  jakllsch #define SAL_SYSTEM_TABLE_GUID    \
    849           1.1  jakllsch     { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
    850           1.1  jakllsch 
    851  1.1.1.1.16.1  pgoyette /* DIG64 Headless Console & Debug Port Table. */
    852  1.1.1.1.16.1  pgoyette #define	HCDP_TABLE_GUID    \
    853  1.1.1.1.16.1  pgoyette     { 0xf951938d, 0x620b, 0x42ef, {0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98} }
    854           1.1  jakllsch 
    855           1.1  jakllsch typedef struct _EFI_CONFIGURATION_TABLE {
    856           1.1  jakllsch     EFI_GUID                VendorGuid;
    857           1.1  jakllsch     VOID                    *VendorTable;
    858           1.1  jakllsch } EFI_CONFIGURATION_TABLE;
    859           1.1  jakllsch 
    860           1.1  jakllsch 
    861           1.1  jakllsch //
    862           1.1  jakllsch // EFI System Table
    863           1.1  jakllsch //
    864           1.1  jakllsch 
    865           1.1  jakllsch 
    866           1.1  jakllsch 
    867           1.1  jakllsch 
    868           1.1  jakllsch #define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
    869           1.1  jakllsch #define EFI_SYSTEM_TABLE_REVISION      (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
    870           1.1  jakllsch 
    871           1.1  jakllsch typedef struct _EFI_SYSTEM_TABLE {
    872           1.1  jakllsch     EFI_TABLE_HEADER                Hdr;
    873           1.1  jakllsch 
    874           1.1  jakllsch     CHAR16                          *FirmwareVendor;
    875           1.1  jakllsch     UINT32                          FirmwareRevision;
    876           1.1  jakllsch 
    877           1.1  jakllsch     EFI_HANDLE                      ConsoleInHandle;
    878           1.1  jakllsch     SIMPLE_INPUT_INTERFACE          *ConIn;
    879           1.1  jakllsch 
    880           1.1  jakllsch     EFI_HANDLE                      ConsoleOutHandle;
    881           1.1  jakllsch     SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
    882           1.1  jakllsch 
    883           1.1  jakllsch     EFI_HANDLE                      StandardErrorHandle;
    884           1.1  jakllsch     SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
    885           1.1  jakllsch 
    886           1.1  jakllsch     EFI_RUNTIME_SERVICES            *RuntimeServices;
    887           1.1  jakllsch     EFI_BOOT_SERVICES               *BootServices;
    888           1.1  jakllsch 
    889           1.1  jakllsch     UINTN                           NumberOfTableEntries;
    890           1.1  jakllsch     EFI_CONFIGURATION_TABLE         *ConfigurationTable;
    891           1.1  jakllsch 
    892           1.1  jakllsch } EFI_SYSTEM_TABLE;
    893           1.1  jakllsch 
    894           1.1  jakllsch #endif
    895           1.1  jakllsch 
    896