715 lines
17 KiB
C
715 lines
17 KiB
C
|
#ifndef _EFI_API_H
|
||
|
#define _EFI_API_H
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Copyright (c) 1998 Intel Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
efiapi.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Global EFI runtime & boot service interfaces
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Revision History
|
||
|
|
||
|
--*/
|
||
|
|
||
|
/*
|
||
|
* EFI Specification Revision
|
||
|
*/
|
||
|
|
||
|
#define EFI_SPECIFICATION_MAJOR_REVISION 0
|
||
|
#define EFI_SPECIFICATION_MINOR_REVISION 99
|
||
|
|
||
|
/*
|
||
|
* Declare forward referenced data structures
|
||
|
*/
|
||
|
|
||
|
INTERFACE_DECL(_EFI_SYSTEM_TABLE);
|
||
|
|
||
|
/*
|
||
|
* EFI Memory
|
||
|
*/
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_ALLOCATE_PAGES) (
|
||
|
IN EFI_ALLOCATE_TYPE Type,
|
||
|
IN EFI_MEMORY_TYPE MemoryType,
|
||
|
IN UINTN NoPages,
|
||
|
OUT EFI_PHYSICAL_ADDRESS *Memory
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_FREE_PAGES) (
|
||
|
IN EFI_PHYSICAL_ADDRESS Memory,
|
||
|
IN UINTN NoPages
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_GET_MEMORY_MAP) (
|
||
|
IN OUT UINTN *MemoryMapSize,
|
||
|
IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
|
||
|
OUT UINTN *MapKey,
|
||
|
OUT UINTN *DescriptorSize,
|
||
|
OUT UINT32 *DescriptorVersion
|
||
|
);
|
||
|
|
||
|
#define NextMemoryDescriptor(Ptr,Size) ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
|
||
|
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_ALLOCATE_POOL) (
|
||
|
IN EFI_MEMORY_TYPE PoolType,
|
||
|
IN UINTN Size,
|
||
|
OUT VOID **Buffer
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_FREE_POOL) (
|
||
|
IN VOID *Buffer
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
|
||
|
IN UINTN MemoryMapSize,
|
||
|
IN UINTN DescriptorSize,
|
||
|
IN UINT32 DescriptorVersion,
|
||
|
IN EFI_MEMORY_DESCRIPTOR *VirtualMap
|
||
|
);
|
||
|
|
||
|
|
||
|
#define EFI_OPTIONAL_PTR 0x00000001
|
||
|
#define EFI_INTERNAL_FNC 0x00000002 /* Pointer to internal runtime fnc */
|
||
|
#define EFI_INTERNAL_PTR 0x00000004 /* Pointer to internal runtime data */
|
||
|
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_CONVERT_POINTER) (
|
||
|
IN UINTN DebugDisposition,
|
||
|
IN OUT VOID **Address
|
||
|
);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* EFI Events
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
#define EVT_TIMER 0x80000000
|
||
|
#define EVT_RUNTIME 0x40000000
|
||
|
#define EVT_RUNTIME_CONTEXT 0x20000000
|
||
|
|
||
|
#define EVT_NOTIFY_WAIT 0x00000100
|
||
|
#define EVT_NOTIFY_SIGNAL 0x00000200
|
||
|
|
||
|
#define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201
|
||
|
#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
|
||
|
|
||
|
#define EVT_EFI_SIGNAL_MASK 0x000000FF
|
||
|
#define EVT_EFI_SIGNAL_MAX 2
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(EFIAPI *EFI_EVENT_NOTIFY) (
|
||
|
IN EFI_EVENT Event,
|
||
|
IN VOID *Context
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_CREATE_EVENT) (
|
||
|
IN UINT32 Type,
|
||
|
IN EFI_TPL NotifyTpl,
|
||
|
IN EFI_EVENT_NOTIFY NotifyFunction,
|
||
|
IN VOID *NotifyContext,
|
||
|
OUT EFI_EVENT *Event
|
||
|
);
|
||
|
|
||
|
typedef enum {
|
||
|
TimerCancel,
|
||
|
TimerPeriodic,
|
||
|
TimerRelative,
|
||
|
TimerTypeMax
|
||
|
} EFI_TIMER_DELAY;
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_SET_TIMER) (
|
||
|
IN EFI_EVENT Event,
|
||
|
IN EFI_TIMER_DELAY Type,
|
||
|
IN UINT64 TriggerTime
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_SIGNAL_EVENT) (
|
||
|
IN EFI_EVENT Event
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_WAIT_FOR_EVENT) (
|
||
|
IN UINTN NumberOfEvents,
|
||
|
IN EFI_EVENT *Event,
|
||
|
OUT UINTN *Index
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_CLOSE_EVENT) (
|
||
|
IN EFI_EVENT Event
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_CHECK_EVENT) (
|
||
|
IN EFI_EVENT Event
|
||
|
);
|
||
|
|
||
|
/*
|
||
|
* Task priority level
|
||
|
*/
|
||
|
|
||
|
#define TPL_APPLICATION 4
|
||
|
#define TPL_CALLBACK 8
|
||
|
#define TPL_NOTIFY 16
|
||
|
#define TPL_HIGH_LEVEL 31
|
||
|
|
||
|
typedef
|
||
|
EFI_TPL
|
||
|
(EFIAPI *EFI_RAISE_TPL) (
|
||
|
IN EFI_TPL NewTpl
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(EFIAPI *EFI_RESTORE_TPL) (
|
||
|
IN EFI_TPL OldTpl
|
||
|
);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* EFI platform varibles
|
||
|
*/
|
||
|
|
||
|
#define EFI_GLOBAL_VARIABLE \
|
||
|
{ 0x8BE4DF61, 0x93CA, 0x11d2, 0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C }
|
||
|
|
||
|
/* Variable attributes */
|
||
|
#define EFI_VARIABLE_NON_VOLATILE 0x00000001
|
||
|
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
|
||
|
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
|
||
|
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_GET_VARIABLE) (
|
||
|
IN CHAR16 *VariableName,
|
||
|
IN EFI_GUID *VendorGuid,
|
||
|
OUT UINT32 *Attributes OPTIONAL,
|
||
|
IN OUT UINTN *DataSize,
|
||
|
OUT VOID *Data
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
|
||
|
IN OUT UINTN *VariableNameSize,
|
||
|
IN OUT CHAR16 *VariableName,
|
||
|
IN OUT EFI_GUID *VendorGuid
|
||
|
);
|
||
|
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_SET_VARIABLE) (
|
||
|
IN CHAR16 *VariableName,
|
||
|
IN EFI_GUID *VendorGuid,
|
||
|
IN UINT32 Attributes,
|
||
|
IN UINTN DataSize,
|
||
|
IN VOID *Data
|
||
|
);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* EFI Time
|
||
|
*/
|
||
|
|
||
|
typedef struct {
|
||
|
UINT32 Resolution; /* 1e-6 parts per million */
|
||
|
UINT32 Accuracy; /* hertz */
|
||
|
BOOLEAN SetsToZero; /* Set clears sub-second time */
|
||
|
} EFI_TIME_CAPABILITIES;
|
||
|
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_GET_TIME) (
|
||
|
OUT EFI_TIME *Time,
|
||
|
OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_SET_TIME) (
|
||
|
IN EFI_TIME *Time
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_GET_WAKEUP_TIME) (
|
||
|
OUT BOOLEAN *Enabled,
|
||
|
OUT BOOLEAN *Pending,
|
||
|
OUT EFI_TIME *Time
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_SET_WAKEUP_TIME) (
|
||
|
IN BOOLEAN Enable,
|
||
|
IN EFI_TIME *Time OPTIONAL
|
||
|
);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Image functions
|
||
|
*/
|
||
|
|
||
|
|
||
|
/* PE32+ Subsystem type for EFI images */
|
||
|
|
||
|
#if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
|
||
|
#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
|
||
|
#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
|
||
|
#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
|
||
|
#endif
|
||
|
|
||
|
/* PE32+ Machine type for EFI images */
|
||
|
|
||
|
#if !defined(EFI_IMAGE_MACHINE_IA32)
|
||
|
#define EFI_IMAGE_MACHINE_IA32 0x014c
|
||
|
#endif
|
||
|
|
||
|
#if !defined(EFI_IMAGE_MACHINE_IA64)
|
||
|
#define EFI_IMAGE_MACHINE_IA64 0x0200
|
||
|
#endif
|
||
|
|
||
|
/* Image Entry prototype */
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_IMAGE_ENTRY_POINT) (
|
||
|
IN EFI_HANDLE ImageHandle,
|
||
|
IN struct _EFI_SYSTEM_TABLE *SystemTable
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_IMAGE_LOAD) (
|
||
|
IN BOOLEAN BootPolicy,
|
||
|
IN EFI_HANDLE ParentImageHandle,
|
||
|
IN EFI_DEVICE_PATH *FilePath,
|
||
|
IN VOID *SourceBuffer OPTIONAL,
|
||
|
IN UINTN SourceSize,
|
||
|
OUT EFI_HANDLE *ImageHandle
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_IMAGE_START) (
|
||
|
IN EFI_HANDLE ImageHandle,
|
||
|
OUT UINTN *ExitDataSize,
|
||
|
OUT CHAR16 **ExitData OPTIONAL
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_EXIT) (
|
||
|
IN EFI_HANDLE ImageHandle,
|
||
|
IN EFI_STATUS ExitStatus,
|
||
|
IN UINTN ExitDataSize,
|
||
|
IN CHAR16 *ExitData OPTIONAL
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_IMAGE_UNLOAD) (
|
||
|
IN EFI_HANDLE ImageHandle
|
||
|
);
|
||
|
|
||
|
|
||
|
/* Image handle */
|
||
|
#define LOADED_IMAGE_PROTOCOL \
|
||
|
{ 0x5B1B31A1, 0x9562, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }
|
||
|
|
||
|
#define EFI_IMAGE_INFORMATION_REVISION 0x1000
|
||
|
typedef struct {
|
||
|
UINT32 Revision;
|
||
|
EFI_HANDLE ParentHandle;
|
||
|
struct _EFI_SYSTEM_TABLE *SystemTable;
|
||
|
|
||
|
/* Source location of image */
|
||
|
EFI_HANDLE DeviceHandle;
|
||
|
EFI_DEVICE_PATH *FilePath;
|
||
|
VOID *Reserved;
|
||
|
|
||
|
/* Images load options */
|
||
|
UINT32 LoadOptionsSize;
|
||
|
VOID *LoadOptions;
|
||
|
|
||
|
/* Location of where image was loaded */
|
||
|
VOID *ImageBase;
|
||
|
UINT64 ImageSize;
|
||
|
EFI_MEMORY_TYPE ImageCodeType;
|
||
|
EFI_MEMORY_TYPE ImageDataType;
|
||
|
|
||
|
/* If the driver image supports a dynamic unload request */
|
||
|
EFI_IMAGE_UNLOAD Unload;
|
||
|
|
||
|
} EFI_LOADED_IMAGE;
|
||
|
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_EXIT_BOOT_SERVICES) (
|
||
|
IN EFI_HANDLE ImageHandle,
|
||
|
IN UINTN MapKey
|
||
|
);
|
||
|
|
||
|
/*
|
||
|
* Misc
|
||
|
*/
|
||
|
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_STALL) (
|
||
|
IN UINTN Microseconds
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_SET_WATCHDOG_TIMER) (
|
||
|
IN UINTN Timeout,
|
||
|
IN UINT64 WatchdogCode,
|
||
|
IN UINTN DataSize,
|
||
|
IN CHAR16 *WatchdogData OPTIONAL
|
||
|
);
|
||
|
|
||
|
|
||
|
typedef enum {
|
||
|
EfiResetCold,
|
||
|
EfiResetWarm
|
||
|
} EFI_RESET_TYPE;
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_RESET_SYSTEM) (
|
||
|
IN EFI_RESET_TYPE ResetType,
|
||
|
IN EFI_STATUS ResetStatus,
|
||
|
IN UINTN DataSize,
|
||
|
IN CHAR16 *ResetData OPTIONAL
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
|
||
|
OUT UINT64 *Count
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
|
||
|
OUT UINT32 *HighCount
|
||
|
);
|
||
|
|
||
|
/*
|
||
|
* Protocol handler functions
|
||
|
*/
|
||
|
|
||
|
typedef enum {
|
||
|
EFI_NATIVE_INTERFACE,
|
||
|
EFI_PCODE_INTERFACE
|
||
|
} EFI_INTERFACE_TYPE;
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
|
||
|
IN OUT EFI_HANDLE *Handle,
|
||
|
IN EFI_GUID *Protocol,
|
||
|
IN EFI_INTERFACE_TYPE InterfaceType,
|
||
|
IN VOID *Interface
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
|
||
|
IN EFI_HANDLE Handle,
|
||
|
IN EFI_GUID *Protocol,
|
||
|
IN VOID *OldInterface,
|
||
|
IN VOID *NewInterface
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
|
||
|
IN EFI_HANDLE Handle,
|
||
|
IN EFI_GUID *Protocol,
|
||
|
IN VOID *Interface
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_HANDLE_PROTOCOL) (
|
||
|
IN EFI_HANDLE Handle,
|
||
|
IN EFI_GUID *Protocol,
|
||
|
OUT VOID **Interface
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
|
||
|
IN EFI_GUID *Protocol,
|
||
|
IN EFI_EVENT Event,
|
||
|
OUT VOID **Registration
|
||
|
);
|
||
|
|
||
|
typedef enum {
|
||
|
AllHandles,
|
||
|
ByRegisterNotify,
|
||
|
ByProtocol
|
||
|
} EFI_LOCATE_SEARCH_TYPE;
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_LOCATE_HANDLE) (
|
||
|
IN EFI_LOCATE_SEARCH_TYPE SearchType,
|
||
|
IN EFI_GUID *Protocol OPTIONAL,
|
||
|
IN VOID *SearchKey OPTIONAL,
|
||
|
IN OUT UINTN *BufferSize,
|
||
|
OUT EFI_HANDLE *Buffer
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_LOCATE_DEVICE_PATH) (
|
||
|
IN EFI_GUID *Protocol,
|
||
|
IN OUT EFI_DEVICE_PATH **DevicePath,
|
||
|
OUT EFI_HANDLE *Device
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
|
||
|
IN EFI_GUID *Guid,
|
||
|
IN VOID *Table
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_RESERVED_SERVICE) (
|
||
|
);
|
||
|
|
||
|
/*
|
||
|
* Standard EFI table header
|
||
|
*/
|
||
|
|
||
|
typedef struct _EFI_TABLE_HEARDER {
|
||
|
UINT64 Signature;
|
||
|
UINT32 Revision;
|
||
|
UINT32 HeaderSize;
|
||
|
UINT32 CRC32;
|
||
|
UINT32 Reserved;
|
||
|
} EFI_TABLE_HEADER;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* EFI Runtime Serivces Table
|
||
|
*/
|
||
|
|
||
|
#define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
|
||
|
#define EFI_RUNTIME_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
|
||
|
|
||
|
typedef struct {
|
||
|
EFI_TABLE_HEADER Hdr;
|
||
|
|
||
|
/*
|
||
|
* Time services
|
||
|
*/
|
||
|
|
||
|
EFI_GET_TIME GetTime;
|
||
|
EFI_SET_TIME SetTime;
|
||
|
EFI_GET_WAKEUP_TIME GetWakeupTime;
|
||
|
EFI_SET_WAKEUP_TIME SetWakeupTime;
|
||
|
|
||
|
/*
|
||
|
* Virtual memory services
|
||
|
*/
|
||
|
|
||
|
EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
|
||
|
EFI_CONVERT_POINTER ConvertPointer;
|
||
|
|
||
|
/*
|
||
|
* Variable serviers
|
||
|
*/
|
||
|
|
||
|
EFI_GET_VARIABLE GetVariable;
|
||
|
EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
|
||
|
EFI_SET_VARIABLE SetVariable;
|
||
|
|
||
|
/*
|
||
|
* Misc
|
||
|
*/
|
||
|
|
||
|
EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
|
||
|
EFI_RESET_SYSTEM ResetSystem;
|
||
|
|
||
|
} EFI_RUNTIME_SERVICES;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* EFI Boot Services Table
|
||
|
*/
|
||
|
|
||
|
#define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
|
||
|
#define EFI_BOOT_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
|
||
|
|
||
|
typedef struct _EFI_BOOT_SERVICES {
|
||
|
|
||
|
EFI_TABLE_HEADER Hdr;
|
||
|
|
||
|
/*
|
||
|
* Task priority functions
|
||
|
*/
|
||
|
|
||
|
EFI_RAISE_TPL RaiseTPL;
|
||
|
EFI_RESTORE_TPL RestoreTPL;
|
||
|
|
||
|
/*
|
||
|
* Memory functions
|
||
|
*/
|
||
|
|
||
|
EFI_ALLOCATE_PAGES AllocatePages;
|
||
|
EFI_FREE_PAGES FreePages;
|
||
|
EFI_GET_MEMORY_MAP GetMemoryMap;
|
||
|
EFI_ALLOCATE_POOL AllocatePool;
|
||
|
EFI_FREE_POOL FreePool;
|
||
|
|
||
|
/*
|
||
|
* Event & timer functions
|
||
|
*/
|
||
|
|
||
|
EFI_CREATE_EVENT CreateEvent;
|
||
|
EFI_SET_TIMER SetTimer;
|
||
|
EFI_WAIT_FOR_EVENT WaitForEvent;
|
||
|
EFI_SIGNAL_EVENT SignalEvent;
|
||
|
EFI_CLOSE_EVENT CloseEvent;
|
||
|
EFI_CHECK_EVENT CheckEvent;
|
||
|
|
||
|
/*
|
||
|
* Protocol handler functions
|
||
|
*/
|
||
|
|
||
|
EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
|
||
|
EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
|
||
|
EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
|
||
|
EFI_HANDLE_PROTOCOL HandleProtocol;
|
||
|
EFI_HANDLE_PROTOCOL PCHandleProtocol;
|
||
|
EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
|
||
|
EFI_LOCATE_HANDLE LocateHandle;
|
||
|
EFI_LOCATE_DEVICE_PATH LocateDevicePath;
|
||
|
EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
|
||
|
|
||
|
/*
|
||
|
* Image functions
|
||
|
*/
|
||
|
|
||
|
EFI_IMAGE_LOAD LoadImage;
|
||
|
EFI_IMAGE_START StartImage;
|
||
|
EFI_EXIT Exit;
|
||
|
EFI_IMAGE_UNLOAD UnloadImage;
|
||
|
EFI_EXIT_BOOT_SERVICES ExitBootServices;
|
||
|
|
||
|
/*
|
||
|
* Misc functions
|
||
|
*/
|
||
|
|
||
|
EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
|
||
|
EFI_STALL Stall;
|
||
|
EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
|
||
|
|
||
|
} EFI_BOOT_SERVICES;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* EFI Configuration Table and GUID definitions
|
||
|
*/
|
||
|
|
||
|
#define MPS_TABLE_GUID \
|
||
|
{ 0xeb9d2d2f, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d }
|
||
|
|
||
|
#define ACPI_TABLE_GUID \
|
||
|
{ 0x8868e871, 0xe4f1, 0x11d3, 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 }
|
||
|
|
||
|
#define SMBIOS_TABLE_GUID \
|
||
|
{ 0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d }
|
||
|
|
||
|
#define SAL_SYSTEM_TABLE_GUID \
|
||
|
{ 0xeb9d2d32, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d }
|
||
|
|
||
|
|
||
|
typedef struct _EFI_CONFIGURATION_TABLE {
|
||
|
EFI_GUID VendorGuid;
|
||
|
VOID *VendorTable;
|
||
|
} EFI_CONFIGURATION_TABLE;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* EFI System Table
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
|
||
|
#define EFI_SYSTEM_TABLE_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
|
||
|
|
||
|
typedef struct _EFI_SYSTEM_TABLE {
|
||
|
EFI_TABLE_HEADER Hdr;
|
||
|
|
||
|
CHAR16 *FirmwareVendor;
|
||
|
UINT32 FirmwareRevision;
|
||
|
|
||
|
EFI_HANDLE ConsoleInHandle;
|
||
|
SIMPLE_INPUT_INTERFACE *ConIn;
|
||
|
|
||
|
EFI_HANDLE ConsoleOutHandle;
|
||
|
SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut;
|
||
|
|
||
|
EFI_HANDLE StandardErrorHandle;
|
||
|
SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr;
|
||
|
|
||
|
EFI_RUNTIME_SERVICES *RuntimeServices;
|
||
|
EFI_BOOT_SERVICES *BootServices;
|
||
|
|
||
|
UINTN NumberOfTableEntries;
|
||
|
EFI_CONFIGURATION_TABLE *ConfigurationTable;
|
||
|
|
||
|
} EFI_SYSTEM_TABLE;
|
||
|
|
||
|
#endif
|