237 lines
5.5 KiB
C
237 lines
5.5 KiB
C
/*++
|
|
|
|
Copyright (c) 2024, the LibreXP developers.
|
|
Provided under the BSD 3-Clause license.
|
|
|
|
Module Name:
|
|
|
|
efiapi.h
|
|
|
|
Abstract:
|
|
|
|
Provides EFI API definitions.
|
|
|
|
--*/
|
|
|
|
#ifndef _EFIAPI_H
|
|
#define _EFIAPI_H
|
|
|
|
#define EFI_SPECIFICATION_MAJOR_REVISION 1
|
|
#define EFI_SPECIFICATION_MINOR_REVISION 02
|
|
#define EFI_SPECIFICATION_VERSION ((EFI_SPECIFICATION_MAJOR_REVISION << 16) || EFI_SPECIFICATION_MINOR_REVISION)
|
|
|
|
INTERFACE_DECL(_EFI_SYSTEM_TABLE);
|
|
|
|
/*
|
|
* Loaded image protocol definitions.
|
|
*/
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_IMAGE_UNLOAD) (
|
|
IN EFI_HANDLE ImageHandle
|
|
);
|
|
|
|
#define EFI_LOADED_IMAGE_PROTOCOL_GUID \
|
|
{ 0x5b1b31a1, 0x9562, 0x11d2, { 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } }
|
|
#define LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL_GUID
|
|
|
|
#define EFI_IMAGE_INFORMATION_REVISION 0x1000
|
|
|
|
typedef struct {
|
|
UINT32 Revision;
|
|
EFI_HANDLE ParentHandle;
|
|
struct _EFI_SYSTEM_TABLE *SystemTable;
|
|
|
|
EFI_HANDLE DeviceHandle;
|
|
EFI_DEVICE_PATH *FilePath;
|
|
VOID *Reserved;
|
|
|
|
UINT32 LoadOptionsSize;
|
|
VOID *LoadOptions;
|
|
|
|
VOID *ImageBase;
|
|
UINT64 ImageSize;
|
|
EFI_MEMORY_TYPE ImageCodeType;
|
|
EFI_MEMORY_TYPE ImageDataType;
|
|
|
|
EFI_IMAGE_UNLOAD Unload;
|
|
} EFI_LOADED_IMAGE;
|
|
|
|
/*
|
|
* EFI table header.
|
|
*/
|
|
|
|
typedef struct _EFI_TABLE_HEADER {
|
|
UINT64 Signature;
|
|
UINT32 Revision;
|
|
UINT32 HeaderSize;
|
|
UINT32 CRC32;
|
|
UINT32 Reserved;
|
|
} EFI_TABLE_HEADER;
|
|
|
|
/*
|
|
* EFI runtime services table definitions.
|
|
*/
|
|
|
|
#define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
|
|
#define EFI_RUNTIME_SERVICES_REVISION EFI_SPECIFICATION_VERSION
|
|
|
|
typedef struct {
|
|
EFI_TABLE_HEADER Hdr;
|
|
|
|
EFI_HANDLE GetTime;
|
|
EFI_HANDLE SetTime;
|
|
EFI_HANDLE GetWakeupTime;
|
|
EFI_HANDLE SetWakeupTime;
|
|
|
|
EFI_HANDLE SetVirtualAddressMap;
|
|
EFI_HANDLE ConvertPointer;
|
|
|
|
EFI_HANDLE GetVariable;
|
|
EFI_HANDLE GetNextVariableName;
|
|
EFI_HANDLE SetVariable;
|
|
|
|
EFI_HANDLE GetNextHighMonotonicCount;
|
|
EFI_HANDLE ResetSystem;
|
|
|
|
EFI_HANDLE UpdateCapsule;
|
|
EFI_HANDLE QueryCapsuleCapabilities;
|
|
EFI_HANDLE QueryVariableInfo;
|
|
} EFI_RUNTIME_SERVICES;
|
|
|
|
/*
|
|
* EFI boot services table definitions.
|
|
*/
|
|
|
|
#define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
|
|
#define EFI_BOOT_SERVICES_REVISION EFI_SPECIFICATION_VERSION
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_HANDLE_PROTOCOL) (
|
|
IN EFI_HANDLE Handle,
|
|
IN EFI_GUID *Protocol,
|
|
OUT VOID **Interface
|
|
);
|
|
|
|
typedef struct _EFI_BOOT_SERVICES {
|
|
EFI_TABLE_HEADER Hdr;
|
|
|
|
EFI_HANDLE RaiseTPL;
|
|
EFI_HANDLE RestoreTPL;
|
|
|
|
EFI_HANDLE AllocatePages;
|
|
EFI_HANDLE FreePages;
|
|
EFI_HANDLE GetMemoryMap;
|
|
EFI_HANDLE AllocatePool;
|
|
EFI_HANDLE FreePool;
|
|
|
|
EFI_HANDLE CreateEvent;
|
|
EFI_HANDLE SetTimer;
|
|
EFI_HANDLE WaitForEvent;
|
|
EFI_HANDLE SignalEvent;
|
|
EFI_HANDLE CloseEvent;
|
|
EFI_HANDLE CheckEvent;
|
|
|
|
EFI_HANDLE InstallProtocolInterface;
|
|
EFI_HANDLE ReinstallProtocolInterface;
|
|
EFI_HANDLE UninstallProtocolInterface;
|
|
EFI_HANDLE_PROTOCOL HandleProtocol;
|
|
EFI_HANDLE AlternateHandleProtocol;
|
|
EFI_HANDLE RegisterProtocolNotify;
|
|
EFI_HANDLE LocateHandle;
|
|
EFI_HANDLE LocateDevicePath;
|
|
EFI_HANDLE InstallConfigurationTable;
|
|
|
|
EFI_HANDLE LoadImage;
|
|
EFI_HANDLE StartImage;
|
|
EFI_HANDLE Exit;
|
|
EFI_HANDLE UnloadImage;
|
|
EFI_HANDLE ExitBootServices;
|
|
|
|
EFI_HANDLE GetNextHighMonotonicCount;
|
|
EFI_HANDLE Stall;
|
|
EFI_HANDLE SetWatchdogTimer;
|
|
|
|
EFI_HANDLE ConnectController;
|
|
EFI_HANDLE DisconnectController;
|
|
|
|
EFI_HANDLE OpenProtocol;
|
|
EFI_HANDLE CloseProtocol;
|
|
EFI_HANDLE OpenProtocolInformation;
|
|
|
|
EFI_HANDLE ProtocolsPerHandle;
|
|
EFI_HANDLE LocateHandleBuffer;
|
|
EFI_HANDLE LocateProtocol;
|
|
EFI_HANDLE InstallMultipleProtocolInterfaces;
|
|
EFI_HANDLE UninstallMultipleProtocolInterfaces;
|
|
|
|
EFI_HANDLE CalculateCrc32;
|
|
|
|
EFI_HANDLE CopyMem;
|
|
EFI_HANDLE SetMem;
|
|
EFI_HANDLE CreateEventEx;
|
|
} EFI_BOOT_SERVICES;
|
|
|
|
/*
|
|
* EFI configuration table 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 ACPI_20_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 SMBIOS3_TABLE_GUID \
|
|
{ 0xf2fd1544, 0x9794, 0x4a2c, { 0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94 } }
|
|
|
|
#define SAL_SYSTEM_TABLE_GUID \
|
|
{ 0xeb9d2d32, 0x2d88, 0x11d3, { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
|
|
|
|
#define EFI_DTB_TABLE_GUID \
|
|
{ 0xb1b621d5, 0xf19c, 0x41a5, { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } }
|
|
|
|
typedef struct _EFI_CONFIGURATION_TABLE {
|
|
EFI_GUID VendorGuid;
|
|
VOID *VendorTable;
|
|
} EFI_CONFIGURATION_TABLE;
|
|
|
|
/*
|
|
* EFI system table definitions.
|
|
*/
|
|
|
|
#define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
|
|
#define EFI_SYSTEM_TABLE_REVISION EFI_SPECIFICATION_VERSION
|
|
|
|
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
|