Started BlpMmDestroy(), MmMdDestroy(), MmPaDestroy(), EfiSetWatchdogTimer(), EfiOpenProtocol(), EfiConInExSetState(), and BlDestroyLibrary(). Completed BlpFwInitialize(). Improved InitializeLibrary().
264 lines
6.2 KiB
C
264 lines
6.2 KiB
C
/*++
|
|
|
|
Copyright (c) 2024, Quinn Stephens.
|
|
Provided under the BSD 3-Clause license.
|
|
|
|
Module Name:
|
|
|
|
efiapi.h
|
|
|
|
Abstract:
|
|
|
|
Provides EFI API definitions.
|
|
|
|
--*/
|
|
|
|
#ifndef _EFIAPI_H
|
|
#define _EFIAPI_H
|
|
|
|
#define EFI_MAKE_REVISION(Major, Minor) (((Major) << 16) | (Minor))
|
|
#define EFI_SPECIFICATION_MAJOR_REVISION 1
|
|
#define EFI_SPECIFICATION_MINOR_REVISION 02
|
|
#define EFI_SPECIFICATION_VERSION EFI_MAKE_REVISION(EFI_SPECIFICATION_MAJOR_REVISION, EFI_SPECIFICATION_MINOR_REVISION)
|
|
|
|
INTERFACE_DECL(_EFI_SYSTEM_TABLE);
|
|
|
|
/*
|
|
* 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_ALLOCATE_PAGES) (
|
|
IN EFI_ALLOCATE_TYPE Type,
|
|
IN EFI_MEMORY_TYPE MemoryType,
|
|
IN UINTN Pages,
|
|
IN OUT EFI_PHYSICAL_ADDRESS *Memory
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_FREE_PAGES) (
|
|
IN EFI_PHYSICAL_ADDRESS Memory,
|
|
IN UINTN Pages
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_GET_MEMORY_MAP) (
|
|
IN OUT UINTN *MemoryMapSize,
|
|
IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
|
|
IN OUT UINTN *MapKey,
|
|
IN OUT UINTN *DescriptorSize,
|
|
IN OUT UINT32 *DescriptorVersion
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_HANDLE_PROTOCOL) (
|
|
IN EFI_HANDLE Handle,
|
|
IN EFI_GUID *Protocol,
|
|
OUT VOID **Interface
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_OPEN_PROTOCOL) (
|
|
IN EFI_HANDLE Handle,
|
|
IN EFI_GUID *Protocol,
|
|
OUT VOID **Interface,
|
|
IN EFI_HANDLE AgentHandle,
|
|
IN EFI_HANDLE ControllerHandle,
|
|
IN UINT32 Attributes
|
|
);
|
|
|
|
#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
|
|
#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
|
|
#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
|
|
#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
|
|
#define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
|
|
#define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_CLOSE_PROTOCOL) (
|
|
IN EFI_HANDLE Handle,
|
|
IN EFI_GUID *Protocol,
|
|
IN EFI_HANDLE AgentHandle,
|
|
IN EFI_HANDLE ControllerHandle
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SET_WATCHDOG_TIMER) (
|
|
IN UINTN Timeout,
|
|
IN UINT64 WatchdogCode,
|
|
IN UINTN DataSize,
|
|
IN CHAR16 *WatchdogData OPTIONAL
|
|
);
|
|
|
|
typedef struct _EFI_BOOT_SERVICES {
|
|
EFI_TABLE_HEADER Hdr;
|
|
|
|
EFI_HANDLE RaiseTPL;
|
|
EFI_HANDLE RestoreTPL;
|
|
|
|
EFI_ALLOCATE_PAGES AllocatePages;
|
|
EFI_FREE_PAGES FreePages;
|
|
EFI_GET_MEMORY_MAP 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_SET_WATCHDOG_TIMER SetWatchdogTimer;
|
|
|
|
EFI_HANDLE ConnectController;
|
|
EFI_HANDLE DisconnectController;
|
|
|
|
EFI_OPEN_PROTOCOL OpenProtocol;
|
|
EFI_CLOSE_PROTOCOL 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
|