Add basic EFI-related structures
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This commit is contained in:
parent
35f2c67138
commit
d1fff10c15
@ -20,3 +20,4 @@
|
|||||||
|
|
||||||
/* Architecture-independent XT API */
|
/* Architecture-independent XT API */
|
||||||
#include "xtcommon.h"
|
#include "xtcommon.h"
|
||||||
|
#include "xtuefi.h"
|
||||||
|
390
sdk/xtdk/xtuefi.h
Normal file
390
sdk/xtdk/xtuefi.h
Normal file
@ -0,0 +1,390 @@
|
|||||||
|
/**
|
||||||
|
* PROJECT: ExectOS
|
||||||
|
* COPYRIGHT: See COPYING.md in the top level directory
|
||||||
|
* FILE: sdk/xtdk/xtuefi.h
|
||||||
|
* DESCRIPTION: XT UEFI support
|
||||||
|
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __XTDK_XTUEFI_H
|
||||||
|
#define __XTDK_XTUEFI_H
|
||||||
|
|
||||||
|
#include "xttypes.h"
|
||||||
|
#include "xtstruct.h"
|
||||||
|
#include "xtcommon.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Basic UEFI types */
|
||||||
|
typedef PVOID EFI_EVENT, *PEFI_EVENT;
|
||||||
|
typedef PVOID EFI_HANDLE, *PEFI_HANDLE;
|
||||||
|
typedef UINT64 EFI_LBA, *PEFI_LBA;
|
||||||
|
typedef UINT64 EFI_PHYSICAL_ADDRESS, *PEFI_PHYSICAL_ADDRESS;
|
||||||
|
typedef UINT_PTR EFI_STATUS, *PEFI_STATUS;
|
||||||
|
typedef UINT_PTR EFI_TPL, *PEFI_TPL;
|
||||||
|
typedef UINT64 EFI_VIRTUAL_ADDRESS, *PEFI_VIRTUAL_ADDRESS;
|
||||||
|
|
||||||
|
/* Enumeration list of EFI memory allocation types */
|
||||||
|
typedef enum _EFI_ALLOCATE_TYPE
|
||||||
|
{
|
||||||
|
AllocateAnyPages,
|
||||||
|
AllocateMaxAddress,
|
||||||
|
AllocateAddress,
|
||||||
|
MaxAllocateType
|
||||||
|
} EFI_ALLOCATE_TYPE, *PEFI_ALLOCATE_TYPE;
|
||||||
|
|
||||||
|
/* Enumeration list of reset types */
|
||||||
|
typedef enum _EFI_RESET_TYPE
|
||||||
|
{
|
||||||
|
EfiResetCold,
|
||||||
|
EfiResetWarm,
|
||||||
|
EfiResetShutdown
|
||||||
|
} EFI_RESET_TYPE, *PEFI_RESET_TYPE;
|
||||||
|
|
||||||
|
/* Enumeration list of timer delay types */
|
||||||
|
typedef enum _EFI_TIMER_DELAY
|
||||||
|
{
|
||||||
|
TimerCancel,
|
||||||
|
TimerPeriodic,
|
||||||
|
TimerRelative,
|
||||||
|
TimerTypeMax
|
||||||
|
} EFI_TIMER_DELAY, *PEFI_TIMER_DELAY;
|
||||||
|
|
||||||
|
/* Enumeration list of EFI Locate Search Types */
|
||||||
|
typedef enum _EFI_LOCATE_SEARCH_TYPE
|
||||||
|
{
|
||||||
|
AllHandles,
|
||||||
|
ByRegisterNotify,
|
||||||
|
ByProtocol
|
||||||
|
} EFI_LOCATE_SEARCH_TYPE, *PEFI_LOCATE_SEARCH_TYPE;
|
||||||
|
|
||||||
|
/* Enumeration list of EFI Interface Types */
|
||||||
|
typedef enum _EFI_INTERFACE_TYPE
|
||||||
|
{
|
||||||
|
EFI_NATIVE_INTERFACE,
|
||||||
|
EFI_PCODE_INTERFACE
|
||||||
|
} EFI_INTERFACE_TYPE, *PEFI_INTERFACE_TYPE;
|
||||||
|
|
||||||
|
/* Enumeration of memory types introduced in UEFI */
|
||||||
|
typedef enum _EFI_MEMORY_TYPE
|
||||||
|
{
|
||||||
|
EfiReservedMemoryType,
|
||||||
|
EfiLoaderCode,
|
||||||
|
EfiLoaderData,
|
||||||
|
EfiBootServicesCode,
|
||||||
|
EfiBootServicesData,
|
||||||
|
EfiRuntimeServicesCode,
|
||||||
|
EfiRuntimeServicesData,
|
||||||
|
EfiConventionalMemory,
|
||||||
|
EfiUnusableMemory,
|
||||||
|
EfiACPIReclaimMemory,
|
||||||
|
EfiACPIMemoryNVS,
|
||||||
|
EfiMemoryMappedIO,
|
||||||
|
EfiMemoryMappedIOPortSpace,
|
||||||
|
EfiPalCode,
|
||||||
|
EfiMaxMemoryType
|
||||||
|
} EFI_MEMORY_TYPE, *PEFI_MEMORY_TYPE;
|
||||||
|
|
||||||
|
/* EFI structures forward references */
|
||||||
|
typedef struct _EFI_CAPSULE_HEADER EFI_CAPSULE_HEADER, *PEFI_CAPSULE_HEADER;
|
||||||
|
typedef struct _EFI_GUID EFI_GUID, *PEFI_GUID;
|
||||||
|
typedef struct _EFI_MEMORY_DESCRIPTOR EFI_MEMORY_DESCRIPTOR, *PEFI_MEMORY_DESCRIPTOR;
|
||||||
|
typedef struct _EFI_RUNTIME_SERVICES EFI_RUNTIME_SERVICES, *PEFI_RUNTIME_SERVICES;
|
||||||
|
typedef struct _EFI_TABLE_HEADER EFI_TABLE_HEADER, *PEFI_TABLE_HEADER;
|
||||||
|
typedef struct _EFI_TIME EFI_TIME, *PEFI_TIME;
|
||||||
|
typedef struct _EFI_TIME_CAPABILITIES EFI_TIME_CAPABILITIES, *PEFI_TIME_CAPABILITIES;
|
||||||
|
typedef struct _EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL, *PEFI_DEVICE_PATH_PROTOCOL;
|
||||||
|
typedef struct _EFI_CONFIGURATION_TABLE EFI_CONFIGURATION_TABLE, *PEFI_CONFIGURATION_TABLE;
|
||||||
|
typedef struct _EFI_OPEN_PROTOCOL_INFORMATION_ENTRY EFI_OPEN_PROTOCOL_INFORMATION_ENTRY, *PEFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
|
||||||
|
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL, *PEFI_SIMPLE_TEXT_INPUT_PROTOCOL;
|
||||||
|
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL, *PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
|
||||||
|
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_MODE EFI_SIMPLE_TEXT_OUTPUT_MODE, *PEFI_SIMPLE_TEXT_OUTPUT_MODE;
|
||||||
|
typedef struct _EFI_INPUT_KEY EFI_INPUT_KEY, *PEFI_INPUT_KEY;
|
||||||
|
|
||||||
|
/* EFI routines forward references */
|
||||||
|
typedef EFI_STATUS (*PEFI_CONVERT_POINTER)(UINT64 DebugDisposition, PVOID *Address);
|
||||||
|
typedef EFI_STATUS (*PEFI_ALLOCATE_PAGES)(EFI_ALLOCATE_TYPE Type, UINT_PTR MemoryType, UINT_PTR Pages, EFI_PHYSICAL_ADDRESS *Memory);
|
||||||
|
typedef EFI_STATUS (*PEFI_ALLOCATE_POOL)(UINT_PTR PoolType, UINT_PTR Size, PVOID *Buffer);
|
||||||
|
typedef EFI_STATUS (*PEFI_FREE_PAGES)(EFI_PHYSICAL_ADDRESS Memory, UINT_PTR Pages);
|
||||||
|
typedef EFI_STATUS (*PEFI_FREE_POOL)(PVOID Buffer);
|
||||||
|
typedef VOID (*PEFI_EVENT_NOTIFY)(EFI_EVENT Event, PVOID Context);
|
||||||
|
typedef EFI_STATUS (*PEFI_CREATE_EVENT)(UINT32 Type, EFI_TPL NotifyTpl, PEFI_EVENT_NOTIFY NotifyFunction, PVOID NotifyContext, PEFI_GUID EventGroup, PEFI_EVENT Event);
|
||||||
|
typedef EFI_STATUS (*PEFI_GET_MEMORY_MAP)(PUINT_PTR MemoryMapSize, PEFI_MEMORY_DESCRIPTOR MemoryMap, PUINT_PTR MapKey, PUINT_PTR DescriptorSize, PUINT32 DescriptorVersion);
|
||||||
|
typedef EFI_STATUS (*PEFI_GET_VARIABLE)(PUINT16 VariableName, PEFI_GUID VendorGuid, PUINT32 Attributes, PUINT_PTR DataSize, PVOID Data);
|
||||||
|
typedef EFI_STATUS (*PEFI_GET_NEXT_HIGH_MONO_COUNT)(PUINT32 HighCount);
|
||||||
|
typedef EFI_STATUS (*PEFI_GET_NEXT_VARIABLE_NAME)(PUINT_PTR VariableNameSize, PUINT16 VariableName, PEFI_GUID VendorGuid);
|
||||||
|
typedef EFI_STATUS (*PEFI_GET_TIME)(PEFI_TIME Time, PEFI_TIME_CAPABILITIES Capabilities);
|
||||||
|
typedef EFI_STATUS (*PEFI_SET_TIME)(PEFI_TIME Time);
|
||||||
|
typedef EFI_STATUS (*PEFI_SET_TIMER)(EFI_EVENT Event, EFI_TIMER_DELAY Type, UINT64 TriggerTime);
|
||||||
|
typedef EFI_STATUS (*PEFI_SIGNAL_EVENT)(EFI_EVENT Event);
|
||||||
|
typedef EFI_STATUS (*PEFI_CLOSE_EVENT)(EFI_EVENT Event);
|
||||||
|
typedef EFI_STATUS (*PEFI_CHECK_EVENT)(EFI_EVENT Event);
|
||||||
|
typedef EFI_STATUS (*PEFI_CREATE_EVENT_EX)(UINT32 Type, EFI_TPL NotifyTpl, PEFI_EVENT_NOTIFY NotifyFunction, PVOID NotifyContext, PEFI_GUID EventGroup, PEFI_EVENT Event);
|
||||||
|
typedef EFI_STATUS (*PEFI_WAIT_FOR_EVENT)(UINT_PTR NumberOfEvents, PEFI_EVENT Event, PUINT_PTR Index);
|
||||||
|
typedef EFI_STATUS (*PEFI_QUERY_CAPSULE_CAPABILITIES)(PEFI_CAPSULE_HEADER *CapsuleHeaderArray, UINT_PTR CapsuleCount, PUINT64 MaximumCapsuleSize, PEFI_RESET_TYPE ResetType);
|
||||||
|
typedef EFI_STATUS (*PEFI_QUERY_VARIABLE_INFO)(UINT32 Attributes, PUINT64 MaximumVariableStorageSize, PUINT64 RemainingVariableStorageSize, PUINT64 MaximumVariableSize);
|
||||||
|
typedef EFI_STATUS (*PEFI_RAISE_TPL)(EFI_TPL NewTpl);
|
||||||
|
typedef EFI_STATUS (*PEFI_RESET_SYSTEM)(EFI_RESET_TYPE ResetType, EFI_STATUS ResetStatus, UINT_PTR DataSize, PVOID ResetData);
|
||||||
|
typedef EFI_STATUS (*PEFI_RESTORE_TPL)(EFI_TPL OldTpl);
|
||||||
|
typedef EFI_STATUS (*PEFI_UPDATE_CAPSULE)(PEFI_CAPSULE_HEADER *CapsuleHeaderArray, UINT_PTR CapsuleCount, EFI_PHYSICAL_ADDRESS ScatterGatherList);
|
||||||
|
typedef EFI_STATUS (*PEFI_SET_VARIABLE)(PUINT16 VariableName, PEFI_GUID VendorGuid, UINT32 Attributes, UINT_PTR DataSize, PVOID Data);
|
||||||
|
typedef EFI_STATUS (*PEFI_SET_VIRTUAL_ADDRESS_MAP)(UINT_PTR MemoryMapSize, UINT_PTR DescriptorSize, UINT32 DescriptorVersion, PEFI_MEMORY_DESCRIPTOR VirtualMap);
|
||||||
|
typedef EFI_STATUS (*PEFI_GET_WAKEUP_TIME)(PUCHAR Enabled, PUCHAR Pending, PEFI_TIME Time);
|
||||||
|
typedef EFI_STATUS (*PEFI_SET_WAKEUP_TIME)(UCHAR Enable, PEFI_TIME Time);
|
||||||
|
typedef EFI_STATUS (*PEFI_INSTALL_PROTOCOL_INTERFACE)(PEFI_HANDLE Handle, PEFI_GUID Protocol, EFI_INTERFACE_TYPE InterfaceType, PVOID Interface);
|
||||||
|
typedef EFI_STATUS (*PEFI_REINSTALL_PROTOCOL_INTERFACE)(EFI_HANDLE Handle, PEFI_GUID Protocol, PVOID OldInterface, PVOID NewInterface);
|
||||||
|
typedef EFI_STATUS (*PEFI_UNINSTALL_PROTOCOL_INTERFACE)(EFI_HANDLE Handle, PEFI_GUID Protocol, PVOID Interface);
|
||||||
|
typedef EFI_STATUS (*PEFI_HANDLE_PROTOCOL)(EFI_HANDLE Handle, PEFI_GUID Protocol, PVOID *Interface);
|
||||||
|
typedef EFI_STATUS (*PEFI_REGISTER_PROTOCOL_NOTIFY)(PEFI_GUID Protocol, EFI_EVENT Event, PVOID *Registration);
|
||||||
|
typedef EFI_STATUS (*PEFI_LOCATE_HANDLE)(EFI_LOCATE_SEARCH_TYPE SearchType, PEFI_GUID Protocol, PVOID SearchKey, PUINT_PTR BufferSize, PEFI_HANDLE Buffer);
|
||||||
|
typedef EFI_STATUS (*PEFI_LOCATE_DEVICE_PATH)(PEFI_GUID Protocol, PEFI_DEVICE_PATH_PROTOCOL *DevicePath, PEFI_HANDLE Device);
|
||||||
|
typedef EFI_STATUS (*PEFI_LOCATE_HANDLE_BUFFER)(EFI_LOCATE_SEARCH_TYPE SearchType, PEFI_GUID Protocol, PVOID SearchKey, PUINT_PTR NoHandles, PEFI_HANDLE *Buffer);
|
||||||
|
typedef EFI_STATUS (*PEFI_LOCATE_PROTOCOL)(PEFI_GUID Protocol, PVOID Registration, PVOID *Interface);
|
||||||
|
typedef EFI_STATUS (*PEFI_INSTALL_CONFIGURATION_TABLE)(PEFI_GUID Guid, PVOID Table);
|
||||||
|
typedef EFI_STATUS (*PEFI_IMAGE_LOAD)(UCHAR BootPolicy, EFI_HANDLE ParentImageHandle, PEFI_DEVICE_PATH_PROTOCOL DevicePath, PVOID SourceBuffer, UINT_PTR SourceSize, PEFI_HANDLE ImageHandle);
|
||||||
|
typedef EFI_STATUS (*PEFI_IMAGE_UNLOAD)(EFI_HANDLE ImageHandle);
|
||||||
|
typedef EFI_STATUS (*PEFI_IMAGE_START)(EFI_HANDLE ImageHandle, PUINT_PTR ExitDataSize, PUINT16 *ExitData);
|
||||||
|
typedef EFI_STATUS (*PEFI_EXIT)(EFI_HANDLE ImageHandle, EFI_STATUS ExitStatus, UINT_PTR ExitDataSize, PUINT16 ExitData);
|
||||||
|
typedef EFI_STATUS (*PEFI_EXIT_BOOT_SERVICES)(EFI_HANDLE ImageHandle, UINT_PTR MapKey);
|
||||||
|
typedef EFI_STATUS (*PEFI_GET_NEXT_MONOTONIC_COUNT)(PUINT64 Count);
|
||||||
|
typedef EFI_STATUS (*PEFI_STALL)(UINT_PTR Microseconds);
|
||||||
|
typedef EFI_STATUS (*PEFI_SET_WATCHDOG_TIMER)(UINT_PTR Timeout, UINT64 WatchdogCode, UINT_PTR DataSize, PUINT16 WatchdogData);
|
||||||
|
typedef EFI_STATUS (*PEFI_CONNECT_CONTROLLER)(EFI_HANDLE ControllerHandle, PEFI_HANDLE DriverImageHandle, PEFI_DEVICE_PATH_PROTOCOL RemainingDevicePath, UCHAR Recursive);
|
||||||
|
typedef EFI_STATUS (*PEFI_DISCONNECT_CONTROLLER)(EFI_HANDLE ControllerHandle, EFI_HANDLE DriverImageHandle, EFI_HANDLE ChildHandle);
|
||||||
|
typedef EFI_STATUS (*PEFI_OPEN_PROTOCOL)(EFI_HANDLE Handle, PEFI_GUID Protocol, PVOID *Interface, EFI_HANDLE AgentHandle, EFI_HANDLE ControllerHandle, UINT32 Attributes);
|
||||||
|
typedef EFI_STATUS (*PEFI_CLOSE_PROTOCOL)(EFI_HANDLE Handle, PEFI_GUID Protocol, EFI_HANDLE AgentHandle, EFI_HANDLE ControllerHandle);
|
||||||
|
typedef EFI_STATUS (*PEFI_OPEN_PROTOCOL_INFORMATION)(EFI_HANDLE Handle, PEFI_GUID Protocol, PEFI_OPEN_PROTOCOL_INFORMATION_ENTRY *EntryBuffer, PUINT_PTR EntryCount);
|
||||||
|
typedef EFI_STATUS (*PEFI_PROTOCOLS_PER_HANDLE)(EFI_HANDLE Handle, PEFI_GUID **ProtocolBuffer, PUINT_PTR ProtocolBufferCount);
|
||||||
|
typedef EFI_STATUS (*PEFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)(PEFI_HANDLE Handle, ...);
|
||||||
|
typedef EFI_STATUS (*PEFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)(PEFI_HANDLE Handle, ...);
|
||||||
|
typedef EFI_STATUS (*PEFI_CALCULATE_CRC32)(PVOID Data, UINT_PTR DataSize, PUINT32 Crc32);
|
||||||
|
typedef EFI_STATUS (*PEFI_COPY_MEM)(PVOID Destination, PVOID Source, UINT_PTR Length);
|
||||||
|
typedef EFI_STATUS (*PEFI_SET_MEM)(PVOID Buffer, UINT_PTR Size, UINT8 Value);
|
||||||
|
typedef EFI_STATUS (*PEFI_INPUT_RESET)(PEFI_SIMPLE_TEXT_INPUT_PROTOCOL This, UCHAR ExtendedVerification);
|
||||||
|
typedef EFI_STATUS (*PEFI_INPUT_READ_KEY)(PEFI_SIMPLE_TEXT_INPUT_PROTOCOL This, PEFI_INPUT_KEY Key);
|
||||||
|
typedef EFI_STATUS (*PEFI_TEXT_RESET)(PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, UCHAR ExtendedVerification);
|
||||||
|
typedef EFI_STATUS (*PEFI_TEXT_STRING)(PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, PUINT16 String);
|
||||||
|
typedef EFI_STATUS (*PEFI_TEXT_TEST_STRING)(PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, PUINT16 String);
|
||||||
|
typedef EFI_STATUS (*PEFI_TEXT_QUERY_MODE)(PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, UINT_PTR ModeNumber, UINT_PTR *Columns, UINT_PTR *Rows);
|
||||||
|
typedef EFI_STATUS (*PEFI_TEXT_SET_MODE)(PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, UINT_PTR ModeNumber);
|
||||||
|
typedef EFI_STATUS (*PEFI_TEXT_SET_ATTRIBUTE)(PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, UINT_PTR Attribute);
|
||||||
|
typedef EFI_STATUS (*PEFI_TEXT_CLEAR_SCREEN)(PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This);
|
||||||
|
typedef EFI_STATUS (*PEFI_TEXT_SET_CURSOR_POSITION)(PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, UINT_PTR Column, UINT_PTR Row);
|
||||||
|
typedef EFI_STATUS (*PEFI_TEXT_ENABLE_CURSOR)(PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, UCHAR Visible);
|
||||||
|
|
||||||
|
/* 128-bit buffer containing a unique identifier value */
|
||||||
|
typedef struct _EFI_GUID
|
||||||
|
{
|
||||||
|
UINT32 Data1;
|
||||||
|
UINT16 Data2;
|
||||||
|
UINT16 Data3;
|
||||||
|
UINT8 Data4[8];
|
||||||
|
} EFI_GUID, *PEFI_GUID;
|
||||||
|
|
||||||
|
/* EFI Capsule Header */
|
||||||
|
typedef struct _EFI_CAPSULE_HEADER
|
||||||
|
{
|
||||||
|
EFI_GUID CapsuleGuid;
|
||||||
|
UINT32 HeaderSize;
|
||||||
|
UINT32 Flags;
|
||||||
|
UINT32 CapsuleImageSize;
|
||||||
|
} EFI_CAPSULE_HEADER, *PEFI_CAPSULE_HEADER;
|
||||||
|
|
||||||
|
/* Definition of an EFI memory descriptor */
|
||||||
|
typedef struct _EFI_MEMORY_DESCRIPTOR
|
||||||
|
{
|
||||||
|
UINT32 Type;
|
||||||
|
UINT32 Pad;
|
||||||
|
EFI_PHYSICAL_ADDRESS PhysicalStart;
|
||||||
|
EFI_VIRTUAL_ADDRESS VirtualStart;
|
||||||
|
UINT64 NumberOfPages;
|
||||||
|
UINT64 Attribute;
|
||||||
|
} EFI_MEMORY_DESCRIPTOR, *PEFI_MEMORY_DESCRIPTOR;
|
||||||
|
|
||||||
|
/* Data structure that precedes all of the standard EFI table types */
|
||||||
|
typedef struct _EFI_TABLE_HEADER
|
||||||
|
{
|
||||||
|
UINT64 Signature;
|
||||||
|
UINT32 Revision;
|
||||||
|
UINT32 HeaderSize;
|
||||||
|
UINT32 CRC32;
|
||||||
|
UINT32 Reserved;
|
||||||
|
} EFI_TABLE_HEADER, *PEFI_TABLE_HEADER;
|
||||||
|
|
||||||
|
/* EFI Time Abstraction */
|
||||||
|
typedef struct _EFI_TIME
|
||||||
|
{
|
||||||
|
UINT16 Year;
|
||||||
|
UINT8 Month;
|
||||||
|
UINT8 Day;
|
||||||
|
UINT8 Hour;
|
||||||
|
UINT8 Minute;
|
||||||
|
UINT8 Second;
|
||||||
|
UINT8 Pad1;
|
||||||
|
UINT32 Nanosecond;
|
||||||
|
INT16 TimeZone;
|
||||||
|
UINT8 Daylight;
|
||||||
|
UINT8 PAD2;
|
||||||
|
} EFI_TIME, *PEFI_TIME;
|
||||||
|
|
||||||
|
/* Provides the capabilities of the RTC device as exposed through the EFI interfaces */
|
||||||
|
typedef struct _EFI_TIME_CAPABILITIES
|
||||||
|
{
|
||||||
|
UINT32 Resolution;
|
||||||
|
UINT32 Accuracy;
|
||||||
|
UCHAR SetsToZero;
|
||||||
|
} EFI_TIME_CAPABILITIES, *PEFI_TIME_CAPABILITIES;
|
||||||
|
|
||||||
|
/* Describes the location of the device the handle is for */
|
||||||
|
typedef struct _EFI_DEVICE_PATH_PROTOCOL
|
||||||
|
{
|
||||||
|
UINT8 Type;
|
||||||
|
UINT8 SubType;
|
||||||
|
UINT8 Length[2];
|
||||||
|
} EFI_DEVICE_PATH_PROTOCOL, *PEFI_DEVICE_PATH_PROTOCOL;
|
||||||
|
|
||||||
|
/* EFI Open Protocol Information Entry */
|
||||||
|
typedef struct _EFI_OPEN_PROTOCOL_INFORMATION_ENTRY
|
||||||
|
{
|
||||||
|
EFI_HANDLE AgentHandle;
|
||||||
|
EFI_HANDLE ControllerHandle;
|
||||||
|
UINT32 Attributes;
|
||||||
|
UINT32 OpenCount;
|
||||||
|
} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY, *PEFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
|
||||||
|
|
||||||
|
/* EFI Boot Services Table */
|
||||||
|
typedef struct _EFI_BOOT_SERVICES
|
||||||
|
{
|
||||||
|
EFI_TABLE_HEADER Hdr;
|
||||||
|
PEFI_RAISE_TPL RaiseTPL;
|
||||||
|
PEFI_RESTORE_TPL RestoreTPL;
|
||||||
|
PEFI_ALLOCATE_PAGES AllocatePages;
|
||||||
|
PEFI_FREE_PAGES FreePages;
|
||||||
|
PEFI_GET_MEMORY_MAP GetMemoryMap;
|
||||||
|
PEFI_ALLOCATE_POOL AllocatePool;
|
||||||
|
PEFI_FREE_POOL FreePool;
|
||||||
|
PEFI_CREATE_EVENT CreateEvent;
|
||||||
|
PEFI_SET_TIMER SetTimer;
|
||||||
|
PEFI_WAIT_FOR_EVENT WaitForEvent;
|
||||||
|
PEFI_SIGNAL_EVENT SignalEvent;
|
||||||
|
PEFI_CLOSE_EVENT CloseEvent;
|
||||||
|
PEFI_CHECK_EVENT CheckEvent;
|
||||||
|
PEFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
|
||||||
|
PEFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
|
||||||
|
PEFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
|
||||||
|
PEFI_HANDLE_PROTOCOL HandleProtocol;
|
||||||
|
PVOID Reserved;
|
||||||
|
PEFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
|
||||||
|
PEFI_LOCATE_HANDLE LocateHandle;
|
||||||
|
PEFI_LOCATE_DEVICE_PATH LocateDevicePath;
|
||||||
|
PEFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
|
||||||
|
PEFI_IMAGE_LOAD LoadImage;
|
||||||
|
PEFI_IMAGE_START StartImage;
|
||||||
|
PEFI_EXIT Exit;
|
||||||
|
PEFI_IMAGE_UNLOAD UnloadImage;
|
||||||
|
PEFI_EXIT_BOOT_SERVICES ExitBootServices;
|
||||||
|
PEFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
|
||||||
|
PEFI_STALL Stall;
|
||||||
|
PEFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
|
||||||
|
PEFI_CONNECT_CONTROLLER ConnectController;
|
||||||
|
PEFI_DISCONNECT_CONTROLLER DisconnectController;
|
||||||
|
PEFI_OPEN_PROTOCOL OpenProtocol;
|
||||||
|
PEFI_CLOSE_PROTOCOL CloseProtocol;
|
||||||
|
PEFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
|
||||||
|
PEFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
|
||||||
|
PEFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
|
||||||
|
PEFI_LOCATE_PROTOCOL LocateProtocol;
|
||||||
|
PEFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
|
||||||
|
PEFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
|
||||||
|
PEFI_CALCULATE_CRC32 CalculateCrc32;
|
||||||
|
PEFI_COPY_MEM CopyMem;
|
||||||
|
PEFI_SET_MEM SetMem;
|
||||||
|
PEFI_CREATE_EVENT_EX CreateEventEx;
|
||||||
|
} EFI_BOOT_SERVICES, *PEFI_BOOT_SERVICES;
|
||||||
|
|
||||||
|
/* EFI Runtime Services Table */
|
||||||
|
typedef struct _EFI_RUNTIME_SERVICES
|
||||||
|
{
|
||||||
|
EFI_TABLE_HEADER Hdr;
|
||||||
|
PEFI_GET_TIME GetTime;
|
||||||
|
PEFI_SET_TIME SetTime;
|
||||||
|
PEFI_GET_WAKEUP_TIME GetWakeupTime;
|
||||||
|
PEFI_SET_WAKEUP_TIME SetWakeupTime;
|
||||||
|
PEFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
|
||||||
|
PEFI_CONVERT_POINTER ConvertPointer;
|
||||||
|
PEFI_GET_VARIABLE GetVariable;
|
||||||
|
PEFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
|
||||||
|
PEFI_SET_VARIABLE SetVariable;
|
||||||
|
PEFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
|
||||||
|
PEFI_RESET_SYSTEM ResetSystem;
|
||||||
|
PEFI_UPDATE_CAPSULE UpdateCapsule;
|
||||||
|
PEFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
|
||||||
|
PEFI_QUERY_VARIABLE_INFO QueryVariableInfo;
|
||||||
|
} EFI_RUNTIME_SERVICES, *PEFI_RUNTIME_SERVICES;
|
||||||
|
|
||||||
|
/* Contains a set of GUID/pointer pairs comprised of the ConfigurationTable field in the EFI System Table */
|
||||||
|
typedef struct _EFI_CONFIGURATION_TABLE
|
||||||
|
{
|
||||||
|
EFI_GUID VendorGuid;
|
||||||
|
PVOID VendorTable;
|
||||||
|
} EFI_CONFIGURATION_TABLE, *PEFI_CONFIGURATION_TABLE;
|
||||||
|
|
||||||
|
/* Simple Text Input protocol from the UEFI 2.0 specification */
|
||||||
|
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL
|
||||||
|
{
|
||||||
|
PEFI_INPUT_RESET Reset;
|
||||||
|
PEFI_INPUT_READ_KEY ReadKeyStroke;
|
||||||
|
EFI_EVENT WaitForKey;
|
||||||
|
} EFI_SIMPLE_TEXT_INPUT_PROTOCOL, *PEFI_SIMPLE_TEXT_INPUT_PROTOCOL;
|
||||||
|
|
||||||
|
/* Simple Text Output protocol from the UEFI 2.0 specification */
|
||||||
|
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
||||||
|
{
|
||||||
|
PEFI_TEXT_RESET Reset;
|
||||||
|
PEFI_TEXT_STRING OutputString;
|
||||||
|
PEFI_TEXT_TEST_STRING TestString;
|
||||||
|
PEFI_TEXT_QUERY_MODE QueryMode;
|
||||||
|
PEFI_TEXT_SET_MODE SetMode;
|
||||||
|
PEFI_TEXT_SET_ATTRIBUTE SetAttribute;
|
||||||
|
PEFI_TEXT_CLEAR_SCREEN ClearScreen;
|
||||||
|
PEFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
|
||||||
|
PEFI_TEXT_ENABLE_CURSOR EnableCursor;
|
||||||
|
PEFI_SIMPLE_TEXT_OUTPUT_MODE Mode;
|
||||||
|
} EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL, *PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
|
||||||
|
|
||||||
|
/* Mode Structure pointed to by Simple Text Out protocol */
|
||||||
|
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_MODE
|
||||||
|
{
|
||||||
|
INT32 MaxMode;
|
||||||
|
INT32 Mode;
|
||||||
|
INT32 Attribute;
|
||||||
|
INT32 CursorColumn;
|
||||||
|
INT32 CursorRow;
|
||||||
|
UCHAR CursorVisible;
|
||||||
|
} EFI_SIMPLE_TEXT_OUTPUT_MODE, *PEFI_SIMPLE_TEXT_OUTPUT_MODE;
|
||||||
|
|
||||||
|
/* The keystroke information for the key that was pressed */
|
||||||
|
typedef struct _EFI_INPUT_KEY
|
||||||
|
{
|
||||||
|
UINT16 ScanCode;
|
||||||
|
UINT16 UnicodeChar;
|
||||||
|
} EFI_INPUT_KEY, *PEFI_INPUT_KEY;
|
||||||
|
|
||||||
|
/* EFI System Table */
|
||||||
|
typedef struct _EFI_SYSTEM_TABLE
|
||||||
|
{
|
||||||
|
EFI_TABLE_HEADER Hdr;
|
||||||
|
PUINT16 FirmwareVendor;
|
||||||
|
UINT32 FirmwareRevision;
|
||||||
|
EFI_HANDLE ConsoleInHandle;
|
||||||
|
PEFI_SIMPLE_TEXT_INPUT_PROTOCOL ConIn;
|
||||||
|
EFI_HANDLE ConsoleOutHandle;
|
||||||
|
PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL ConOut;
|
||||||
|
EFI_HANDLE StandardErrorHandle;
|
||||||
|
PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL StdErr;
|
||||||
|
PEFI_RUNTIME_SERVICES RuntimeServices;
|
||||||
|
PEFI_BOOT_SERVICES BootServices;
|
||||||
|
UINT_PTR NumberOfTableEntries;
|
||||||
|
PEFI_CONFIGURATION_TABLE ConfigurationTable;
|
||||||
|
} EFI_SYSTEM_TABLE, *PEFI_SYSTEM_TABLE;
|
||||||
|
|
||||||
|
#endif /* __XTDK_XTUEFI_H */
|
Loading…
Reference in New Issue
Block a user