| /****************************************************************************** |
| * |
| * Name: acefiex.h - Extra OS specific defines, etc. for EFI |
| * |
| *****************************************************************************/ |
| |
| /* |
| * Copyright (C) 2000 - 2016, Intel Corp. |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions, and the following disclaimer, |
| * without modification. |
| * 2. Redistributions in binary form must reproduce at minimum a disclaimer |
| * substantially similar to the "NO WARRANTY" disclaimer below |
| * ("Disclaimer") and any redistribution must be conditioned upon |
| * including a substantially similar Disclaimer requirement for further |
| * binary redistribution. |
| * 3. Neither the names of the above-listed copyright holders nor the names |
| * of any contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * Alternatively, this software may be distributed under the terms of the |
| * GNU General Public License ("GPL") version 2 as published by the Free |
| * Software Foundation. |
| * |
| * NO WARRANTY |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
| * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
| * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| * POSSIBILITY OF SUCH DAMAGES. |
| */ |
| |
| #ifndef __ACEFIEX_H__ |
| #define __ACEFIEX_H__ |
| |
| |
| #define EFI_ERROR(a) (((INTN) a) < 0) |
| #define EFI_SUCCESS 0 |
| #define EFI_LOAD_ERROR EFIERR(1) |
| #define EFI_INVALID_PARAMETER EFIERR(2) |
| #define EFI_UNSUPPORTED EFIERR(3) |
| #define EFI_BAD_BUFFER_SIZE EFIERR(4) |
| #define EFI_BUFFER_TOO_SMALL EFIERR(5) |
| #define EFI_NOT_READY EFIERR(6) |
| #define EFI_DEVICE_ERROR EFIERR(7) |
| #define EFI_WRITE_PROTECTED EFIERR(8) |
| #define EFI_OUT_OF_RESOURCES EFIERR(9) |
| #define EFI_VOLUME_CORRUPTED EFIERR(10) |
| #define EFI_VOLUME_FULL EFIERR(11) |
| #define EFI_NO_MEDIA EFIERR(12) |
| #define EFI_MEDIA_CHANGED EFIERR(13) |
| #define EFI_NOT_FOUND EFIERR(14) |
| #define EFI_ACCESS_DENIED EFIERR(15) |
| #define EFI_NO_RESPONSE EFIERR(16) |
| #define EFI_NO_MAPPING EFIERR(17) |
| #define EFI_TIMEOUT EFIERR(18) |
| #define EFI_NOT_STARTED EFIERR(19) |
| #define EFI_ALREADY_STARTED EFIERR(20) |
| #define EFI_ABORTED EFIERR(21) |
| #define EFI_PROTOCOL_ERROR EFIERR(24) |
| |
| |
| typedef UINTN EFI_STATUS; |
| typedef VOID *EFI_HANDLE; |
| typedef VOID *EFI_EVENT; |
| |
| typedef struct { |
| UINT32 Data1; |
| UINT16 Data2; |
| UINT16 Data3; |
| UINT8 Data4[8]; |
| } EFI_GUID; |
| |
| typedef struct _EFI_DEVICE_PATH { |
| UINT8 Type; |
| UINT8 SubType; |
| UINT8 Length[2]; |
| } EFI_DEVICE_PATH; |
| |
| typedef UINT64 EFI_PHYSICAL_ADDRESS; |
| typedef UINT64 EFI_VIRTUAL_ADDRESS; |
| |
| typedef enum { |
| AllocateAnyPages, |
| AllocateMaxAddress, |
| AllocateAddress, |
| MaxAllocateType |
| } EFI_ALLOCATE_TYPE; |
| |
| typedef enum { |
| EfiReservedMemoryType, |
| EfiLoaderCode, |
| EfiLoaderData, |
| EfiBootServicesCode, |
| EfiBootServicesData, |
| EfiRuntimeServicesCode, |
| EfiRuntimeServicesData, |
| EfiConventionalMemory, |
| EfiUnusableMemory, |
| EfiACPIReclaimMemory, |
| EfiACPIMemoryNVS, |
| EfiMemoryMappedIO, |
| EfiMemoryMappedIOPortSpace, |
| EfiPalCode, |
| EfiMaxMemoryType |
| } EFI_MEMORY_TYPE; |
| |
| /* possible caching types for the memory range */ |
| #define EFI_MEMORY_UC 0x0000000000000001 |
| #define EFI_MEMORY_WC 0x0000000000000002 |
| #define EFI_MEMORY_WT 0x0000000000000004 |
| #define EFI_MEMORY_WB 0x0000000000000008 |
| #define EFI_MEMORY_UCE 0x0000000000000010 |
| |
| /* physical memory protection on range */ |
| #define EFI_MEMORY_WP 0x0000000000001000 |
| #define EFI_MEMORY_RP 0x0000000000002000 |
| #define EFI_MEMORY_XP 0x0000000000004000 |
| |
| /* range requires a runtime mapping */ |
| #define EFI_MEMORY_RUNTIME 0x8000000000000000 |
| |
| #define EFI_MEMORY_DESCRIPTOR_VERSION 1 |
| typedef struct { |
| UINT32 Type; |
| UINT32 Pad; |
| EFI_PHYSICAL_ADDRESS PhysicalStart; |
| EFI_VIRTUAL_ADDRESS VirtualStart; |
| UINT64 NumberOfPages; |
| UINT64 Attribute; |
| } EFI_MEMORY_DESCRIPTOR; |
| |
| typedef struct _EFI_TABLE_HEARDER { |
| UINT64 Signature; |
| UINT32 Revision; |
| UINT32 HeaderSize; |
| UINT32 CRC32; |
| UINT32 Reserved; |
| } EFI_TABLE_HEADER; |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_UNKNOWN_INTERFACE) ( |
| void); |
| |
| |
| /* |
| * Text output protocol |
| */ |
| #define SIMPLE_TEXT_OUTPUT_PROTOCOL \ |
| { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_RESET) ( |
| struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| BOOLEAN ExtendedVerification); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_OUTPUT_STRING) ( |
| struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| CHAR16 *String); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_TEST_STRING) ( |
| struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| CHAR16 *String); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_QUERY_MODE) ( |
| struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| UINTN ModeNumber, |
| UINTN *Columns, |
| UINTN *Rows); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_SET_MODE) ( |
| struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| UINTN ModeNumber); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) ( |
| struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| UINTN Attribute); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_CLEAR_SCREEN) ( |
| struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) ( |
| struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| UINTN Column, |
| UINTN Row); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_ENABLE_CURSOR) ( |
| struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| BOOLEAN Enable); |
| |
| typedef struct { |
| INT32 MaxMode; |
| INT32 Mode; |
| INT32 Attribute; |
| INT32 CursorColumn; |
| INT32 CursorRow; |
| BOOLEAN CursorVisible; |
| } SIMPLE_TEXT_OUTPUT_MODE; |
| |
| typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE { |
| EFI_TEXT_RESET Reset; |
| |
| EFI_TEXT_OUTPUT_STRING OutputString; |
| EFI_TEXT_TEST_STRING TestString; |
| |
| EFI_TEXT_QUERY_MODE QueryMode; |
| EFI_TEXT_SET_MODE SetMode; |
| EFI_TEXT_SET_ATTRIBUTE SetAttribute; |
| |
| EFI_TEXT_CLEAR_SCREEN ClearScreen; |
| EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; |
| EFI_TEXT_ENABLE_CURSOR EnableCursor; |
| |
| SIMPLE_TEXT_OUTPUT_MODE *Mode; |
| } SIMPLE_TEXT_OUTPUT_INTERFACE; |
| |
| /* |
| * Text input protocol |
| */ |
| #define SIMPLE_TEXT_INPUT_PROTOCOL \ |
| { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
| |
| typedef struct { |
| UINT16 ScanCode; |
| CHAR16 UnicodeChar; |
| } EFI_INPUT_KEY; |
| |
| /* |
| * Baseline unicode control chars |
| */ |
| #define CHAR_NULL 0x0000 |
| #define CHAR_BACKSPACE 0x0008 |
| #define CHAR_TAB 0x0009 |
| #define CHAR_LINEFEED 0x000A |
| #define CHAR_CARRIAGE_RETURN 0x000D |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_INPUT_RESET) ( |
| struct _SIMPLE_INPUT_INTERFACE *This, |
| BOOLEAN ExtendedVerification); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_INPUT_READ_KEY) ( |
| struct _SIMPLE_INPUT_INTERFACE *This, |
| EFI_INPUT_KEY *Key); |
| |
| typedef struct _SIMPLE_INPUT_INTERFACE { |
| EFI_INPUT_RESET Reset; |
| EFI_INPUT_READ_KEY ReadKeyStroke; |
| EFI_EVENT WaitForKey; |
| } SIMPLE_INPUT_INTERFACE; |
| |
| |
| /* |
| * Simple file system protocol |
| */ |
| #define SIMPLE_FILE_SYSTEM_PROTOCOL \ |
| { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_VOLUME_OPEN) ( |
| struct _EFI_FILE_IO_INTERFACE *This, |
| struct _EFI_FILE_HANDLE **Root); |
| |
| #define EFI_FILE_IO_INTERFACE_REVISION 0x00010000 |
| |
| typedef struct _EFI_FILE_IO_INTERFACE { |
| UINT64 Revision; |
| EFI_VOLUME_OPEN OpenVolume; |
| } EFI_FILE_IO_INTERFACE; |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_OPEN) ( |
| struct _EFI_FILE_HANDLE *File, |
| struct _EFI_FILE_HANDLE **NewHandle, |
| CHAR16 *FileName, |
| UINT64 OpenMode, |
| UINT64 Attributes); |
| |
| /* Values for OpenMode used above */ |
| |
| #define EFI_FILE_MODE_READ 0x0000000000000001 |
| #define EFI_FILE_MODE_WRITE 0x0000000000000002 |
| #define EFI_FILE_MODE_CREATE 0x8000000000000000 |
| |
| /* Values for Attribute used above */ |
| |
| #define EFI_FILE_READ_ONLY 0x0000000000000001 |
| #define EFI_FILE_HIDDEN 0x0000000000000002 |
| #define EFI_FILE_SYSTEM 0x0000000000000004 |
| #define EFI_FILE_RESERVIED 0x0000000000000008 |
| #define EFI_FILE_DIRECTORY 0x0000000000000010 |
| #define EFI_FILE_ARCHIVE 0x0000000000000020 |
| #define EFI_FILE_VALID_ATTR 0x0000000000000037 |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_CLOSE) ( |
| struct _EFI_FILE_HANDLE *File); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_DELETE) ( |
| struct _EFI_FILE_HANDLE *File); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_READ) ( |
| struct _EFI_FILE_HANDLE *File, |
| UINTN *BufferSize, |
| VOID *Buffer); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_WRITE) ( |
| struct _EFI_FILE_HANDLE *File, |
| UINTN *BufferSize, |
| VOID *Buffer); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_SET_POSITION) ( |
| struct _EFI_FILE_HANDLE *File, |
| UINT64 Position); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_GET_POSITION) ( |
| struct _EFI_FILE_HANDLE *File, |
| UINT64 *Position); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_GET_INFO) ( |
| struct _EFI_FILE_HANDLE *File, |
| EFI_GUID *InformationType, |
| UINTN *BufferSize, |
| VOID *Buffer); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_SET_INFO) ( |
| struct _EFI_FILE_HANDLE *File, |
| EFI_GUID *InformationType, |
| UINTN BufferSize, |
| VOID *Buffer); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FILE_FLUSH) ( |
| struct _EFI_FILE_HANDLE *File); |
| |
| |
| #define EFI_FILE_HANDLE_REVISION 0x00010000 |
| |
| typedef struct _EFI_FILE_HANDLE { |
| UINT64 Revision; |
| EFI_FILE_OPEN Open; |
| EFI_FILE_CLOSE Close; |
| EFI_FILE_DELETE Delete; |
| EFI_FILE_READ Read; |
| EFI_FILE_WRITE Write; |
| EFI_FILE_GET_POSITION GetPosition; |
| EFI_FILE_SET_POSITION SetPosition; |
| EFI_FILE_GET_INFO GetInfo; |
| EFI_FILE_SET_INFO SetInfo; |
| EFI_FILE_FLUSH Flush; |
| } EFI_FILE, *EFI_FILE_HANDLE; |
| |
| |
| /* |
| * Loaded image protocol |
| */ |
| #define LOADED_IMAGE_PROTOCOL \ |
| { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} } |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_IMAGE_ENTRY_POINT) ( |
| EFI_HANDLE ImageHandle, |
| struct _EFI_SYSTEM_TABLE *SystemTable); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_IMAGE_LOAD) ( |
| BOOLEAN BootPolicy, |
| EFI_HANDLE ParentImageHandle, |
| EFI_DEVICE_PATH *FilePath, |
| VOID *SourceBuffer, |
| UINTN SourceSize, |
| EFI_HANDLE *ImageHandle); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_IMAGE_START) ( |
| EFI_HANDLE ImageHandle, |
| UINTN *ExitDataSize, |
| CHAR16 **ExitData); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_EXIT) ( |
| EFI_HANDLE ImageHandle, |
| EFI_STATUS ExitStatus, |
| UINTN ExitDataSize, |
| CHAR16 *ExitData); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_IMAGE_UNLOAD) ( |
| EFI_HANDLE ImageHandle); |
| |
| |
| #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 Memory |
| */ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_ALLOCATE_PAGES) ( |
| EFI_ALLOCATE_TYPE Type, |
| EFI_MEMORY_TYPE MemoryType, |
| UINTN NoPages, |
| EFI_PHYSICAL_ADDRESS *Memory); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FREE_PAGES) ( |
| EFI_PHYSICAL_ADDRESS Memory, |
| UINTN NoPages); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_GET_MEMORY_MAP) ( |
| UINTN *MemoryMapSize, |
| EFI_MEMORY_DESCRIPTOR *MemoryMap, |
| UINTN *MapKey, |
| UINTN *DescriptorSize, |
| UINT32 *DescriptorVersion); |
| |
| #define NextMemoryDescriptor(Ptr,Size) ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size)) |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_ALLOCATE_POOL) ( |
| EFI_MEMORY_TYPE PoolType, |
| UINTN Size, |
| VOID **Buffer); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FREE_POOL) ( |
| VOID *Buffer); |
| |
| |
| /* |
| * Protocol handler functions |
| */ |
| typedef enum { |
| EFI_NATIVE_INTERFACE, |
| EFI_PCODE_INTERFACE |
| } EFI_INTERFACE_TYPE; |
| |
| typedef enum { |
| AllHandles, |
| ByRegisterNotify, |
| ByProtocol |
| } EFI_LOCATE_SEARCH_TYPE; |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) ( |
| EFI_HANDLE *Handle, |
| EFI_GUID *Protocol, |
| EFI_INTERFACE_TYPE InterfaceType, |
| VOID *Interface); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) ( |
| EFI_HANDLE Handle, |
| EFI_GUID *Protocol, |
| VOID *OldInterface, |
| VOID *NewInterface); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) ( |
| EFI_HANDLE Handle, |
| EFI_GUID *Protocol, |
| VOID *Interface); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_HANDLE_PROTOCOL) ( |
| EFI_HANDLE Handle, |
| EFI_GUID *Protocol, |
| VOID **Interface); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) ( |
| EFI_GUID *Protocol, |
| EFI_EVENT Event, |
| VOID **Registration); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_LOCATE_HANDLE) ( |
| EFI_LOCATE_SEARCH_TYPE SearchType, |
| EFI_GUID *Protocol, |
| VOID *SearchKey, |
| UINTN *BufferSize, |
| EFI_HANDLE *Buffer); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_LOCATE_DEVICE_PATH) ( |
| EFI_GUID *Protocol, |
| EFI_DEVICE_PATH **DevicePath, |
| EFI_HANDLE *Device); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) ( |
| EFI_GUID *Guid, |
| VOID *Table); |
| |
| #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_OPEN_PROTOCOL) ( |
| EFI_HANDLE Handle, |
| EFI_GUID *Protocol, |
| VOID **Interface, |
| EFI_HANDLE AgentHandle, |
| EFI_HANDLE ControllerHandle, |
| UINT32 Attributes); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_CLOSE_PROTOCOL) ( |
| EFI_HANDLE Handle, |
| EFI_GUID *Protocol, |
| EFI_HANDLE AgentHandle, |
| EFI_HANDLE ControllerHandle); |
| |
| typedef struct { |
| EFI_HANDLE AgentHandle; |
| EFI_HANDLE ControllerHandle; |
| UINT32 Attributes; |
| UINT32 OpenCount; |
| } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY; |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) ( |
| EFI_HANDLE Handle, |
| EFI_GUID *Protocol, |
| EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, |
| UINTN *EntryCount); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) ( |
| EFI_HANDLE Handle, |
| EFI_GUID ***ProtocolBuffer, |
| UINTN *ProtocolBufferCount); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) ( |
| EFI_LOCATE_SEARCH_TYPE SearchType, |
| EFI_GUID *Protocol, |
| VOID *SearchKey, |
| UINTN *NoHandles, |
| EFI_HANDLE **Buffer); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_LOCATE_PROTOCOL) ( |
| EFI_GUID *Protocol, |
| VOID *Registration, |
| VOID **Interface); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( |
| EFI_HANDLE *Handle, |
| ...); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( |
| EFI_HANDLE Handle, |
| ...); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_CALCULATE_CRC32) ( |
| VOID *Data, |
| UINTN DataSize, |
| UINT32 *Crc32); |
| |
| typedef |
| VOID |
| (EFIAPI *EFI_COPY_MEM) ( |
| VOID *Destination, |
| VOID *Source, |
| UINTN Length); |
| |
| typedef |
| VOID |
| (EFIAPI *EFI_SET_MEM) ( |
| VOID *Buffer, |
| UINTN Size, |
| UINT8 Value); |
| |
| /* |
| * 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; |
| |
| #if 0 |
| EFI_RAISE_TPL RaiseTPL; |
| EFI_RESTORE_TPL RestoreTPL; |
| #else |
| EFI_UNKNOWN_INTERFACE RaiseTPL; |
| EFI_UNKNOWN_INTERFACE RestoreTPL; |
| #endif |
| |
| EFI_ALLOCATE_PAGES AllocatePages; |
| EFI_FREE_PAGES FreePages; |
| EFI_GET_MEMORY_MAP GetMemoryMap; |
| EFI_ALLOCATE_POOL AllocatePool; |
| EFI_FREE_POOL FreePool; |
| |
| #if 0 |
| 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; |
| #else |
| EFI_UNKNOWN_INTERFACE CreateEvent; |
| EFI_UNKNOWN_INTERFACE SetTimer; |
| EFI_UNKNOWN_INTERFACE WaitForEvent; |
| EFI_UNKNOWN_INTERFACE SignalEvent; |
| EFI_UNKNOWN_INTERFACE CloseEvent; |
| EFI_UNKNOWN_INTERFACE CheckEvent; |
| #endif |
| |
| 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; |
| |
| EFI_IMAGE_LOAD LoadImage; |
| EFI_IMAGE_START StartImage; |
| EFI_EXIT Exit; |
| EFI_IMAGE_UNLOAD UnloadImage; |
| |
| #if 0 |
| EFI_EXIT_BOOT_SERVICES ExitBootServices; |
| EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; |
| EFI_STALL Stall; |
| EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; |
| #else |
| EFI_UNKNOWN_INTERFACE ExitBootServices; |
| EFI_UNKNOWN_INTERFACE GetNextMonotonicCount; |
| EFI_UNKNOWN_INTERFACE Stall; |
| EFI_UNKNOWN_INTERFACE SetWatchdogTimer; |
| #endif |
| |
| #if 0 |
| EFI_CONNECT_CONTROLLER ConnectController; |
| EFI_DISCONNECT_CONTROLLER DisconnectController; |
| #else |
| EFI_UNKNOWN_INTERFACE ConnectController; |
| EFI_UNKNOWN_INTERFACE DisconnectController; |
| #endif |
| |
| EFI_OPEN_PROTOCOL OpenProtocol; |
| EFI_CLOSE_PROTOCOL CloseProtocol; |
| EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation; |
| EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle; |
| EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer; |
| EFI_LOCATE_PROTOCOL LocateProtocol; |
| EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces; |
| EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces; |
| |
| EFI_CALCULATE_CRC32 CalculateCrc32; |
| |
| EFI_COPY_MEM CopyMem; |
| EFI_SET_MEM SetMem; |
| |
| #if 0 |
| EFI_CREATE_EVENT_EX CreateEventEx; |
| #else |
| EFI_UNKNOWN_INTERFACE CreateEventEx; |
| #endif |
| } EFI_BOOT_SERVICES; |
| |
| |
| /* |
| * EFI System Table |
| */ |
| |
| /* |
| * EFI Configuration Table and GUID definitions |
| */ |
| #define ACPI_TABLE_GUID \ |
| { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } |
| #define ACPI_20_TABLE_GUID \ |
| { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} } |
| |
| typedef struct _EFI_CONFIGURATION_TABLE { |
| EFI_GUID VendorGuid; |
| VOID *VendorTable; |
| } EFI_CONFIGURATION_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; |
| |
| #if 0 |
| EFI_RUNTIME_SERVICES *RuntimeServices; |
| #else |
| EFI_HANDLE *RuntimeServices; |
| #endif |
| EFI_BOOT_SERVICES *BootServices; |
| |
| UINTN NumberOfTableEntries; |
| EFI_CONFIGURATION_TABLE *ConfigurationTable; |
| |
| } EFI_SYSTEM_TABLE; |
| |
| |
| /* GNU EFI definitions */ |
| |
| #if defined(_GNU_EFI) |
| |
| /* |
| * This is needed to hide platform specific code from ACPICA |
| */ |
| UINT64 |
| DivU64x32 ( |
| UINT64 Dividend, |
| UINTN Divisor, |
| UINTN *Remainder); |
| |
| /* |
| * EFI specific prototypes |
| */ |
| EFI_STATUS |
| efi_main ( |
| EFI_HANDLE Image, |
| EFI_SYSTEM_TABLE *SystemTab); |
| |
| int |
| acpi_main ( |
| int argc, |
| char *argv[]); |
| |
| |
| #endif |
| |
| extern EFI_GUID AcpiGbl_LoadedImageProtocol; |
| extern EFI_GUID AcpiGbl_TextInProtocol; |
| extern EFI_GUID AcpiGbl_TextOutProtocol; |
| extern EFI_GUID AcpiGbl_FileSystemProtocol; |
| |
| #endif /* __ACEFIEX_H__ */ |