alcyone/BOOT/ENVIRON/INC/efiapi.h

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