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