Copy needed include files from EDK2. This is a minimal set gleened
from the .depend files after the build: cp -r ../vendor/edk2/MdePkg/Include sys/contrib/edk2 cd lib/libefivar make pushd `make -V .OBJDIR` cat .depend*.o | grep sys/contrib | cut -d' ' -f 3 | sort -u | sed -e 's=/full/path/sys/contrib/edk2/==' > /tmp/xxx popd cd ../../sys/contrib/edk2 rm -rf Include for i in `cat /tmp/xxx`; do svn cp svn+ssh://repo.freebsd.org/base/vendor/edk2/dist/MdePkg/$i $i done svn cp svn+ssh://repo.freebsd.org/base/vendor/edk2/dist/MdePkg/MdePkg.dec . The original EDK2 repo is ~265MB, the MdePkg is ~23MB, all MdePkg/Includes is ~7MB and this minimal set is ~1.3MB. Sponsored by: Netflix
This commit is contained in:
commit
0d1ba6657e
1270
sys/contrib/edk2/Include/Base.h
Normal file
1270
sys/contrib/edk2/Include/Base.h
Normal file
File diff suppressed because it is too large
Load Diff
25
sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h
Normal file
25
sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h
Normal file
@ -0,0 +1,25 @@
|
||||
/** @file
|
||||
Guid used to identify HII FormMap configuration method.
|
||||
|
||||
Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
@par Revision Reference:
|
||||
GUID defined in UEFI 2.2 spec.
|
||||
**/
|
||||
|
||||
#ifndef __EFI_HII_FORMMAP_GUID_H__
|
||||
#define __EFI_HII_FORMMAP_GUID_H__
|
||||
|
||||
#define EFI_HII_STANDARD_FORM_GUID \
|
||||
{ 0x3bd2f4ec, 0xe524, 0x46e4, { 0xa9, 0xd8, 0x51, 0x1, 0x17, 0x42, 0x55, 0x62 } }
|
||||
|
||||
extern EFI_GUID gEfiHiiStandardFormGuid;
|
||||
|
||||
#endif
|
58
sys/contrib/edk2/Include/Guid/PcAnsi.h
Normal file
58
sys/contrib/edk2/Include/Guid/PcAnsi.h
Normal file
@ -0,0 +1,58 @@
|
||||
/** @file
|
||||
Terminal Device Path Vendor Guid.
|
||||
|
||||
Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
@par Revision Reference:
|
||||
GUIDs defined in UEFI 2.0 spec.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PC_ANSI_H__
|
||||
#define __PC_ANSI_H__
|
||||
|
||||
#define EFI_PC_ANSI_GUID \
|
||||
{ \
|
||||
0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
||||
}
|
||||
|
||||
#define EFI_VT_100_GUID \
|
||||
{ \
|
||||
0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
||||
}
|
||||
|
||||
#define EFI_VT_100_PLUS_GUID \
|
||||
{ \
|
||||
0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43 } \
|
||||
}
|
||||
|
||||
#define EFI_VT_UTF8_GUID \
|
||||
{ \
|
||||
0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88 } \
|
||||
}
|
||||
|
||||
#define DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL \
|
||||
{ \
|
||||
0x37499a9d, 0x542f, 0x4c89, {0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 0xe4 } \
|
||||
}
|
||||
|
||||
#define EFI_SAS_DEVICE_PATH_GUID \
|
||||
{ \
|
||||
0xd487ddb4, 0x008b, 0x11d9, {0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d } \
|
||||
}
|
||||
|
||||
extern EFI_GUID gEfiPcAnsiGuid;
|
||||
extern EFI_GUID gEfiVT100Guid;
|
||||
extern EFI_GUID gEfiVT100PlusGuid;
|
||||
extern EFI_GUID gEfiVTUTF8Guid;
|
||||
extern EFI_GUID gEfiUartDevicePathGuid;
|
||||
extern EFI_GUID gEfiSasDevicePathGuid;
|
||||
|
||||
#endif
|
128
sys/contrib/edk2/Include/Guid/WinCertificate.h
Normal file
128
sys/contrib/edk2/Include/Guid/WinCertificate.h
Normal file
@ -0,0 +1,128 @@
|
||||
/** @file
|
||||
GUID for UEFI WIN_CERTIFICATE structure.
|
||||
|
||||
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
@par Revision Reference:
|
||||
GUID defined in UEFI 2.0 spec.
|
||||
**/
|
||||
|
||||
#ifndef __EFI_WIN_CERTIFICATE_H__
|
||||
#define __EFI_WIN_CERTIFICATE_H__
|
||||
|
||||
//
|
||||
// _WIN_CERTIFICATE.wCertificateType
|
||||
//
|
||||
#define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002
|
||||
#define WIN_CERT_TYPE_EFI_PKCS115 0x0EF0
|
||||
#define WIN_CERT_TYPE_EFI_GUID 0x0EF1
|
||||
|
||||
///
|
||||
/// The WIN_CERTIFICATE structure is part of the PE/COFF specification.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The length of the entire certificate,
|
||||
/// including the length of the header, in bytes.
|
||||
///
|
||||
UINT32 dwLength;
|
||||
///
|
||||
/// The revision level of the WIN_CERTIFICATE
|
||||
/// structure. The current revision level is 0x0200.
|
||||
///
|
||||
UINT16 wRevision;
|
||||
///
|
||||
/// The certificate type. See WIN_CERT_TYPE_xxx for the UEFI
|
||||
/// certificate types. The UEFI specification reserves the range of
|
||||
/// certificate type values from 0x0EF0 to 0x0EFF.
|
||||
///
|
||||
UINT16 wCertificateType;
|
||||
///
|
||||
/// The following is the actual certificate. The format of
|
||||
/// the certificate depends on wCertificateType.
|
||||
///
|
||||
/// UINT8 bCertificate[ANYSIZE_ARRAY];
|
||||
///
|
||||
} WIN_CERTIFICATE;
|
||||
|
||||
///
|
||||
/// WIN_CERTIFICATE_UEFI_GUID.CertType
|
||||
///
|
||||
#define EFI_CERT_TYPE_RSA2048_SHA256_GUID \
|
||||
{0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf } }
|
||||
|
||||
///
|
||||
/// WIN_CERTIFICATE_UEFI_GUID.CertData
|
||||
///
|
||||
typedef struct {
|
||||
EFI_GUID HashType;
|
||||
UINT8 PublicKey[256];
|
||||
UINT8 Signature[256];
|
||||
} EFI_CERT_BLOCK_RSA_2048_SHA256;
|
||||
|
||||
|
||||
///
|
||||
/// Certificate which encapsulates a GUID-specific digital signature
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// This is the standard WIN_CERTIFICATE header, where
|
||||
/// wCertificateType is set to WIN_CERT_TYPE_EFI_GUID.
|
||||
///
|
||||
WIN_CERTIFICATE Hdr;
|
||||
///
|
||||
/// This is the unique id which determines the
|
||||
/// format of the CertData. .
|
||||
///
|
||||
EFI_GUID CertType;
|
||||
///
|
||||
/// The following is the certificate data. The format of
|
||||
/// the data is determined by the CertType.
|
||||
/// If CertType is EFI_CERT_TYPE_RSA2048_SHA256_GUID,
|
||||
/// the CertData will be EFI_CERT_BLOCK_RSA_2048_SHA256 structure.
|
||||
///
|
||||
UINT8 CertData[1];
|
||||
} WIN_CERTIFICATE_UEFI_GUID;
|
||||
|
||||
|
||||
///
|
||||
/// Certificate which encapsulates the RSASSA_PKCS1-v1_5 digital signature.
|
||||
///
|
||||
/// The WIN_CERTIFICATE_UEFI_PKCS1_15 structure is derived from
|
||||
/// WIN_CERTIFICATE and encapsulate the information needed to
|
||||
/// implement the RSASSA-PKCS1-v1_5 digital signature algorithm as
|
||||
/// specified in RFC2437.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// This is the standard WIN_CERTIFICATE header, where
|
||||
/// wCertificateType is set to WIN_CERT_TYPE_UEFI_PKCS1_15.
|
||||
///
|
||||
WIN_CERTIFICATE Hdr;
|
||||
///
|
||||
/// This is the hashing algorithm which was performed on the
|
||||
/// UEFI executable when creating the digital signature.
|
||||
///
|
||||
EFI_GUID HashAlgorithm;
|
||||
///
|
||||
/// The following is the actual digital signature. The
|
||||
/// size of the signature is the same size as the key
|
||||
/// (1024-bit key is 128 bytes) and can be determined by
|
||||
/// subtracting the length of the other parts of this header
|
||||
/// from the total length of the certificate as found in
|
||||
/// Hdr.dwLength.
|
||||
///
|
||||
/// UINT8 Signature[];
|
||||
///
|
||||
} WIN_CERTIFICATE_EFI_PKCS1_15;
|
||||
|
||||
extern EFI_GUID gEfiCertTypeRsa2048Sha256Guid;
|
||||
|
||||
#endif
|
661
sys/contrib/edk2/Include/IndustryStandard/Acpi10.h
Normal file
661
sys/contrib/edk2/Include/IndustryStandard/Acpi10.h
Normal file
@ -0,0 +1,661 @@
|
||||
/** @file
|
||||
ACPI 1.0b definitions from the ACPI Specification, revision 1.0b
|
||||
|
||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
**/
|
||||
|
||||
#ifndef _ACPI_1_0_H_
|
||||
#define _ACPI_1_0_H_
|
||||
|
||||
#include <IndustryStandard/AcpiAml.h>
|
||||
|
||||
///
|
||||
/// Common table header, this prefaces all ACPI tables, including FACS, but
|
||||
/// excluding the RSD PTR structure.
|
||||
///
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Length;
|
||||
} EFI_ACPI_COMMON_HEADER;
|
||||
|
||||
#pragma pack(1)
|
||||
///
|
||||
/// The common ACPI description table header. This structure prefaces most ACPI tables.
|
||||
///
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Length;
|
||||
UINT8 Revision;
|
||||
UINT8 Checksum;
|
||||
UINT8 OemId[6];
|
||||
UINT64 OemTableId;
|
||||
UINT32 OemRevision;
|
||||
UINT32 CreatorId;
|
||||
UINT32 CreatorRevision;
|
||||
} EFI_ACPI_DESCRIPTION_HEADER;
|
||||
#pragma pack()
|
||||
|
||||
//
|
||||
// Define for Desriptor
|
||||
//
|
||||
#define ACPI_SMALL_ITEM_FLAG 0x00
|
||||
#define ACPI_LARGE_ITEM_FLAG 0x01
|
||||
|
||||
//
|
||||
// Small Item Descriptor Name
|
||||
//
|
||||
#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME 0x04
|
||||
#define ACPI_SMALL_DMA_DESCRIPTOR_NAME 0x05
|
||||
#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME 0x06
|
||||
#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME 0x07
|
||||
#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME 0x08
|
||||
#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME 0x09
|
||||
#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME 0x0E
|
||||
#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME 0x0F
|
||||
|
||||
//
|
||||
// Large Item Descriptor Name
|
||||
//
|
||||
#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x01
|
||||
#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME 0x04
|
||||
#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x05
|
||||
#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06
|
||||
#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x07
|
||||
#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x08
|
||||
#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME 0x09
|
||||
#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0A
|
||||
|
||||
//
|
||||
// Small Item Descriptor Value
|
||||
//
|
||||
#define ACPI_IRQ_NOFLAG_DESCRIPTOR 0x22
|
||||
#define ACPI_IRQ_DESCRIPTOR 0x23
|
||||
#define ACPI_DMA_DESCRIPTOR 0x2A
|
||||
#define ACPI_START_DEPENDENT_DESCRIPTOR 0x30
|
||||
#define ACPI_START_DEPENDENT_EX_DESCRIPTOR 0x31
|
||||
#define ACPI_END_DEPENDENT_DESCRIPTOR 0x38
|
||||
#define ACPI_IO_PORT_DESCRIPTOR 0x47
|
||||
#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR 0x4B
|
||||
#define ACPI_END_TAG_DESCRIPTOR 0x79
|
||||
|
||||
//
|
||||
// Large Item Descriptor Value
|
||||
//
|
||||
#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR 0x81
|
||||
#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR 0x85
|
||||
#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86
|
||||
#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR 0x87
|
||||
#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR 0x88
|
||||
#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR 0x89
|
||||
#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR 0x8A
|
||||
#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A
|
||||
|
||||
//
|
||||
// Resource Type
|
||||
//
|
||||
#define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00
|
||||
#define ACPI_ADDRESS_SPACE_TYPE_IO 0x01
|
||||
#define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02
|
||||
|
||||
///
|
||||
/// Power Management Timer frequency is fixed at 3.579545MHz.
|
||||
///
|
||||
#define ACPI_TIMER_FREQUENCY 3579545
|
||||
|
||||
//
|
||||
// Ensure proper structure formats
|
||||
//
|
||||
#pragma pack(1)
|
||||
|
||||
///
|
||||
/// The commond definition of QWORD, DWORD, and WORD
|
||||
/// Address Space Descriptors.
|
||||
///
|
||||
typedef PACKED struct {
|
||||
UINT8 Desc;
|
||||
UINT16 Len;
|
||||
UINT8 ResType;
|
||||
UINT8 GenFlag;
|
||||
UINT8 SpecificFlag;
|
||||
UINT64 AddrSpaceGranularity;
|
||||
UINT64 AddrRangeMin;
|
||||
UINT64 AddrRangeMax;
|
||||
UINT64 AddrTranslationOffset;
|
||||
UINT64 AddrLen;
|
||||
} EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;
|
||||
|
||||
typedef PACKED union {
|
||||
UINT8 Byte;
|
||||
PACKED struct {
|
||||
UINT8 Length : 3;
|
||||
UINT8 Name : 4;
|
||||
UINT8 Type : 1;
|
||||
} Bits;
|
||||
} ACPI_SMALL_RESOURCE_HEADER;
|
||||
|
||||
typedef PACKED struct {
|
||||
PACKED union {
|
||||
UINT8 Byte;
|
||||
PACKED struct {
|
||||
UINT8 Name : 7;
|
||||
UINT8 Type : 1;
|
||||
}Bits;
|
||||
} Header;
|
||||
UINT16 Length;
|
||||
} ACPI_LARGE_RESOURCE_HEADER;
|
||||
|
||||
///
|
||||
/// IRQ Descriptor.
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_SMALL_RESOURCE_HEADER Header;
|
||||
UINT16 Mask;
|
||||
} EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// IRQ Descriptor.
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_SMALL_RESOURCE_HEADER Header;
|
||||
UINT16 Mask;
|
||||
UINT8 Information;
|
||||
} EFI_ACPI_IRQ_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// DMA Descriptor.
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_SMALL_RESOURCE_HEADER Header;
|
||||
UINT8 ChannelMask;
|
||||
UINT8 Information;
|
||||
} EFI_ACPI_DMA_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// I/O Port Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_SMALL_RESOURCE_HEADER Header;
|
||||
UINT8 Information;
|
||||
UINT16 BaseAddressMin;
|
||||
UINT16 BaseAddressMax;
|
||||
UINT8 Alignment;
|
||||
UINT8 Length;
|
||||
} EFI_ACPI_IO_PORT_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// Fixed Location I/O Port Descriptor.
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_SMALL_RESOURCE_HEADER Header;
|
||||
UINT16 BaseAddress;
|
||||
UINT8 Length;
|
||||
} EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// 24-Bit Memory Range Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_LARGE_RESOURCE_HEADER Header;
|
||||
UINT8 Information;
|
||||
UINT16 BaseAddressMin;
|
||||
UINT16 BaseAddressMax;
|
||||
UINT16 Alignment;
|
||||
UINT16 Length;
|
||||
} EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// 32-Bit Memory Range Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_LARGE_RESOURCE_HEADER Header;
|
||||
UINT8 Information;
|
||||
UINT32 BaseAddressMin;
|
||||
UINT32 BaseAddressMax;
|
||||
UINT32 Alignment;
|
||||
UINT32 Length;
|
||||
} EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// Fixed 32-Bit Fixed Memory Range Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_LARGE_RESOURCE_HEADER Header;
|
||||
UINT8 Information;
|
||||
UINT32 BaseAddress;
|
||||
UINT32 Length;
|
||||
} EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// QWORD Address Space Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_LARGE_RESOURCE_HEADER Header;
|
||||
UINT8 ResType;
|
||||
UINT8 GenFlag;
|
||||
UINT8 SpecificFlag;
|
||||
UINT64 AddrSpaceGranularity;
|
||||
UINT64 AddrRangeMin;
|
||||
UINT64 AddrRangeMax;
|
||||
UINT64 AddrTranslationOffset;
|
||||
UINT64 AddrLen;
|
||||
} EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// DWORD Address Space Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_LARGE_RESOURCE_HEADER Header;
|
||||
UINT8 ResType;
|
||||
UINT8 GenFlag;
|
||||
UINT8 SpecificFlag;
|
||||
UINT32 AddrSpaceGranularity;
|
||||
UINT32 AddrRangeMin;
|
||||
UINT32 AddrRangeMax;
|
||||
UINT32 AddrTranslationOffset;
|
||||
UINT32 AddrLen;
|
||||
} EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// WORD Address Space Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_LARGE_RESOURCE_HEADER Header;
|
||||
UINT8 ResType;
|
||||
UINT8 GenFlag;
|
||||
UINT8 SpecificFlag;
|
||||
UINT16 AddrSpaceGranularity;
|
||||
UINT16 AddrRangeMin;
|
||||
UINT16 AddrRangeMax;
|
||||
UINT16 AddrTranslationOffset;
|
||||
UINT16 AddrLen;
|
||||
} EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR;
|
||||
|
||||
///
|
||||
/// Extended Interrupt Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_LARGE_RESOURCE_HEADER Header;
|
||||
UINT8 InterruptVectorFlags;
|
||||
UINT8 InterruptTableLength;
|
||||
UINT32 InterruptNumber[1];
|
||||
} EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
///
|
||||
/// The End tag identifies an end of resource data.
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Desc;
|
||||
UINT8 Checksum;
|
||||
} EFI_ACPI_END_TAG_DESCRIPTOR;
|
||||
|
||||
//
|
||||
// General use definitions
|
||||
//
|
||||
#define EFI_ACPI_RESERVED_BYTE 0x00
|
||||
#define EFI_ACPI_RESERVED_WORD 0x0000
|
||||
#define EFI_ACPI_RESERVED_DWORD 0x00000000
|
||||
#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000
|
||||
|
||||
//
|
||||
// Resource Type Specific Flags
|
||||
// Ref ACPI specification 6.4.3.5.5
|
||||
//
|
||||
// Bit [0] : Write Status, _RW
|
||||
//
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0)
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0)
|
||||
//
|
||||
// Bit [2:1] : Memory Attributes, _MEM
|
||||
//
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1)
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1)
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1)
|
||||
//
|
||||
// Bit [4:3] : Memory Attributes, _MTP
|
||||
//
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3)
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3)
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3)
|
||||
#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3)
|
||||
//
|
||||
// Bit [5] : Memory to I/O Translation, _TTP
|
||||
//
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5)
|
||||
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5)
|
||||
|
||||
//
|
||||
// IRQ Information
|
||||
// Ref ACPI specification 6.4.2.1
|
||||
//
|
||||
#define EFI_ACPI_IRQ_SHARABLE_MASK 0x10
|
||||
#define EFI_ACPI_IRQ_SHARABLE 0x10
|
||||
|
||||
#define EFI_ACPI_IRQ_POLARITY_MASK 0x08
|
||||
#define EFI_ACPI_IRQ_HIGH_TRUE 0x00
|
||||
#define EFI_ACPI_IRQ_LOW_FALSE 0x08
|
||||
|
||||
#define EFI_ACPI_IRQ_MODE 0x01
|
||||
#define EFI_ACPI_IRQ_LEVEL_TRIGGERED 0x00
|
||||
#define EFI_ACPI_IRQ_EDGE_TRIGGERED 0x01
|
||||
|
||||
//
|
||||
// DMA Information
|
||||
// Ref ACPI specification 6.4.2.2
|
||||
//
|
||||
#define EFI_ACPI_DMA_SPEED_TYPE_MASK 0x60
|
||||
#define EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00
|
||||
#define EFI_ACPI_DMA_SPEED_TYPE_A 0x20
|
||||
#define EFI_ACPI_DMA_SPEED_TYPE_B 0x40
|
||||
#define EFI_ACPI_DMA_SPEED_TYPE_F 0x60
|
||||
|
||||
#define EFI_ACPI_DMA_BUS_MASTER_MASK 0x04
|
||||
#define EFI_ACPI_DMA_BUS_MASTER 0x04
|
||||
|
||||
#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK 0x03
|
||||
#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x00
|
||||
#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x01
|
||||
#define EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x10
|
||||
|
||||
//
|
||||
// IO Information
|
||||
// Ref ACPI specification 6.4.2.5
|
||||
//
|
||||
#define EFI_ACPI_IO_DECODE_MASK 0x01
|
||||
#define EFI_ACPI_IO_DECODE_16_BIT 0x01
|
||||
#define EFI_ACPI_IO_DECODE_10_BIT 0x00
|
||||
|
||||
//
|
||||
// Memory Information
|
||||
// Ref ACPI specification 6.4.3.4
|
||||
//
|
||||
#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK 0x01
|
||||
#define EFI_ACPI_MEMORY_WRITABLE 0x01
|
||||
#define EFI_ACPI_MEMORY_NON_WRITABLE 0x00
|
||||
|
||||
//
|
||||
// Ensure proper structure formats
|
||||
//
|
||||
#pragma pack(1)
|
||||
//
|
||||
// ACPI 1.0b table structures
|
||||
//
|
||||
|
||||
///
|
||||
/// Root System Description Pointer Structure.
|
||||
///
|
||||
typedef struct {
|
||||
UINT64 Signature;
|
||||
UINT8 Checksum;
|
||||
UINT8 OemId[6];
|
||||
UINT8 Reserved;
|
||||
UINT32 RsdtAddress;
|
||||
} EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
|
||||
|
||||
//
|
||||
// Root System Description Table
|
||||
// No definition needed as it is a common description table header, the same with
|
||||
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
|
||||
//
|
||||
|
||||
///
|
||||
/// RSDT Revision (as defined in ACPI 1.0b specification).
|
||||
///
|
||||
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
///
|
||||
/// Fixed ACPI Description Table Structure (FADT).
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 FirmwareCtrl;
|
||||
UINT32 Dsdt;
|
||||
UINT8 IntModel;
|
||||
UINT8 Reserved1;
|
||||
UINT16 SciInt;
|
||||
UINT32 SmiCmd;
|
||||
UINT8 AcpiEnable;
|
||||
UINT8 AcpiDisable;
|
||||
UINT8 S4BiosReq;
|
||||
UINT8 Reserved2;
|
||||
UINT32 Pm1aEvtBlk;
|
||||
UINT32 Pm1bEvtBlk;
|
||||
UINT32 Pm1aCntBlk;
|
||||
UINT32 Pm1bCntBlk;
|
||||
UINT32 Pm2CntBlk;
|
||||
UINT32 PmTmrBlk;
|
||||
UINT32 Gpe0Blk;
|
||||
UINT32 Gpe1Blk;
|
||||
UINT8 Pm1EvtLen;
|
||||
UINT8 Pm1CntLen;
|
||||
UINT8 Pm2CntLen;
|
||||
UINT8 PmTmLen;
|
||||
UINT8 Gpe0BlkLen;
|
||||
UINT8 Gpe1BlkLen;
|
||||
UINT8 Gpe1Base;
|
||||
UINT8 Reserved3;
|
||||
UINT16 PLvl2Lat;
|
||||
UINT16 PLvl3Lat;
|
||||
UINT16 FlushSize;
|
||||
UINT16 FlushStride;
|
||||
UINT8 DutyOffset;
|
||||
UINT8 DutyWidth;
|
||||
UINT8 DayAlrm;
|
||||
UINT8 MonAlrm;
|
||||
UINT8 Century;
|
||||
UINT8 Reserved4;
|
||||
UINT8 Reserved5;
|
||||
UINT8 Reserved6;
|
||||
UINT32 Flags;
|
||||
} EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;
|
||||
|
||||
///
|
||||
/// FADT Version (as defined in ACPI 1.0b specification).
|
||||
///
|
||||
#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC 0
|
||||
#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC 1
|
||||
|
||||
//
|
||||
// Fixed ACPI Description Table Fixed Feature Flags
|
||||
// All other bits are reserved and must be set to 0.
|
||||
//
|
||||
#define EFI_ACPI_1_0_WBINVD BIT0
|
||||
#define EFI_ACPI_1_0_WBINVD_FLUSH BIT1
|
||||
#define EFI_ACPI_1_0_PROC_C1 BIT2
|
||||
#define EFI_ACPI_1_0_P_LVL2_UP BIT3
|
||||
#define EFI_ACPI_1_0_PWR_BUTTON BIT4
|
||||
#define EFI_ACPI_1_0_SLP_BUTTON BIT5
|
||||
#define EFI_ACPI_1_0_FIX_RTC BIT6
|
||||
#define EFI_ACPI_1_0_RTC_S4 BIT7
|
||||
#define EFI_ACPI_1_0_TMR_VAL_EXT BIT8
|
||||
#define EFI_ACPI_1_0_DCK_CAP BIT9
|
||||
|
||||
///
|
||||
/// Firmware ACPI Control Structure.
|
||||
///
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Length;
|
||||
UINT32 HardwareSignature;
|
||||
UINT32 FirmwareWakingVector;
|
||||
UINT32 GlobalLock;
|
||||
UINT32 Flags;
|
||||
UINT8 Reserved[40];
|
||||
} EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Firmware Control Structure Feature Flags.
|
||||
/// All other bits are reserved and must be set to 0.
|
||||
///
|
||||
#define EFI_ACPI_1_0_S4BIOS_F BIT0
|
||||
|
||||
///
|
||||
/// Multiple APIC Description Table header definition. The rest of the table
|
||||
/// must be defined in a platform-specific manner.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 LocalApicAddress;
|
||||
UINT32 Flags;
|
||||
} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
|
||||
|
||||
///
|
||||
/// MADT Revision (as defined in ACPI 1.0b specification).
|
||||
///
|
||||
#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
///
|
||||
/// Multiple APIC Flags
|
||||
/// All other bits are reserved and must be set to 0.
|
||||
///
|
||||
#define EFI_ACPI_1_0_PCAT_COMPAT BIT0
|
||||
|
||||
//
|
||||
// Multiple APIC Description Table APIC structure types
|
||||
// All other values between 0x05 an 0xFF are reserved and
|
||||
// will be ignored by OSPM.
|
||||
//
|
||||
#define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00
|
||||
#define EFI_ACPI_1_0_IO_APIC 0x01
|
||||
#define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02
|
||||
#define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
|
||||
#define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04
|
||||
|
||||
//
|
||||
// APIC Structure Definitions
|
||||
//
|
||||
|
||||
///
|
||||
/// Processor Local APIC Structure Definition.
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 AcpiProcessorId;
|
||||
UINT8 ApicId;
|
||||
UINT32 Flags;
|
||||
} EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local APIC Flags. All other bits are reserved and must be 0.
|
||||
///
|
||||
#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED BIT0
|
||||
|
||||
///
|
||||
/// IO APIC Structure.
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 IoApicId;
|
||||
UINT8 Reserved;
|
||||
UINT32 IoApicAddress;
|
||||
UINT32 SystemVectorBase;
|
||||
} EFI_ACPI_1_0_IO_APIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Interrupt Source Override Structure.
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 Bus;
|
||||
UINT8 Source;
|
||||
UINT32 GlobalSystemInterruptVector;
|
||||
UINT16 Flags;
|
||||
} EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Non-Maskable Interrupt Source Structure.
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT16 Flags;
|
||||
UINT32 GlobalSystemInterruptVector;
|
||||
} EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local APIC NMI Structure.
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 AcpiProcessorId;
|
||||
UINT16 Flags;
|
||||
UINT8 LocalApicInti;
|
||||
} EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Smart Battery Description Table (SBST)
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 WarningEnergyLevel;
|
||||
UINT32 LowEnergyLevel;
|
||||
UINT32 CriticalEnergyLevel;
|
||||
} EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE;
|
||||
|
||||
//
|
||||
// Known table signatures
|
||||
//
|
||||
|
||||
///
|
||||
/// "RSD PTR " Root System Description Pointer.
|
||||
///
|
||||
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
|
||||
|
||||
///
|
||||
/// "APIC" Multiple APIC Description Table.
|
||||
///
|
||||
#define EFI_ACPI_1_0_APIC_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
|
||||
|
||||
///
|
||||
/// "DSDT" Differentiated System Description Table.
|
||||
///
|
||||
#define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "FACS" Firmware ACPI Control Structure.
|
||||
///
|
||||
#define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
|
||||
|
||||
///
|
||||
/// "FACP" Fixed ACPI Description Table.
|
||||
///
|
||||
#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
|
||||
|
||||
///
|
||||
/// "PSDT" Persistent System Description Table.
|
||||
///
|
||||
#define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "RSDT" Root System Description Table.
|
||||
///
|
||||
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "SBST" Smart Battery Specification Table.
|
||||
///
|
||||
#define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
|
||||
|
||||
///
|
||||
/// "SSDT" Secondary System Description Table.
|
||||
///
|
||||
#define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
545
sys/contrib/edk2/Include/IndustryStandard/Acpi20.h
Normal file
545
sys/contrib/edk2/Include/IndustryStandard/Acpi20.h
Normal file
@ -0,0 +1,545 @@
|
||||
/** @file
|
||||
ACPI 2.0 definitions from the ACPI Specification, revision 2.0
|
||||
|
||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
**/
|
||||
|
||||
#ifndef _ACPI_2_0_H_
|
||||
#define _ACPI_2_0_H_
|
||||
|
||||
#include <IndustryStandard/Acpi10.h>
|
||||
|
||||
//
|
||||
// Define for Desriptor
|
||||
//
|
||||
#define ACPI_LARGE_GENERIC_REGISTER_DESCRIPTOR_NAME 0x02
|
||||
|
||||
#define ACPI_GENERIC_REGISTER_DESCRIPTOR 0x82
|
||||
|
||||
//
|
||||
// Ensure proper structure formats
|
||||
//
|
||||
#pragma pack(1)
|
||||
|
||||
///
|
||||
/// Generic Register Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_LARGE_RESOURCE_HEADER Header;
|
||||
UINT8 AddressSpaceId;
|
||||
UINT8 RegisterBitWidth;
|
||||
UINT8 RegisterBitOffset;
|
||||
UINT8 AddressSize;
|
||||
UINT64 RegisterAddress;
|
||||
} EFI_ACPI_GENERIC_REGISTER_DESCRIPTOR;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
//
|
||||
// Ensure proper structure formats
|
||||
//
|
||||
#pragma pack(1)
|
||||
|
||||
///
|
||||
/// ACPI 2.0 Generic Address Space definition
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 AddressSpaceId;
|
||||
UINT8 RegisterBitWidth;
|
||||
UINT8 RegisterBitOffset;
|
||||
UINT8 Reserved;
|
||||
UINT64 Address;
|
||||
} EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE;
|
||||
|
||||
//
|
||||
// Generic Address Space Address IDs
|
||||
//
|
||||
#define EFI_ACPI_2_0_SYSTEM_MEMORY 0
|
||||
#define EFI_ACPI_2_0_SYSTEM_IO 1
|
||||
#define EFI_ACPI_2_0_PCI_CONFIGURATION_SPACE 2
|
||||
#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER 3
|
||||
#define EFI_ACPI_2_0_SMBUS 4
|
||||
#define EFI_ACPI_2_0_FUNCTIONAL_FIXED_HARDWARE 0x7F
|
||||
|
||||
//
|
||||
// ACPI 2.0 table structures
|
||||
//
|
||||
|
||||
///
|
||||
/// Root System Description Pointer Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT64 Signature;
|
||||
UINT8 Checksum;
|
||||
UINT8 OemId[6];
|
||||
UINT8 Revision;
|
||||
UINT32 RsdtAddress;
|
||||
UINT32 Length;
|
||||
UINT64 XsdtAddress;
|
||||
UINT8 ExtendedChecksum;
|
||||
UINT8 Reserved[3];
|
||||
} EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
|
||||
|
||||
///
|
||||
/// RSD_PTR Revision (as defined in ACPI 2.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02
|
||||
|
||||
///
|
||||
/// Common table header, this prefaces all ACPI tables, including FACS, but
|
||||
/// excluding the RSD PTR structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Length;
|
||||
} EFI_ACPI_2_0_COMMON_HEADER;
|
||||
|
||||
//
|
||||
// Root System Description Table
|
||||
// No definition needed as it is a common description table header, the same with
|
||||
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
|
||||
//
|
||||
|
||||
///
|
||||
/// RSDT Revision (as defined in ACPI 2.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
//
|
||||
// Extended System Description Table
|
||||
// No definition needed as it is a common description table header, the same with
|
||||
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
|
||||
//
|
||||
|
||||
///
|
||||
/// XSDT Revision (as defined in ACPI 2.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
///
|
||||
/// Fixed ACPI Description Table Structure (FADT)
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 FirmwareCtrl;
|
||||
UINT32 Dsdt;
|
||||
UINT8 Reserved0;
|
||||
UINT8 PreferredPmProfile;
|
||||
UINT16 SciInt;
|
||||
UINT32 SmiCmd;
|
||||
UINT8 AcpiEnable;
|
||||
UINT8 AcpiDisable;
|
||||
UINT8 S4BiosReq;
|
||||
UINT8 PstateCnt;
|
||||
UINT32 Pm1aEvtBlk;
|
||||
UINT32 Pm1bEvtBlk;
|
||||
UINT32 Pm1aCntBlk;
|
||||
UINT32 Pm1bCntBlk;
|
||||
UINT32 Pm2CntBlk;
|
||||
UINT32 PmTmrBlk;
|
||||
UINT32 Gpe0Blk;
|
||||
UINT32 Gpe1Blk;
|
||||
UINT8 Pm1EvtLen;
|
||||
UINT8 Pm1CntLen;
|
||||
UINT8 Pm2CntLen;
|
||||
UINT8 PmTmrLen;
|
||||
UINT8 Gpe0BlkLen;
|
||||
UINT8 Gpe1BlkLen;
|
||||
UINT8 Gpe1Base;
|
||||
UINT8 CstCnt;
|
||||
UINT16 PLvl2Lat;
|
||||
UINT16 PLvl3Lat;
|
||||
UINT16 FlushSize;
|
||||
UINT16 FlushStride;
|
||||
UINT8 DutyOffset;
|
||||
UINT8 DutyWidth;
|
||||
UINT8 DayAlrm;
|
||||
UINT8 MonAlrm;
|
||||
UINT8 Century;
|
||||
UINT16 IaPcBootArch;
|
||||
UINT8 Reserved1;
|
||||
UINT32 Flags;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE ResetReg;
|
||||
UINT8 ResetValue;
|
||||
UINT8 Reserved2[3];
|
||||
UINT64 XFirmwareCtrl;
|
||||
UINT64 XDsdt;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
|
||||
} EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE;
|
||||
|
||||
///
|
||||
/// FADT Version (as defined in ACPI 2.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x03
|
||||
|
||||
//
|
||||
// Fixed ACPI Description Table Preferred Power Management Profile
|
||||
//
|
||||
#define EFI_ACPI_2_0_PM_PROFILE_UNSPECIFIED 0
|
||||
#define EFI_ACPI_2_0_PM_PROFILE_DESKTOP 1
|
||||
#define EFI_ACPI_2_0_PM_PROFILE_MOBILE 2
|
||||
#define EFI_ACPI_2_0_PM_PROFILE_WORKSTATION 3
|
||||
#define EFI_ACPI_2_0_PM_PROFILE_ENTERPRISE_SERVER 4
|
||||
#define EFI_ACPI_2_0_PM_PROFILE_SOHO_SERVER 5
|
||||
#define EFI_ACPI_2_0_PM_PROFILE_APPLIANCE_PC 6
|
||||
|
||||
//
|
||||
// Fixed ACPI Description Table Boot Architecture Flags
|
||||
// All other bits are reserved and must be set to 0.
|
||||
//
|
||||
#define EFI_ACPI_2_0_LEGACY_DEVICES BIT0
|
||||
#define EFI_ACPI_2_0_8042 BIT1
|
||||
|
||||
//
|
||||
// Fixed ACPI Description Table Fixed Feature Flags
|
||||
// All other bits are reserved and must be set to 0.
|
||||
//
|
||||
#define EFI_ACPI_2_0_WBINVD BIT0
|
||||
#define EFI_ACPI_2_0_WBINVD_FLUSH BIT1
|
||||
#define EFI_ACPI_2_0_PROC_C1 BIT2
|
||||
#define EFI_ACPI_2_0_P_LVL2_UP BIT3
|
||||
#define EFI_ACPI_2_0_PWR_BUTTON BIT4
|
||||
#define EFI_ACPI_2_0_SLP_BUTTON BIT5
|
||||
#define EFI_ACPI_2_0_FIX_RTC BIT6
|
||||
#define EFI_ACPI_2_0_RTC_S4 BIT7
|
||||
#define EFI_ACPI_2_0_TMR_VAL_EXT BIT8
|
||||
#define EFI_ACPI_2_0_DCK_CAP BIT9
|
||||
#define EFI_ACPI_2_0_RESET_REG_SUP BIT10
|
||||
#define EFI_ACPI_2_0_SEALED_CASE BIT11
|
||||
#define EFI_ACPI_2_0_HEADLESS BIT12
|
||||
#define EFI_ACPI_2_0_CPU_SW_SLP BIT13
|
||||
|
||||
///
|
||||
/// Firmware ACPI Control Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Length;
|
||||
UINT32 HardwareSignature;
|
||||
UINT32 FirmwareWakingVector;
|
||||
UINT32 GlobalLock;
|
||||
UINT32 Flags;
|
||||
UINT64 XFirmwareWakingVector;
|
||||
UINT8 Version;
|
||||
UINT8 Reserved[31];
|
||||
} EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
|
||||
|
||||
///
|
||||
/// FACS Version (as defined in ACPI 2.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01
|
||||
|
||||
///
|
||||
/// Firmware Control Structure Feature Flags
|
||||
/// All other bits are reserved and must be set to 0.
|
||||
///
|
||||
#define EFI_ACPI_2_0_S4BIOS_F BIT0
|
||||
|
||||
///
|
||||
/// Multiple APIC Description Table header definition. The rest of the table
|
||||
/// must be defined in a platform specific manner.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 LocalApicAddress;
|
||||
UINT32 Flags;
|
||||
} EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
|
||||
|
||||
///
|
||||
/// MADT Revision (as defined in ACPI 2.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
///
|
||||
/// Multiple APIC Flags
|
||||
/// All other bits are reserved and must be set to 0.
|
||||
///
|
||||
#define EFI_ACPI_2_0_PCAT_COMPAT BIT0
|
||||
|
||||
//
|
||||
// Multiple APIC Description Table APIC structure types
|
||||
// All other values between 0x09 an 0xFF are reserved and
|
||||
// will be ignored by OSPM.
|
||||
//
|
||||
#define EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC 0x00
|
||||
#define EFI_ACPI_2_0_IO_APIC 0x01
|
||||
#define EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE 0x02
|
||||
#define EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
|
||||
#define EFI_ACPI_2_0_LOCAL_APIC_NMI 0x04
|
||||
#define EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
|
||||
#define EFI_ACPI_2_0_IO_SAPIC 0x06
|
||||
#define EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC 0x07
|
||||
#define EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES 0x08
|
||||
|
||||
//
|
||||
// APIC Structure Definitions
|
||||
//
|
||||
|
||||
///
|
||||
/// Processor Local APIC Structure Definition
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 AcpiProcessorId;
|
||||
UINT8 ApicId;
|
||||
UINT32 Flags;
|
||||
} EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local APIC Flags. All other bits are reserved and must be 0.
|
||||
///
|
||||
#define EFI_ACPI_2_0_LOCAL_APIC_ENABLED BIT0
|
||||
|
||||
///
|
||||
/// IO APIC Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 IoApicId;
|
||||
UINT8 Reserved;
|
||||
UINT32 IoApicAddress;
|
||||
UINT32 GlobalSystemInterruptBase;
|
||||
} EFI_ACPI_2_0_IO_APIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Interrupt Source Override Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 Bus;
|
||||
UINT8 Source;
|
||||
UINT32 GlobalSystemInterrupt;
|
||||
UINT16 Flags;
|
||||
} EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Non-Maskable Interrupt Source Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT16 Flags;
|
||||
UINT32 GlobalSystemInterrupt;
|
||||
} EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local APIC NMI Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 AcpiProcessorId;
|
||||
UINT16 Flags;
|
||||
UINT8 LocalApicLint;
|
||||
} EFI_ACPI_2_0_LOCAL_APIC_NMI_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local APIC Address Override Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT16 Reserved;
|
||||
UINT64 LocalApicAddress;
|
||||
} EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
|
||||
|
||||
///
|
||||
/// IO SAPIC Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 IoApicId;
|
||||
UINT8 Reserved;
|
||||
UINT32 GlobalSystemInterruptBase;
|
||||
UINT64 IoSapicAddress;
|
||||
} EFI_ACPI_2_0_IO_SAPIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local SAPIC Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 AcpiProcessorId;
|
||||
UINT8 LocalSapicId;
|
||||
UINT8 LocalSapicEid;
|
||||
UINT8 Reserved[3];
|
||||
UINT32 Flags;
|
||||
} EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Platform Interrupt Sources Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT16 Flags;
|
||||
UINT8 InterruptType;
|
||||
UINT8 ProcessorId;
|
||||
UINT8 ProcessorEid;
|
||||
UINT8 IoSapicVector;
|
||||
UINT32 GlobalSystemInterrupt;
|
||||
UINT32 Reserved;
|
||||
} EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Smart Battery Description Table (SBST)
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 WarningEnergyLevel;
|
||||
UINT32 LowEnergyLevel;
|
||||
UINT32 CriticalEnergyLevel;
|
||||
} EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE;
|
||||
|
||||
///
|
||||
/// SBST Version (as defined in ACPI 2.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
///
|
||||
/// Embedded Controller Boot Resources Table (ECDT)
|
||||
/// The table is followed by a null terminated ASCII string that contains
|
||||
/// a fully qualified reference to the name space object.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcControl;
|
||||
EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcData;
|
||||
UINT32 Uid;
|
||||
UINT8 GpeBit;
|
||||
} EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
|
||||
|
||||
///
|
||||
/// ECDT Version (as defined in ACPI 2.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01
|
||||
|
||||
//
|
||||
// Known table signatures
|
||||
//
|
||||
|
||||
///
|
||||
/// "RSD PTR " Root System Description Pointer
|
||||
///
|
||||
#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
|
||||
|
||||
///
|
||||
/// "SPIC" Multiple SAPIC Description Table
|
||||
///
|
||||
/// BUGBUG: Don't know where this came from except SR870BN4 uses it.
|
||||
/// #define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE 0x43495053
|
||||
///
|
||||
#define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
|
||||
|
||||
///
|
||||
/// "BOOT" MS Simple Boot Spec
|
||||
///
|
||||
#define EFI_ACPI_2_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
|
||||
|
||||
///
|
||||
/// "DBGP" MS Bebug Port Spec
|
||||
///
|
||||
#define EFI_ACPI_2_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
|
||||
|
||||
///
|
||||
/// "DSDT" Differentiated System Description Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "ECDT" Embedded Controller Boot Resources Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "ETDT" Event Timer Description Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "FACS" Firmware ACPI Control Structure
|
||||
///
|
||||
#define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
|
||||
|
||||
///
|
||||
/// "FACP" Fixed ACPI Description Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
|
||||
|
||||
///
|
||||
/// "APIC" Multiple APIC Description Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
|
||||
|
||||
///
|
||||
/// "PSDT" Persistent System Description Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "RSDT" Root System Description Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "SBST" Smart Battery Specification Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
|
||||
|
||||
///
|
||||
/// "SLIT" System Locality Information Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
|
||||
|
||||
///
|
||||
/// "SPCR" Serial Port Concole Redirection Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
|
||||
|
||||
///
|
||||
/// "SRAT" Static Resource Affinity Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_STATIC_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
|
||||
|
||||
///
|
||||
/// "SSDT" Secondary System Description Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "SPMI" Server Platform Management Interface Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
|
||||
|
||||
///
|
||||
/// "XSDT" Extended System Description Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
|
||||
///
|
||||
#define EFI_ACPI_2_0_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
729
sys/contrib/edk2/Include/IndustryStandard/Acpi30.h
Normal file
729
sys/contrib/edk2/Include/IndustryStandard/Acpi30.h
Normal file
@ -0,0 +1,729 @@
|
||||
/** @file
|
||||
ACPI 3.0 definitions from the ACPI Specification Revision 3.0b October 10, 2006
|
||||
|
||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
**/
|
||||
|
||||
#ifndef _ACPI_3_0_H_
|
||||
#define _ACPI_3_0_H_
|
||||
|
||||
#include <IndustryStandard/Acpi20.h>
|
||||
|
||||
//
|
||||
// Define for Desriptor
|
||||
//
|
||||
#define ACPI_LARGE_EXTENDED_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0B
|
||||
|
||||
#define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR 0x8B
|
||||
|
||||
//
|
||||
// Ensure proper structure formats
|
||||
//
|
||||
#pragma pack(1)
|
||||
|
||||
///
|
||||
/// Extended Address Space Descriptor
|
||||
///
|
||||
typedef PACKED struct {
|
||||
ACPI_LARGE_RESOURCE_HEADER Header;
|
||||
UINT8 ResType;
|
||||
UINT8 GenFlag;
|
||||
UINT8 SpecificFlag;
|
||||
UINT8 RevisionId;
|
||||
UINT8 Reserved;
|
||||
UINT64 AddrSpaceGranularity;
|
||||
UINT64 AddrRangeMin;
|
||||
UINT64 AddrRangeMax;
|
||||
UINT64 AddrTranslationOffset;
|
||||
UINT64 AddrLen;
|
||||
UINT64 TypeSpecificAttribute;
|
||||
} EFI_ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
//
|
||||
// Memory Type Specific Flags
|
||||
//
|
||||
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UC 0x0000000000000001
|
||||
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WC 0x0000000000000002
|
||||
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WT 0x0000000000000004
|
||||
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WB 0x0000000000000008
|
||||
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UCE 0x0000000000000010
|
||||
#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_NV 0x0000000000008000
|
||||
|
||||
//
|
||||
// Ensure proper structure formats
|
||||
//
|
||||
#pragma pack(1)
|
||||
|
||||
///
|
||||
/// ACPI 3.0 Generic Address Space definition
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 AddressSpaceId;
|
||||
UINT8 RegisterBitWidth;
|
||||
UINT8 RegisterBitOffset;
|
||||
UINT8 AccessSize;
|
||||
UINT64 Address;
|
||||
} EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE;
|
||||
|
||||
//
|
||||
// Generic Address Space Address IDs
|
||||
//
|
||||
#define EFI_ACPI_3_0_SYSTEM_MEMORY 0
|
||||
#define EFI_ACPI_3_0_SYSTEM_IO 1
|
||||
#define EFI_ACPI_3_0_PCI_CONFIGURATION_SPACE 2
|
||||
#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER 3
|
||||
#define EFI_ACPI_3_0_SMBUS 4
|
||||
#define EFI_ACPI_3_0_FUNCTIONAL_FIXED_HARDWARE 0x7F
|
||||
|
||||
//
|
||||
// Generic Address Space Access Sizes
|
||||
//
|
||||
#define EFI_ACPI_3_0_UNDEFINED 0
|
||||
#define EFI_ACPI_3_0_BYTE 1
|
||||
#define EFI_ACPI_3_0_WORD 2
|
||||
#define EFI_ACPI_3_0_DWORD 3
|
||||
#define EFI_ACPI_3_0_QWORD 4
|
||||
|
||||
//
|
||||
// ACPI 3.0 table structures
|
||||
//
|
||||
|
||||
///
|
||||
/// Root System Description Pointer Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT64 Signature;
|
||||
UINT8 Checksum;
|
||||
UINT8 OemId[6];
|
||||
UINT8 Revision;
|
||||
UINT32 RsdtAddress;
|
||||
UINT32 Length;
|
||||
UINT64 XsdtAddress;
|
||||
UINT8 ExtendedChecksum;
|
||||
UINT8 Reserved[3];
|
||||
} EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
|
||||
|
||||
///
|
||||
/// RSD_PTR Revision (as defined in ACPI 3.0b spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 3.0b) says current value is 2
|
||||
|
||||
///
|
||||
/// Common table header, this prefaces all ACPI tables, including FACS, but
|
||||
/// excluding the RSD PTR structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Length;
|
||||
} EFI_ACPI_3_0_COMMON_HEADER;
|
||||
|
||||
//
|
||||
// Root System Description Table
|
||||
// No definition needed as it is a common description table header, the same with
|
||||
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
|
||||
//
|
||||
|
||||
///
|
||||
/// RSDT Revision (as defined in ACPI 3.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
//
|
||||
// Extended System Description Table
|
||||
// No definition needed as it is a common description table header, the same with
|
||||
// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
|
||||
//
|
||||
|
||||
///
|
||||
/// XSDT Revision (as defined in ACPI 3.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
///
|
||||
/// Fixed ACPI Description Table Structure (FADT)
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 FirmwareCtrl;
|
||||
UINT32 Dsdt;
|
||||
UINT8 Reserved0;
|
||||
UINT8 PreferredPmProfile;
|
||||
UINT16 SciInt;
|
||||
UINT32 SmiCmd;
|
||||
UINT8 AcpiEnable;
|
||||
UINT8 AcpiDisable;
|
||||
UINT8 S4BiosReq;
|
||||
UINT8 PstateCnt;
|
||||
UINT32 Pm1aEvtBlk;
|
||||
UINT32 Pm1bEvtBlk;
|
||||
UINT32 Pm1aCntBlk;
|
||||
UINT32 Pm1bCntBlk;
|
||||
UINT32 Pm2CntBlk;
|
||||
UINT32 PmTmrBlk;
|
||||
UINT32 Gpe0Blk;
|
||||
UINT32 Gpe1Blk;
|
||||
UINT8 Pm1EvtLen;
|
||||
UINT8 Pm1CntLen;
|
||||
UINT8 Pm2CntLen;
|
||||
UINT8 PmTmrLen;
|
||||
UINT8 Gpe0BlkLen;
|
||||
UINT8 Gpe1BlkLen;
|
||||
UINT8 Gpe1Base;
|
||||
UINT8 CstCnt;
|
||||
UINT16 PLvl2Lat;
|
||||
UINT16 PLvl3Lat;
|
||||
UINT16 FlushSize;
|
||||
UINT16 FlushStride;
|
||||
UINT8 DutyOffset;
|
||||
UINT8 DutyWidth;
|
||||
UINT8 DayAlrm;
|
||||
UINT8 MonAlrm;
|
||||
UINT8 Century;
|
||||
UINT16 IaPcBootArch;
|
||||
UINT8 Reserved1;
|
||||
UINT32 Flags;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE ResetReg;
|
||||
UINT8 ResetValue;
|
||||
UINT8 Reserved2[3];
|
||||
UINT64 XFirmwareCtrl;
|
||||
UINT64 XDsdt;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
|
||||
} EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE;
|
||||
|
||||
///
|
||||
/// FADT Version (as defined in ACPI 3.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x04
|
||||
|
||||
//
|
||||
// Fixed ACPI Description Table Preferred Power Management Profile
|
||||
//
|
||||
#define EFI_ACPI_3_0_PM_PROFILE_UNSPECIFIED 0
|
||||
#define EFI_ACPI_3_0_PM_PROFILE_DESKTOP 1
|
||||
#define EFI_ACPI_3_0_PM_PROFILE_MOBILE 2
|
||||
#define EFI_ACPI_3_0_PM_PROFILE_WORKSTATION 3
|
||||
#define EFI_ACPI_3_0_PM_PROFILE_ENTERPRISE_SERVER 4
|
||||
#define EFI_ACPI_3_0_PM_PROFILE_SOHO_SERVER 5
|
||||
#define EFI_ACPI_3_0_PM_PROFILE_APPLIANCE_PC 6
|
||||
#define EFI_ACPI_3_0_PM_PROFILE_PERFORMANCE_SERVER 7
|
||||
|
||||
//
|
||||
// Fixed ACPI Description Table Boot Architecture Flags
|
||||
// All other bits are reserved and must be set to 0.
|
||||
//
|
||||
#define EFI_ACPI_3_0_LEGACY_DEVICES BIT0
|
||||
#define EFI_ACPI_3_0_8042 BIT1
|
||||
#define EFI_ACPI_3_0_VGA_NOT_PRESENT BIT2
|
||||
#define EFI_ACPI_3_0_MSI_NOT_SUPPORTED BIT3
|
||||
#define EFI_ACPI_3_0_PCIE_ASPM_CONTROLS BIT4
|
||||
|
||||
//
|
||||
// Fixed ACPI Description Table Fixed Feature Flags
|
||||
// All other bits are reserved and must be set to 0.
|
||||
//
|
||||
#define EFI_ACPI_3_0_WBINVD BIT0
|
||||
#define EFI_ACPI_3_0_WBINVD_FLUSH BIT1
|
||||
#define EFI_ACPI_3_0_PROC_C1 BIT2
|
||||
#define EFI_ACPI_3_0_P_LVL2_UP BIT3
|
||||
#define EFI_ACPI_3_0_PWR_BUTTON BIT4
|
||||
#define EFI_ACPI_3_0_SLP_BUTTON BIT5
|
||||
#define EFI_ACPI_3_0_FIX_RTC BIT6
|
||||
#define EFI_ACPI_3_0_RTC_S4 BIT7
|
||||
#define EFI_ACPI_3_0_TMR_VAL_EXT BIT8
|
||||
#define EFI_ACPI_3_0_DCK_CAP BIT9
|
||||
#define EFI_ACPI_3_0_RESET_REG_SUP BIT10
|
||||
#define EFI_ACPI_3_0_SEALED_CASE BIT11
|
||||
#define EFI_ACPI_3_0_HEADLESS BIT12
|
||||
#define EFI_ACPI_3_0_CPU_SW_SLP BIT13
|
||||
#define EFI_ACPI_3_0_PCI_EXP_WAK BIT14
|
||||
#define EFI_ACPI_3_0_USE_PLATFORM_CLOCK BIT15
|
||||
#define EFI_ACPI_3_0_S4_RTC_STS_VALID BIT16
|
||||
#define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE BIT17
|
||||
#define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL BIT18
|
||||
#define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19
|
||||
|
||||
///
|
||||
/// Firmware ACPI Control Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Length;
|
||||
UINT32 HardwareSignature;
|
||||
UINT32 FirmwareWakingVector;
|
||||
UINT32 GlobalLock;
|
||||
UINT32 Flags;
|
||||
UINT64 XFirmwareWakingVector;
|
||||
UINT8 Version;
|
||||
UINT8 Reserved[31];
|
||||
} EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
|
||||
|
||||
///
|
||||
/// FACS Version (as defined in ACPI 3.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01
|
||||
|
||||
///
|
||||
/// Firmware Control Structure Feature Flags
|
||||
/// All other bits are reserved and must be set to 0.
|
||||
///
|
||||
#define EFI_ACPI_3_0_S4BIOS_F BIT0
|
||||
|
||||
//
|
||||
// Differentiated System Description Table,
|
||||
// Secondary System Description Table
|
||||
// and Persistent System Description Table,
|
||||
// no definition needed as they are common description table header, the same with
|
||||
// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
|
||||
//
|
||||
#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
|
||||
#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
|
||||
|
||||
///
|
||||
/// Multiple APIC Description Table header definition. The rest of the table
|
||||
/// must be defined in a platform specific manner.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 LocalApicAddress;
|
||||
UINT32 Flags;
|
||||
} EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
|
||||
|
||||
///
|
||||
/// MADT Revision (as defined in ACPI 3.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x02
|
||||
|
||||
///
|
||||
/// Multiple APIC Flags
|
||||
/// All other bits are reserved and must be set to 0.
|
||||
///
|
||||
#define EFI_ACPI_3_0_PCAT_COMPAT BIT0
|
||||
|
||||
//
|
||||
// Multiple APIC Description Table APIC structure types
|
||||
// All other values between 0x09 an 0xFF are reserved and
|
||||
// will be ignored by OSPM.
|
||||
//
|
||||
#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC 0x00
|
||||
#define EFI_ACPI_3_0_IO_APIC 0x01
|
||||
#define EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE 0x02
|
||||
#define EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
|
||||
#define EFI_ACPI_3_0_LOCAL_APIC_NMI 0x04
|
||||
#define EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
|
||||
#define EFI_ACPI_3_0_IO_SAPIC 0x06
|
||||
#define EFI_ACPI_3_0_LOCAL_SAPIC 0x07
|
||||
#define EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES 0x08
|
||||
|
||||
//
|
||||
// APIC Structure Definitions
|
||||
//
|
||||
|
||||
///
|
||||
/// Processor Local APIC Structure Definition
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 AcpiProcessorId;
|
||||
UINT8 ApicId;
|
||||
UINT32 Flags;
|
||||
} EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local APIC Flags. All other bits are reserved and must be 0.
|
||||
///
|
||||
#define EFI_ACPI_3_0_LOCAL_APIC_ENABLED BIT0
|
||||
|
||||
///
|
||||
/// IO APIC Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 IoApicId;
|
||||
UINT8 Reserved;
|
||||
UINT32 IoApicAddress;
|
||||
UINT32 GlobalSystemInterruptBase;
|
||||
} EFI_ACPI_3_0_IO_APIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Interrupt Source Override Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 Bus;
|
||||
UINT8 Source;
|
||||
UINT32 GlobalSystemInterrupt;
|
||||
UINT16 Flags;
|
||||
} EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Platform Interrupt Sources Structure Definition
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT16 Flags;
|
||||
UINT8 InterruptType;
|
||||
UINT8 ProcessorId;
|
||||
UINT8 ProcessorEid;
|
||||
UINT8 IoSapicVector;
|
||||
UINT32 GlobalSystemInterrupt;
|
||||
UINT32 PlatformInterruptSourceFlags;
|
||||
UINT8 CpeiProcessorOverride;
|
||||
UINT8 Reserved[31];
|
||||
} EFI_ACPI_3_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
|
||||
|
||||
//
|
||||
// MPS INTI flags.
|
||||
// All other bits are reserved and must be set to 0.
|
||||
//
|
||||
#define EFI_ACPI_3_0_POLARITY (3 << 0)
|
||||
#define EFI_ACPI_3_0_TRIGGER_MODE (3 << 2)
|
||||
|
||||
///
|
||||
/// Non-Maskable Interrupt Source Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT16 Flags;
|
||||
UINT32 GlobalSystemInterrupt;
|
||||
} EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local APIC NMI Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 AcpiProcessorId;
|
||||
UINT16 Flags;
|
||||
UINT8 LocalApicLint;
|
||||
} EFI_ACPI_3_0_LOCAL_APIC_NMI_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local APIC Address Override Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT16 Reserved;
|
||||
UINT64 LocalApicAddress;
|
||||
} EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
|
||||
|
||||
///
|
||||
/// IO SAPIC Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 IoApicId;
|
||||
UINT8 Reserved;
|
||||
UINT32 GlobalSystemInterruptBase;
|
||||
UINT64 IoSapicAddress;
|
||||
} EFI_ACPI_3_0_IO_SAPIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local SAPIC Structure
|
||||
/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 AcpiProcessorId;
|
||||
UINT8 LocalSapicId;
|
||||
UINT8 LocalSapicEid;
|
||||
UINT8 Reserved[3];
|
||||
UINT32 Flags;
|
||||
UINT32 ACPIProcessorUIDValue;
|
||||
} EFI_ACPI_3_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Platform Interrupt Sources Structure
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT16 Flags;
|
||||
UINT8 InterruptType;
|
||||
UINT8 ProcessorId;
|
||||
UINT8 ProcessorEid;
|
||||
UINT8 IoSapicVector;
|
||||
UINT32 GlobalSystemInterrupt;
|
||||
UINT32 PlatformInterruptSourceFlags;
|
||||
} EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Platform Interrupt Source Flags.
|
||||
/// All other bits are reserved and must be set to 0.
|
||||
///
|
||||
#define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE BIT0
|
||||
|
||||
///
|
||||
/// Smart Battery Description Table (SBST)
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 WarningEnergyLevel;
|
||||
UINT32 LowEnergyLevel;
|
||||
UINT32 CriticalEnergyLevel;
|
||||
} EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE;
|
||||
|
||||
///
|
||||
/// SBST Version (as defined in ACPI 3.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
|
||||
|
||||
///
|
||||
/// Embedded Controller Boot Resources Table (ECDT)
|
||||
/// The table is followed by a null terminated ASCII string that contains
|
||||
/// a fully qualified reference to the name space object.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE EcControl;
|
||||
EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE EcData;
|
||||
UINT32 Uid;
|
||||
UINT8 GpeBit;
|
||||
} EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
|
||||
|
||||
///
|
||||
/// ECDT Version (as defined in ACPI 3.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01
|
||||
|
||||
///
|
||||
/// System Resource Affinity Table (SRAT. The rest of the table
|
||||
/// must be defined in a platform specific manner.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT32 Reserved1; ///< Must be set to 1
|
||||
UINT64 Reserved2;
|
||||
} EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
|
||||
|
||||
///
|
||||
/// SRAT Version (as defined in ACPI 3.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x02
|
||||
|
||||
//
|
||||
// SRAT structure types.
|
||||
// All other values between 0x02 an 0xFF are reserved and
|
||||
// will be ignored by OSPM.
|
||||
//
|
||||
#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
|
||||
#define EFI_ACPI_3_0_MEMORY_AFFINITY 0x01
|
||||
|
||||
///
|
||||
/// Processor Local APIC/SAPIC Affinity Structure Definition
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT8 ProximityDomain7To0;
|
||||
UINT8 ApicId;
|
||||
UINT32 Flags;
|
||||
UINT8 LocalSapicEid;
|
||||
UINT8 ProximityDomain31To8[3];
|
||||
UINT8 Reserved[4];
|
||||
} EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
|
||||
|
||||
///
|
||||
/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.
|
||||
///
|
||||
#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
|
||||
|
||||
///
|
||||
/// Memory Affinity Structure Definition
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Type;
|
||||
UINT8 Length;
|
||||
UINT32 ProximityDomain;
|
||||
UINT16 Reserved1;
|
||||
UINT32 AddressBaseLow;
|
||||
UINT32 AddressBaseHigh;
|
||||
UINT32 LengthLow;
|
||||
UINT32 LengthHigh;
|
||||
UINT32 Reserved2;
|
||||
UINT32 Flags;
|
||||
UINT64 Reserved3;
|
||||
} EFI_ACPI_3_0_MEMORY_AFFINITY_STRUCTURE;
|
||||
|
||||
//
|
||||
// Memory Flags. All other bits are reserved and must be 0.
|
||||
//
|
||||
#define EFI_ACPI_3_0_MEMORY_ENABLED (1 << 0)
|
||||
#define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE (1 << 1)
|
||||
#define EFI_ACPI_3_0_MEMORY_NONVOLATILE (1 << 2)
|
||||
|
||||
///
|
||||
/// System Locality Distance Information Table (SLIT).
|
||||
/// The rest of the table is a matrix.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_ACPI_DESCRIPTION_HEADER Header;
|
||||
UINT64 NumberOfSystemLocalities;
|
||||
} EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
|
||||
|
||||
///
|
||||
/// SLIT Version (as defined in ACPI 3.0 spec.)
|
||||
///
|
||||
#define EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01
|
||||
|
||||
//
|
||||
// Known table signatures
|
||||
//
|
||||
|
||||
///
|
||||
/// "RSD PTR " Root System Description Pointer
|
||||
///
|
||||
#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
|
||||
|
||||
///
|
||||
/// "APIC" Multiple APIC Description Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
|
||||
|
||||
///
|
||||
/// "DSDT" Differentiated System Description Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "ECDT" Embedded Controller Boot Resources Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "FACP" Fixed ACPI Description Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
|
||||
|
||||
///
|
||||
/// "FACS" Firmware ACPI Control Structure
|
||||
///
|
||||
#define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
|
||||
|
||||
///
|
||||
/// "PSDT" Persistent System Description Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "RSDT" Root System Description Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "SBST" Smart Battery Specification Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
|
||||
|
||||
///
|
||||
/// "SLIT" System Locality Information Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
|
||||
|
||||
///
|
||||
/// "SRAT" System Resource Affinity Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
|
||||
|
||||
///
|
||||
/// "SSDT" Secondary System Description Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "XSDT" Extended System Description Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "BOOT" MS Simple Boot Spec
|
||||
///
|
||||
#define EFI_ACPI_3_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
|
||||
|
||||
///
|
||||
/// "CPEP" Corrected Platform Error Polling Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
|
||||
|
||||
///
|
||||
/// "DBGP" MS Debug Port Spec
|
||||
///
|
||||
#define EFI_ACPI_3_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
|
||||
|
||||
///
|
||||
/// "ETDT" Event Timer Description Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
|
||||
|
||||
///
|
||||
/// "HPET" IA-PC High Precision Event Timer Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')
|
||||
|
||||
///
|
||||
/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
|
||||
|
||||
///
|
||||
/// "SPCR" Serial Port Concole Redirection Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
|
||||
|
||||
///
|
||||
/// "SPMI" Server Platform Management Interface Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
|
||||
|
||||
///
|
||||
/// "TCPA" Trusted Computing Platform Alliance Capabilities Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
|
||||
|
||||
///
|
||||
/// "WDRT" Watchdog Resource Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')
|
||||
|
||||
///
|
||||
/// "WDAT" Watchdog Action Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')
|
||||
|
||||
///
|
||||
/// "WSPT" Windows Specific Properties Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_WINDOWS_SPECIFIC_PROPERTIES_TABLE_SIGNATURE SIGNATURE_32('W', 'S', 'P', 'T')
|
||||
|
||||
///
|
||||
/// "iBFT" iSCSI Boot Firmware Table
|
||||
///
|
||||
#define EFI_ACPI_3_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
1309
sys/contrib/edk2/Include/IndustryStandard/Acpi40.h
Normal file
1309
sys/contrib/edk2/Include/IndustryStandard/Acpi40.h
Normal file
File diff suppressed because it is too large
Load Diff
2119
sys/contrib/edk2/Include/IndustryStandard/Acpi50.h
Normal file
2119
sys/contrib/edk2/Include/IndustryStandard/Acpi50.h
Normal file
File diff suppressed because it is too large
Load Diff
2139
sys/contrib/edk2/Include/IndustryStandard/Acpi51.h
Normal file
2139
sys/contrib/edk2/Include/IndustryStandard/Acpi51.h
Normal file
File diff suppressed because it is too large
Load Diff
2346
sys/contrib/edk2/Include/IndustryStandard/Acpi60.h
Normal file
2346
sys/contrib/edk2/Include/IndustryStandard/Acpi60.h
Normal file
File diff suppressed because it is too large
Load Diff
175
sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h
Normal file
175
sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h
Normal file
@ -0,0 +1,175 @@
|
||||
/** @file
|
||||
This file contains AML code definition in the latest ACPI spec.
|
||||
|
||||
Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _ACPI_AML_H_
|
||||
#define _ACPI_AML_H_
|
||||
|
||||
//
|
||||
// ACPI AML definition
|
||||
//
|
||||
|
||||
//
|
||||
// Primary OpCode
|
||||
//
|
||||
#define AML_ZERO_OP 0x00
|
||||
#define AML_ONE_OP 0x01
|
||||
#define AML_ALIAS_OP 0x06
|
||||
#define AML_NAME_OP 0x08
|
||||
#define AML_BYTE_PREFIX 0x0a
|
||||
#define AML_WORD_PREFIX 0x0b
|
||||
#define AML_DWORD_PREFIX 0x0c
|
||||
#define AML_STRING_PREFIX 0x0d
|
||||
#define AML_QWORD_PREFIX 0x0e
|
||||
#define AML_SCOPE_OP 0x10
|
||||
#define AML_BUFFER_OP 0x11
|
||||
#define AML_PACKAGE_OP 0x12
|
||||
#define AML_VAR_PACKAGE_OP 0x13
|
||||
#define AML_METHOD_OP 0x14
|
||||
#define AML_DUAL_NAME_PREFIX 0x2e
|
||||
#define AML_MULTI_NAME_PREFIX 0x2f
|
||||
#define AML_NAME_CHAR_A 0x41
|
||||
#define AML_NAME_CHAR_B 0x42
|
||||
#define AML_NAME_CHAR_C 0x43
|
||||
#define AML_NAME_CHAR_D 0x44
|
||||
#define AML_NAME_CHAR_E 0x45
|
||||
#define AML_NAME_CHAR_F 0x46
|
||||
#define AML_NAME_CHAR_G 0x47
|
||||
#define AML_NAME_CHAR_H 0x48
|
||||
#define AML_NAME_CHAR_I 0x49
|
||||
#define AML_NAME_CHAR_J 0x4a
|
||||
#define AML_NAME_CHAR_K 0x4b
|
||||
#define AML_NAME_CHAR_L 0x4c
|
||||
#define AML_NAME_CHAR_M 0x4d
|
||||
#define AML_NAME_CHAR_N 0x4e
|
||||
#define AML_NAME_CHAR_O 0x4f
|
||||
#define AML_NAME_CHAR_P 0x50
|
||||
#define AML_NAME_CHAR_Q 0x51
|
||||
#define AML_NAME_CHAR_R 0x52
|
||||
#define AML_NAME_CHAR_S 0x53
|
||||
#define AML_NAME_CHAR_T 0x54
|
||||
#define AML_NAME_CHAR_U 0x55
|
||||
#define AML_NAME_CHAR_V 0x56
|
||||
#define AML_NAME_CHAR_W 0x57
|
||||
#define AML_NAME_CHAR_X 0x58
|
||||
#define AML_NAME_CHAR_Y 0x59
|
||||
#define AML_NAME_CHAR_Z 0x5a
|
||||
#define AML_ROOT_CHAR 0x5c
|
||||
#define AML_PARENT_PREFIX_CHAR 0x5e
|
||||
#define AML_NAME_CHAR__ 0x5f
|
||||
#define AML_LOCAL0 0x60
|
||||
#define AML_LOCAL1 0x61
|
||||
#define AML_LOCAL2 0x62
|
||||
#define AML_LOCAL3 0x63
|
||||
#define AML_LOCAL4 0x64
|
||||
#define AML_LOCAL5 0x65
|
||||
#define AML_LOCAL6 0x66
|
||||
#define AML_LOCAL7 0x67
|
||||
#define AML_ARG0 0x68
|
||||
#define AML_ARG1 0x69
|
||||
#define AML_ARG2 0x6a
|
||||
#define AML_ARG3 0x6b
|
||||
#define AML_ARG4 0x6c
|
||||
#define AML_ARG5 0x6d
|
||||
#define AML_ARG6 0x6e
|
||||
#define AML_STORE_OP 0x70
|
||||
#define AML_REF_OF_OP 0x71
|
||||
#define AML_ADD_OP 0x72
|
||||
#define AML_CONCAT_OP 0x73
|
||||
#define AML_SUBTRACT_OP 0x74
|
||||
#define AML_INCREMENT_OP 0x75
|
||||
#define AML_DECREMENT_OP 0x76
|
||||
#define AML_MULTIPLY_OP 0x77
|
||||
#define AML_DIVIDE_OP 0x78
|
||||
#define AML_SHIFT_LEFT_OP 0x79
|
||||
#define AML_SHIFT_RIGHT_OP 0x7a
|
||||
#define AML_AND_OP 0x7b
|
||||
#define AML_NAND_OP 0x7c
|
||||
#define AML_OR_OP 0x7d
|
||||
#define AML_NOR_OP 0x7e
|
||||
#define AML_XOR_OP 0x7f
|
||||
#define AML_NOT_OP 0x80
|
||||
#define AML_FIND_SET_LEFT_BIT_OP 0x81
|
||||
#define AML_FIND_SET_RIGHT_BIT_OP 0x82
|
||||
#define AML_DEREF_OF_OP 0x83
|
||||
#define AML_CONCAT_RES_OP 0x84
|
||||
#define AML_MOD_OP 0x85
|
||||
#define AML_NOTIFY_OP 0x86
|
||||
#define AML_SIZE_OF_OP 0x87
|
||||
#define AML_INDEX_OP 0x88
|
||||
#define AML_MATCH_OP 0x89
|
||||
#define AML_CREATE_DWORD_FIELD_OP 0x8a
|
||||
#define AML_CREATE_WORD_FIELD_OP 0x8b
|
||||
#define AML_CREATE_BYTE_FIELD_OP 0x8c
|
||||
#define AML_CREATE_BIT_FIELD_OP 0x8d
|
||||
#define AML_OBJECT_TYPE_OP 0x8e
|
||||
#define AML_CREATE_QWORD_FIELD_OP 0x8f
|
||||
#define AML_LAND_OP 0x90
|
||||
#define AML_LOR_OP 0x91
|
||||
#define AML_LNOT_OP 0x92
|
||||
#define AML_LEQUAL_OP 0x93
|
||||
#define AML_LGREATER_OP 0x94
|
||||
#define AML_LLESS_OP 0x95
|
||||
#define AML_TO_BUFFER_OP 0x96
|
||||
#define AML_TO_DEC_STRING_OP 0x97
|
||||
#define AML_TO_HEX_STRING_OP 0x98
|
||||
#define AML_TO_INTEGER_OP 0x99
|
||||
#define AML_TO_STRING_OP 0x9c
|
||||
#define AML_COPY_OBJECT_OP 0x9d
|
||||
#define AML_MID_OP 0x9e
|
||||
#define AML_CONTINUE_OP 0x9f
|
||||
#define AML_IF_OP 0xa0
|
||||
#define AML_ELSE_OP 0xa1
|
||||
#define AML_WHILE_OP 0xa2
|
||||
#define AML_NOOP_OP 0xa3
|
||||
#define AML_RETURN_OP 0xa4
|
||||
#define AML_BREAK_OP 0xa5
|
||||
#define AML_BREAK_POINT_OP 0xcc
|
||||
#define AML_ONES_OP 0xff
|
||||
|
||||
//
|
||||
// Extended OpCode
|
||||
//
|
||||
#define AML_EXT_OP 0x5b
|
||||
|
||||
#define AML_EXT_MUTEX_OP 0x01
|
||||
#define AML_EXT_EVENT_OP 0x02
|
||||
#define AML_EXT_COND_REF_OF_OP 0x12
|
||||
#define AML_EXT_CREATE_FIELD_OP 0x13
|
||||
#define AML_EXT_LOAD_TABLE_OP 0x1f
|
||||
#define AML_EXT_LOAD_OP 0x20
|
||||
#define AML_EXT_STALL_OP 0x21
|
||||
#define AML_EXT_SLEEP_OP 0x22
|
||||
#define AML_EXT_ACQUIRE_OP 0x23
|
||||
#define AML_EXT_SIGNAL_OP 0x24
|
||||
#define AML_EXT_WAIT_OP 0x25
|
||||
#define AML_EXT_RESET_OP 0x26
|
||||
#define AML_EXT_RELEASE_OP 0x27
|
||||
#define AML_EXT_FROM_BCD_OP 0x28
|
||||
#define AML_EXT_TO_BCD_OP 0x29
|
||||
#define AML_EXT_UNLOAD_OP 0x2a
|
||||
#define AML_EXT_REVISION_OP 0x30
|
||||
#define AML_EXT_DEBUG_OP 0x31
|
||||
#define AML_EXT_FATAL_OP 0x32
|
||||
#define AML_EXT_TIMER_OP 0x33
|
||||
#define AML_EXT_REGION_OP 0x80
|
||||
#define AML_EXT_FIELD_OP 0x81
|
||||
#define AML_EXT_DEVICE_OP 0x82
|
||||
#define AML_EXT_PROCESSOR_OP 0x83
|
||||
#define AML_EXT_POWER_RES_OP 0x84
|
||||
#define AML_EXT_THERMAL_ZONE_OP 0x85
|
||||
#define AML_EXT_INDEX_FIELD_OP 0x86
|
||||
#define AML_EXT_BANK_FIELD_OP 0x87
|
||||
#define AML_EXT_DATA_REGION_OP 0x88
|
||||
|
||||
#endif
|
47
sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h
Normal file
47
sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h
Normal file
@ -0,0 +1,47 @@
|
||||
/** @file
|
||||
This file contains the Bluetooth definitions that are consumed by drivers.
|
||||
These definitions are from Bluetooth Core Specification Version 4.0 June, 2010
|
||||
|
||||
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _BLUETOOTH_H_
|
||||
#define _BLUETOOTH_H_
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
///
|
||||
/// BLUETOOTH_ADDRESS
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// 48bit Bluetooth device address.
|
||||
///
|
||||
UINT8 Address[6];
|
||||
} BLUETOOTH_ADDRESS;
|
||||
|
||||
///
|
||||
/// BLUETOOTH_CLASS_OF_DEVICE. See Bluetooth specification for detail.
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 FormatType:2;
|
||||
UINT8 MinorDeviceClass: 6;
|
||||
UINT16 MajorDeviceClass: 5;
|
||||
UINT16 MajorServiceClass:11;
|
||||
} BLUETOOTH_CLASS_OF_DEVICE;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#define BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE 248
|
||||
|
||||
#define BLUETOOTH_HCI_LINK_KEY_SIZE 16
|
||||
|
||||
#endif
|
8910
sys/contrib/edk2/Include/Library/BaseLib.h
Normal file
8910
sys/contrib/edk2/Include/Library/BaseLib.h
Normal file
File diff suppressed because it is too large
Load Diff
489
sys/contrib/edk2/Include/Library/BaseMemoryLib.h
Normal file
489
sys/contrib/edk2/Include/Library/BaseMemoryLib.h
Normal file
@ -0,0 +1,489 @@
|
||||
/** @file
|
||||
Provides copy memory, fill memory, zero memory, and GUID functions.
|
||||
|
||||
The Base Memory Library provides optimized implementations for common memory-based operations.
|
||||
These functions should be used in place of coding your own loops to do equivalent common functions.
|
||||
This allows optimized library implementations to help increase performance.
|
||||
|
||||
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __BASE_MEMORY_LIB__
|
||||
#define __BASE_MEMORY_LIB__
|
||||
|
||||
/**
|
||||
Copies a source buffer to a destination buffer, and returns the destination buffer.
|
||||
|
||||
This function copies Length bytes from SourceBuffer to DestinationBuffer, and returns
|
||||
DestinationBuffer. The implementation must be reentrant, and it must handle the case
|
||||
where SourceBuffer overlaps DestinationBuffer.
|
||||
|
||||
If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - SourceBuffer + 1), then ASSERT().
|
||||
|
||||
@param DestinationBuffer The pointer to the destination buffer of the memory copy.
|
||||
@param SourceBuffer The pointer to the source buffer of the memory copy.
|
||||
@param Length The number of bytes to copy from SourceBuffer to DestinationBuffer.
|
||||
|
||||
@return DestinationBuffer.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
CopyMem (
|
||||
OUT VOID *DestinationBuffer,
|
||||
IN CONST VOID *SourceBuffer,
|
||||
IN UINTN Length
|
||||
);
|
||||
|
||||
/**
|
||||
Fills a target buffer with a byte value, and returns the target buffer.
|
||||
|
||||
This function fills Length bytes of Buffer with Value, and returns Buffer.
|
||||
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The memory to set.
|
||||
@param Length The number of bytes to set.
|
||||
@param Value The value with which to fill Length bytes of Buffer.
|
||||
|
||||
@return Buffer.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
SetMem (
|
||||
OUT VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINT8 Value
|
||||
);
|
||||
|
||||
/**
|
||||
Fills a target buffer with a 16-bit value, and returns the target buffer.
|
||||
|
||||
This function fills Length bytes of Buffer with the 16-bit value specified by
|
||||
Value, and returns Buffer. Value is repeated every 16-bits in for Length
|
||||
bytes of Buffer.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
If Buffer is not aligned on a 16-bit boundary, then ASSERT().
|
||||
If Length is not aligned on a 16-bit boundary, then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to fill.
|
||||
@param Length The number of bytes in Buffer to fill.
|
||||
@param Value The value with which to fill Length bytes of Buffer.
|
||||
|
||||
@return Buffer.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
SetMem16 (
|
||||
OUT VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINT16 Value
|
||||
);
|
||||
|
||||
/**
|
||||
Fills a target buffer with a 32-bit value, and returns the target buffer.
|
||||
|
||||
This function fills Length bytes of Buffer with the 32-bit value specified by
|
||||
Value, and returns Buffer. Value is repeated every 32-bits in for Length
|
||||
bytes of Buffer.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
If Buffer is not aligned on a 32-bit boundary, then ASSERT().
|
||||
If Length is not aligned on a 32-bit boundary, then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to fill.
|
||||
@param Length The number of bytes in Buffer to fill.
|
||||
@param Value The value with which to fill Length bytes of Buffer.
|
||||
|
||||
@return Buffer.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
SetMem32 (
|
||||
OUT VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINT32 Value
|
||||
);
|
||||
|
||||
/**
|
||||
Fills a target buffer with a 64-bit value, and returns the target buffer.
|
||||
|
||||
This function fills Length bytes of Buffer with the 64-bit value specified by
|
||||
Value, and returns Buffer. Value is repeated every 64-bits in for Length
|
||||
bytes of Buffer.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
If Buffer is not aligned on a 64-bit boundary, then ASSERT().
|
||||
If Length is not aligned on a 64-bit boundary, then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to fill.
|
||||
@param Length The number of bytes in Buffer to fill.
|
||||
@param Value The value with which to fill Length bytes of Buffer.
|
||||
|
||||
@return Buffer.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
SetMem64 (
|
||||
OUT VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINT64 Value
|
||||
);
|
||||
|
||||
/**
|
||||
Fills a target buffer with a value that is size UINTN, and returns the target buffer.
|
||||
|
||||
This function fills Length bytes of Buffer with the UINTN sized value specified by
|
||||
Value, and returns Buffer. Value is repeated every sizeof(UINTN) bytes for Length
|
||||
bytes of Buffer.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
If Buffer is not aligned on a UINTN boundary, then ASSERT().
|
||||
If Length is not aligned on a UINTN boundary, then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to fill.
|
||||
@param Length The number of bytes in Buffer to fill.
|
||||
@param Value The value with which to fill Length bytes of Buffer.
|
||||
|
||||
@return Buffer.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
SetMemN (
|
||||
OUT VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINTN Value
|
||||
);
|
||||
|
||||
/**
|
||||
Fills a target buffer with zeros, and returns the target buffer.
|
||||
|
||||
This function fills Length bytes of Buffer with zeros, and returns Buffer.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to fill with zeros.
|
||||
@param Length The number of bytes in Buffer to fill with zeros.
|
||||
|
||||
@return Buffer.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ZeroMem (
|
||||
OUT VOID *Buffer,
|
||||
IN UINTN Length
|
||||
);
|
||||
|
||||
/**
|
||||
Compares the contents of two buffers.
|
||||
|
||||
This function compares Length bytes of SourceBuffer to Length bytes of DestinationBuffer.
|
||||
If all Length bytes of the two buffers are identical, then 0 is returned. Otherwise, the
|
||||
value returned is the first mismatched byte in SourceBuffer subtracted from the first
|
||||
mismatched byte in DestinationBuffer.
|
||||
|
||||
If Length > 0 and DestinationBuffer is NULL, then ASSERT().
|
||||
If Length > 0 and SourceBuffer is NULL, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - SourceBuffer + 1), then ASSERT().
|
||||
|
||||
@param DestinationBuffer The pointer to the destination buffer to compare.
|
||||
@param SourceBuffer The pointer to the source buffer to compare.
|
||||
@param Length The number of bytes to compare.
|
||||
|
||||
@return 0 All Length bytes of the two buffers are identical.
|
||||
@retval Non-zero The first mismatched byte in SourceBuffer subtracted from the first
|
||||
mismatched byte in DestinationBuffer.
|
||||
|
||||
**/
|
||||
INTN
|
||||
EFIAPI
|
||||
CompareMem (
|
||||
IN CONST VOID *DestinationBuffer,
|
||||
IN CONST VOID *SourceBuffer,
|
||||
IN UINTN Length
|
||||
);
|
||||
|
||||
/**
|
||||
Scans a target buffer for an 8-bit value, and returns a pointer to the matching 8-bit value
|
||||
in the target buffer.
|
||||
|
||||
This function searches target the buffer specified by Buffer and Length from the lowest
|
||||
address to the highest address for an 8-bit value that matches Value. If a match is found,
|
||||
then a pointer to the matching byte in the target buffer is returned. If no match is found,
|
||||
then NULL is returned. If Length is 0, then NULL is returned.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to scan.
|
||||
@param Length The number of bytes in Buffer to scan.
|
||||
@param Value The value to search for in the target buffer.
|
||||
|
||||
@return A pointer to the matching byte in the target buffer, otherwise NULL.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ScanMem8 (
|
||||
IN CONST VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINT8 Value
|
||||
);
|
||||
|
||||
/**
|
||||
Scans a target buffer for a 16-bit value, and returns a pointer to the matching 16-bit value
|
||||
in the target buffer.
|
||||
|
||||
This function searches target the buffer specified by Buffer and Length from the lowest
|
||||
address to the highest address for a 16-bit value that matches Value. If a match is found,
|
||||
then a pointer to the matching byte in the target buffer is returned. If no match is found,
|
||||
then NULL is returned. If Length is 0, then NULL is returned.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Buffer is not aligned on a 16-bit boundary, then ASSERT().
|
||||
If Length is not aligned on a 16-bit boundary, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to scan.
|
||||
@param Length The number of bytes in Buffer to scan.
|
||||
@param Value The value to search for in the target buffer.
|
||||
|
||||
@return A pointer to the matching byte in the target buffer, otherwise NULL.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ScanMem16 (
|
||||
IN CONST VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINT16 Value
|
||||
);
|
||||
|
||||
/**
|
||||
Scans a target buffer for a 32-bit value, and returns a pointer to the matching 32-bit value
|
||||
in the target buffer.
|
||||
|
||||
This function searches target the buffer specified by Buffer and Length from the lowest
|
||||
address to the highest address for a 32-bit value that matches Value. If a match is found,
|
||||
then a pointer to the matching byte in the target buffer is returned. If no match is found,
|
||||
then NULL is returned. If Length is 0, then NULL is returned.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Buffer is not aligned on a 32-bit boundary, then ASSERT().
|
||||
If Length is not aligned on a 32-bit boundary, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to scan.
|
||||
@param Length The number of bytes in Buffer to scan.
|
||||
@param Value The value to search for in the target buffer.
|
||||
|
||||
@return A pointer to the matching byte in the target buffer, otherwise NULL.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ScanMem32 (
|
||||
IN CONST VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINT32 Value
|
||||
);
|
||||
|
||||
/**
|
||||
Scans a target buffer for a 64-bit value, and returns a pointer to the matching 64-bit value
|
||||
in the target buffer.
|
||||
|
||||
This function searches target the buffer specified by Buffer and Length from the lowest
|
||||
address to the highest address for a 64-bit value that matches Value. If a match is found,
|
||||
then a pointer to the matching byte in the target buffer is returned. If no match is found,
|
||||
then NULL is returned. If Length is 0, then NULL is returned.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Buffer is not aligned on a 64-bit boundary, then ASSERT().
|
||||
If Length is not aligned on a 64-bit boundary, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to scan.
|
||||
@param Length The number of bytes in Buffer to scan.
|
||||
@param Value The value to search for in the target buffer.
|
||||
|
||||
@return A pointer to the matching byte in the target buffer, otherwise NULL.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ScanMem64 (
|
||||
IN CONST VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINT64 Value
|
||||
);
|
||||
|
||||
/**
|
||||
Scans a target buffer for a UINTN sized value, and returns a pointer to the matching
|
||||
UINTN sized value in the target buffer.
|
||||
|
||||
This function searches target the buffer specified by Buffer and Length from the lowest
|
||||
address to the highest address for a UINTN sized value that matches Value. If a match is found,
|
||||
then a pointer to the matching byte in the target buffer is returned. If no match is found,
|
||||
then NULL is returned. If Length is 0, then NULL is returned.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Buffer is not aligned on a UINTN boundary, then ASSERT().
|
||||
If Length is not aligned on a UINTN boundary, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to scan.
|
||||
@param Length The number of bytes in Buffer to scan.
|
||||
@param Value The value to search for in the target buffer.
|
||||
|
||||
@return A pointer to the matching byte in the target buffer, otherwise NULL.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ScanMemN (
|
||||
IN CONST VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN UINTN Value
|
||||
);
|
||||
|
||||
/**
|
||||
Copies a source GUID to a destination GUID.
|
||||
|
||||
This function copies the contents of the 128-bit GUID specified by SourceGuid to
|
||||
DestinationGuid, and returns DestinationGuid.
|
||||
|
||||
If DestinationGuid is NULL, then ASSERT().
|
||||
If SourceGuid is NULL, then ASSERT().
|
||||
|
||||
@param DestinationGuid The pointer to the destination GUID.
|
||||
@param SourceGuid The pointer to the source GUID.
|
||||
|
||||
@return DestinationGuid.
|
||||
|
||||
**/
|
||||
GUID *
|
||||
EFIAPI
|
||||
CopyGuid (
|
||||
OUT GUID *DestinationGuid,
|
||||
IN CONST GUID *SourceGuid
|
||||
);
|
||||
|
||||
/**
|
||||
Compares two GUIDs.
|
||||
|
||||
This function compares Guid1 to Guid2. If the GUIDs are identical then TRUE is returned.
|
||||
If there are any bit differences in the two GUIDs, then FALSE is returned.
|
||||
|
||||
If Guid1 is NULL, then ASSERT().
|
||||
If Guid2 is NULL, then ASSERT().
|
||||
|
||||
@param Guid1 A pointer to a 128 bit GUID.
|
||||
@param Guid2 A pointer to a 128 bit GUID.
|
||||
|
||||
@retval TRUE Guid1 and Guid2 are identical.
|
||||
@retval FALSE Guid1 and Guid2 are not identical.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
CompareGuid (
|
||||
IN CONST GUID *Guid1,
|
||||
IN CONST GUID *Guid2
|
||||
);
|
||||
|
||||
/**
|
||||
Scans a target buffer for a GUID, and returns a pointer to the matching GUID
|
||||
in the target buffer.
|
||||
|
||||
This function searches target the buffer specified by Buffer and Length from
|
||||
the lowest address to the highest address at 128-bit increments for the 128-bit
|
||||
GUID value that matches Guid. If a match is found, then a pointer to the matching
|
||||
GUID in the target buffer is returned. If no match is found, then NULL is returned.
|
||||
If Length is 0, then NULL is returned.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Buffer is not aligned on a 32-bit boundary, then ASSERT().
|
||||
If Length is not aligned on a 128-bit boundary, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to scan.
|
||||
@param Length The number of bytes in Buffer to scan.
|
||||
@param Guid The value to search for in the target buffer.
|
||||
|
||||
@return A pointer to the matching Guid in the target buffer, otherwise NULL.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ScanGuid (
|
||||
IN CONST VOID *Buffer,
|
||||
IN UINTN Length,
|
||||
IN CONST GUID *Guid
|
||||
);
|
||||
|
||||
/**
|
||||
Checks if the given GUID is a zero GUID.
|
||||
|
||||
This function checks whether the given GUID is a zero GUID. If the GUID is
|
||||
identical to a zero GUID then TRUE is returned. Otherwise, FALSE is returned.
|
||||
|
||||
If Guid is NULL, then ASSERT().
|
||||
|
||||
@param Guid The pointer to a 128 bit GUID.
|
||||
|
||||
@retval TRUE Guid is a zero GUID.
|
||||
@retval FALSE Guid is not a zero GUID.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsZeroGuid (
|
||||
IN CONST GUID *Guid
|
||||
);
|
||||
|
||||
/**
|
||||
Checks if the contents of a buffer are all zeros.
|
||||
|
||||
This function checks whether the contents of a buffer are all zeros. If the
|
||||
contents are all zeros, return TRUE. Otherwise, return FALSE.
|
||||
|
||||
If Length > 0 and Buffer is NULL, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the buffer to be checked.
|
||||
@param Length The size of the buffer (in bytes) to be checked.
|
||||
|
||||
@retval TRUE Contents of the buffer are all zeros.
|
||||
@retval FALSE Contents of the buffer are not all zeros.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsZeroBuffer (
|
||||
IN CONST VOID *Buffer,
|
||||
IN UINTN Length
|
||||
);
|
||||
|
||||
#endif
|
529
sys/contrib/edk2/Include/Library/DebugLib.h
Normal file
529
sys/contrib/edk2/Include/Library/DebugLib.h
Normal file
@ -0,0 +1,529 @@
|
||||
/** @file
|
||||
Provides services to print debug and assert messages to a debug output device.
|
||||
|
||||
The Debug library supports debug print and asserts based on a combination of macros and code.
|
||||
The debug library can be turned on and off so that the debug code does not increase the size of an image.
|
||||
|
||||
Note that a reserved macro named MDEPKG_NDEBUG is introduced for the intention
|
||||
of size reduction when compiler optimization is disabled. If MDEPKG_NDEBUG is
|
||||
defined, then debug and assert related macros wrapped by it are the NULL implementations.
|
||||
|
||||
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __DEBUG_LIB_H__
|
||||
#define __DEBUG_LIB_H__
|
||||
|
||||
//
|
||||
// Declare bits for PcdDebugPropertyMask
|
||||
//
|
||||
#define DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED 0x01
|
||||
#define DEBUG_PROPERTY_DEBUG_PRINT_ENABLED 0x02
|
||||
#define DEBUG_PROPERTY_DEBUG_CODE_ENABLED 0x04
|
||||
#define DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED 0x08
|
||||
#define DEBUG_PROPERTY_ASSERT_BREAKPOINT_ENABLED 0x10
|
||||
#define DEBUG_PROPERTY_ASSERT_DEADLOOP_ENABLED 0x20
|
||||
|
||||
//
|
||||
// Declare bits for PcdDebugPrintErrorLevel and the ErrorLevel parameter of DebugPrint()
|
||||
//
|
||||
#define DEBUG_INIT 0x00000001 // Initialization
|
||||
#define DEBUG_WARN 0x00000002 // Warnings
|
||||
#define DEBUG_LOAD 0x00000004 // Load events
|
||||
#define DEBUG_FS 0x00000008 // EFI File system
|
||||
#define DEBUG_POOL 0x00000010 // Alloc & Free (pool)
|
||||
#define DEBUG_PAGE 0x00000020 // Alloc & Free (page)
|
||||
#define DEBUG_INFO 0x00000040 // Informational debug messages
|
||||
#define DEBUG_DISPATCH 0x00000080 // PEI/DXE/SMM Dispatchers
|
||||
#define DEBUG_VARIABLE 0x00000100 // Variable
|
||||
#define DEBUG_BM 0x00000400 // Boot Manager
|
||||
#define DEBUG_BLKIO 0x00001000 // BlkIo Driver
|
||||
#define DEBUG_NET 0x00004000 // Network Io Driver
|
||||
#define DEBUG_UNDI 0x00010000 // UNDI Driver
|
||||
#define DEBUG_LOADFILE 0x00020000 // LoadFile
|
||||
#define DEBUG_EVENT 0x00080000 // Event messages
|
||||
#define DEBUG_GCD 0x00100000 // Global Coherency Database changes
|
||||
#define DEBUG_CACHE 0x00200000 // Memory range cachability changes
|
||||
#define DEBUG_VERBOSE 0x00400000 // Detailed debug messages that may
|
||||
// significantly impact boot performance
|
||||
#define DEBUG_ERROR 0x80000000 // Error
|
||||
|
||||
//
|
||||
// Aliases of debug message mask bits
|
||||
//
|
||||
#define EFI_D_INIT DEBUG_INIT
|
||||
#define EFI_D_WARN DEBUG_WARN
|
||||
#define EFI_D_LOAD DEBUG_LOAD
|
||||
#define EFI_D_FS DEBUG_FS
|
||||
#define EFI_D_POOL DEBUG_POOL
|
||||
#define EFI_D_PAGE DEBUG_PAGE
|
||||
#define EFI_D_INFO DEBUG_INFO
|
||||
#define EFI_D_DISPATCH DEBUG_DISPATCH
|
||||
#define EFI_D_VARIABLE DEBUG_VARIABLE
|
||||
#define EFI_D_BM DEBUG_BM
|
||||
#define EFI_D_BLKIO DEBUG_BLKIO
|
||||
#define EFI_D_NET DEBUG_NET
|
||||
#define EFI_D_UNDI DEBUG_UNDI
|
||||
#define EFI_D_LOADFILE DEBUG_LOADFILE
|
||||
#define EFI_D_EVENT DEBUG_EVENT
|
||||
#define EFI_D_VERBOSE DEBUG_VERBOSE
|
||||
#define EFI_D_ERROR DEBUG_ERROR
|
||||
|
||||
/**
|
||||
Prints a debug message to the debug output device if the specified error level is enabled.
|
||||
|
||||
If any bit in ErrorLevel is also set in DebugPrintErrorLevelLib function
|
||||
GetDebugPrintErrorLevel (), then print the message specified by Format and the
|
||||
associated variable argument list to the debug output device.
|
||||
|
||||
If Format is NULL, then ASSERT().
|
||||
|
||||
@param ErrorLevel The error level of the debug message.
|
||||
@param Format The format string for the debug message to print.
|
||||
@param ... The variable argument list whose contents are accessed
|
||||
based on the format string specified by Format.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
DebugPrint (
|
||||
IN UINTN ErrorLevel,
|
||||
IN CONST CHAR8 *Format,
|
||||
...
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Prints an assert message containing a filename, line number, and description.
|
||||
This may be followed by a breakpoint or a dead loop.
|
||||
|
||||
Print a message of the form "ASSERT <FileName>(<LineNumber>): <Description>\n"
|
||||
to the debug output device. If DEBUG_PROPERTY_ASSERT_BREAKPOINT_ENABLED bit of
|
||||
PcdDebugProperyMask is set then CpuBreakpoint() is called. Otherwise, if
|
||||
DEBUG_PROPERTY_ASSERT_DEADLOOP_ENABLED bit of PcdDebugProperyMask is set then
|
||||
CpuDeadLoop() is called. If neither of these bits are set, then this function
|
||||
returns immediately after the message is printed to the debug output device.
|
||||
DebugAssert() must actively prevent recursion. If DebugAssert() is called while
|
||||
processing another DebugAssert(), then DebugAssert() must return immediately.
|
||||
|
||||
If FileName is NULL, then a <FileName> string of "(NULL) Filename" is printed.
|
||||
If Description is NULL, then a <Description> string of "(NULL) Description" is printed.
|
||||
|
||||
@param FileName The pointer to the name of the source file that generated the assert condition.
|
||||
@param LineNumber The line number in the source file that generated the assert condition
|
||||
@param Description The pointer to the description of the assert condition.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
DebugAssert (
|
||||
IN CONST CHAR8 *FileName,
|
||||
IN UINTN LineNumber,
|
||||
IN CONST CHAR8 *Description
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Fills a target buffer with PcdDebugClearMemoryValue, and returns the target buffer.
|
||||
|
||||
This function fills Length bytes of Buffer with the value specified by
|
||||
PcdDebugClearMemoryValue, and returns Buffer.
|
||||
|
||||
If Buffer is NULL, then ASSERT().
|
||||
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the target buffer to be filled with PcdDebugClearMemoryValue.
|
||||
@param Length The number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue.
|
||||
|
||||
@return Buffer The pointer to the target buffer filled with PcdDebugClearMemoryValue.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
DebugClearMemory (
|
||||
OUT VOID *Buffer,
|
||||
IN UINTN Length
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Returns TRUE if ASSERT() macros are enabled.
|
||||
|
||||
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit of
|
||||
PcdDebugProperyMask is set. Otherwise, FALSE is returned.
|
||||
|
||||
@retval TRUE The DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit of PcdDebugProperyMask is set.
|
||||
@retval FALSE The DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit of PcdDebugProperyMask is clear.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
DebugAssertEnabled (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Returns TRUE if DEBUG() macros are enabled.
|
||||
|
||||
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_PRINT_ENABLED bit of
|
||||
PcdDebugProperyMask is set. Otherwise, FALSE is returned.
|
||||
|
||||
@retval TRUE The DEBUG_PROPERTY_DEBUG_PRINT_ENABLED bit of PcdDebugProperyMask is set.
|
||||
@retval FALSE The DEBUG_PROPERTY_DEBUG_PRINT_ENABLED bit of PcdDebugProperyMask is clear.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
DebugPrintEnabled (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Returns TRUE if DEBUG_CODE() macros are enabled.
|
||||
|
||||
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of
|
||||
PcdDebugProperyMask is set. Otherwise, FALSE is returned.
|
||||
|
||||
@retval TRUE The DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is set.
|
||||
@retval FALSE The DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is clear.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
DebugCodeEnabled (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Returns TRUE if DEBUG_CLEAR_MEMORY() macro is enabled.
|
||||
|
||||
This function returns TRUE if the DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED bit of
|
||||
PcdDebugProperyMask is set. Otherwise, FALSE is returned.
|
||||
|
||||
@retval TRUE The DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED bit of PcdDebugProperyMask is set.
|
||||
@retval FALSE The DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED bit of PcdDebugProperyMask is clear.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
DebugClearMemoryEnabled (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Returns TRUE if any one of the bit is set both in ErrorLevel and PcdFixedDebugPrintErrorLevel.
|
||||
|
||||
This function compares the bit mask of ErrorLevel and PcdFixedDebugPrintErrorLevel.
|
||||
|
||||
@retval TRUE Current ErrorLevel is supported.
|
||||
@retval FALSE Current ErrorLevel is not supported.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
DebugPrintLevelEnabled (
|
||||
IN CONST UINTN ErrorLevel
|
||||
);
|
||||
|
||||
/**
|
||||
Internal worker macro that calls DebugAssert().
|
||||
|
||||
This macro calls DebugAssert(), passing in the filename, line number, and an
|
||||
expression that evaluated to FALSE.
|
||||
|
||||
@param Expression Boolean expression that evaluated to FALSE
|
||||
|
||||
**/
|
||||
#define _ASSERT(Expression) DebugAssert (__FILE__, __LINE__, #Expression)
|
||||
|
||||
|
||||
/**
|
||||
Internal worker macro that calls DebugPrint().
|
||||
|
||||
This macro calls DebugPrint() passing in the debug error level, a format
|
||||
string, and a variable argument list.
|
||||
__VA_ARGS__ is not supported by EBC compiler, Microsoft Visual Studio .NET 2003
|
||||
and Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830.
|
||||
|
||||
@param Expression Expression containing an error level, a format string,
|
||||
and a variable argument list based on the format string.
|
||||
|
||||
**/
|
||||
|
||||
#if !defined(MDE_CPU_EBC) && (!defined (_MSC_VER) || _MSC_VER > 1400)
|
||||
#define _DEBUG_PRINT(PrintLevel, ...) \
|
||||
do { \
|
||||
if (DebugPrintLevelEnabled (PrintLevel)) { \
|
||||
DebugPrint (PrintLevel, ##__VA_ARGS__); \
|
||||
} \
|
||||
} while (FALSE)
|
||||
#define _DEBUG(Expression) _DEBUG_PRINT Expression
|
||||
#else
|
||||
#define _DEBUG(Expression) DebugPrint Expression
|
||||
#endif
|
||||
|
||||
/**
|
||||
Macro that calls DebugAssert() if an expression evaluates to FALSE.
|
||||
|
||||
If MDEPKG_NDEBUG is not defined and the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED
|
||||
bit of PcdDebugProperyMask is set, then this macro evaluates the Boolean
|
||||
expression specified by Expression. If Expression evaluates to FALSE, then
|
||||
DebugAssert() is called passing in the source filename, source line number,
|
||||
and Expression.
|
||||
|
||||
@param Expression Boolean expression.
|
||||
|
||||
**/
|
||||
#if !defined(MDEPKG_NDEBUG)
|
||||
#define ASSERT(Expression) \
|
||||
do { \
|
||||
if (DebugAssertEnabled ()) { \
|
||||
if (!(Expression)) { \
|
||||
_ASSERT (Expression); \
|
||||
ANALYZER_UNREACHABLE (); \
|
||||
} \
|
||||
} \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define ASSERT(Expression)
|
||||
#endif
|
||||
|
||||
/**
|
||||
Macro that calls DebugPrint().
|
||||
|
||||
If MDEPKG_NDEBUG is not defined and the DEBUG_PROPERTY_DEBUG_PRINT_ENABLED
|
||||
bit of PcdDebugProperyMask is set, then this macro passes Expression to
|
||||
DebugPrint().
|
||||
|
||||
@param Expression Expression containing an error level, a format string,
|
||||
and a variable argument list based on the format string.
|
||||
|
||||
|
||||
**/
|
||||
#if !defined(MDEPKG_NDEBUG)
|
||||
#define DEBUG(Expression) \
|
||||
do { \
|
||||
if (DebugPrintEnabled ()) { \
|
||||
_DEBUG (Expression); \
|
||||
} \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define DEBUG(Expression)
|
||||
#endif
|
||||
|
||||
/**
|
||||
Macro that calls DebugAssert() if an EFI_STATUS evaluates to an error code.
|
||||
|
||||
If MDEPKG_NDEBUG is not defined and the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED
|
||||
bit of PcdDebugProperyMask is set, then this macro evaluates the EFI_STATUS
|
||||
value specified by StatusParameter. If StatusParameter is an error code,
|
||||
then DebugAssert() is called passing in the source filename, source line
|
||||
number, and StatusParameter.
|
||||
|
||||
@param StatusParameter EFI_STATUS value to evaluate.
|
||||
|
||||
**/
|
||||
#if !defined(MDEPKG_NDEBUG)
|
||||
#define ASSERT_EFI_ERROR(StatusParameter) \
|
||||
do { \
|
||||
if (DebugAssertEnabled ()) { \
|
||||
if (EFI_ERROR (StatusParameter)) { \
|
||||
DEBUG ((EFI_D_ERROR, "\nASSERT_EFI_ERROR (Status = %r)\n", StatusParameter)); \
|
||||
_ASSERT (!EFI_ERROR (StatusParameter)); \
|
||||
} \
|
||||
} \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define ASSERT_EFI_ERROR(StatusParameter)
|
||||
#endif
|
||||
|
||||
/**
|
||||
Macro that calls DebugAssert() if a RETURN_STATUS evaluates to an error code.
|
||||
|
||||
If MDEPKG_NDEBUG is not defined and the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED
|
||||
bit of PcdDebugProperyMask is set, then this macro evaluates the
|
||||
RETURN_STATUS value specified by StatusParameter. If StatusParameter is an
|
||||
error code, then DebugAssert() is called passing in the source filename,
|
||||
source line number, and StatusParameter.
|
||||
|
||||
@param StatusParameter RETURN_STATUS value to evaluate.
|
||||
|
||||
**/
|
||||
#if !defined(MDEPKG_NDEBUG)
|
||||
#define ASSERT_RETURN_ERROR(StatusParameter) \
|
||||
do { \
|
||||
if (DebugAssertEnabled ()) { \
|
||||
if (RETURN_ERROR (StatusParameter)) { \
|
||||
DEBUG ((DEBUG_ERROR, "\nASSERT_RETURN_ERROR (Status = %r)\n", \
|
||||
StatusParameter)); \
|
||||
_ASSERT (!RETURN_ERROR (StatusParameter)); \
|
||||
} \
|
||||
} \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define ASSERT_RETURN_ERROR(StatusParameter)
|
||||
#endif
|
||||
|
||||
/**
|
||||
Macro that calls DebugAssert() if a protocol is already installed in the
|
||||
handle database.
|
||||
|
||||
If MDEPKG_NDEBUG is defined or the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit
|
||||
of PcdDebugProperyMask is clear, then return.
|
||||
|
||||
If Handle is NULL, then a check is made to see if the protocol specified by Guid
|
||||
is present on any handle in the handle database. If Handle is not NULL, then
|
||||
a check is made to see if the protocol specified by Guid is present on the
|
||||
handle specified by Handle. If the check finds the protocol, then DebugAssert()
|
||||
is called passing in the source filename, source line number, and Guid.
|
||||
|
||||
If Guid is NULL, then ASSERT().
|
||||
|
||||
@param Handle The handle to check for the protocol. This is an optional
|
||||
parameter that may be NULL. If it is NULL, then the entire
|
||||
handle database is searched.
|
||||
|
||||
@param Guid The pointer to a protocol GUID.
|
||||
|
||||
**/
|
||||
#if !defined(MDEPKG_NDEBUG)
|
||||
#define ASSERT_PROTOCOL_ALREADY_INSTALLED(Handle, Guid) \
|
||||
do { \
|
||||
if (DebugAssertEnabled ()) { \
|
||||
VOID *Instance; \
|
||||
ASSERT (Guid != NULL); \
|
||||
if (Handle == NULL) { \
|
||||
if (!EFI_ERROR (gBS->LocateProtocol ((EFI_GUID *)Guid, NULL, &Instance))) { \
|
||||
_ASSERT (Guid already installed in database); \
|
||||
} \
|
||||
} else { \
|
||||
if (!EFI_ERROR (gBS->HandleProtocol (Handle, (EFI_GUID *)Guid, &Instance))) { \
|
||||
_ASSERT (Guid already installed on Handle); \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
} while (FALSE)
|
||||
#else
|
||||
#define ASSERT_PROTOCOL_ALREADY_INSTALLED(Handle, Guid)
|
||||
#endif
|
||||
|
||||
/**
|
||||
Macro that marks the beginning of debug source code.
|
||||
|
||||
If the DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is set,
|
||||
then this macro marks the beginning of source code that is included in a module.
|
||||
Otherwise, the source lines between DEBUG_CODE_BEGIN() and DEBUG_CODE_END()
|
||||
are not included in a module.
|
||||
|
||||
**/
|
||||
#define DEBUG_CODE_BEGIN() do { if (DebugCodeEnabled ()) { UINT8 __DebugCodeLocal
|
||||
|
||||
|
||||
/**
|
||||
The macro that marks the end of debug source code.
|
||||
|
||||
If the DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is set,
|
||||
then this macro marks the end of source code that is included in a module.
|
||||
Otherwise, the source lines between DEBUG_CODE_BEGIN() and DEBUG_CODE_END()
|
||||
are not included in a module.
|
||||
|
||||
**/
|
||||
#define DEBUG_CODE_END() __DebugCodeLocal = 0; __DebugCodeLocal++; } } while (FALSE)
|
||||
|
||||
|
||||
/**
|
||||
The macro that declares a section of debug source code.
|
||||
|
||||
If the DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is set,
|
||||
then the source code specified by Expression is included in a module.
|
||||
Otherwise, the source specified by Expression is not included in a module.
|
||||
|
||||
**/
|
||||
#define DEBUG_CODE(Expression) \
|
||||
DEBUG_CODE_BEGIN (); \
|
||||
Expression \
|
||||
DEBUG_CODE_END ()
|
||||
|
||||
|
||||
/**
|
||||
The macro that calls DebugClearMemory() to clear a buffer to a default value.
|
||||
|
||||
If the DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED bit of PcdDebugProperyMask is set,
|
||||
then this macro calls DebugClearMemory() passing in Address and Length.
|
||||
|
||||
@param Address The pointer to a buffer.
|
||||
@param Length The number of bytes in the buffer to set.
|
||||
|
||||
**/
|
||||
#define DEBUG_CLEAR_MEMORY(Address, Length) \
|
||||
do { \
|
||||
if (DebugClearMemoryEnabled ()) { \
|
||||
DebugClearMemory (Address, Length); \
|
||||
} \
|
||||
} while (FALSE)
|
||||
|
||||
|
||||
/**
|
||||
Macro that calls DebugAssert() if the containing record does not have a
|
||||
matching signature. If the signatures matches, then a pointer to the data
|
||||
structure that contains a specified field of that data structure is returned.
|
||||
This is a lightweight method hide information by placing a public data
|
||||
structure inside a larger private data structure and using a pointer to the
|
||||
public data structure to retrieve a pointer to the private data structure.
|
||||
|
||||
If MDEPKG_NDEBUG is defined or the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit
|
||||
of PcdDebugProperyMask is clear, then this macro computes the offset, in bytes,
|
||||
of the field specified by Field from the beginning of the data structure specified
|
||||
by TYPE. This offset is subtracted from Record, and is used to return a pointer
|
||||
to a data structure of the type specified by TYPE.
|
||||
|
||||
If MDEPKG_NDEBUG is not defined and the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit
|
||||
of PcdDebugProperyMask is set, then this macro computes the offset, in bytes,
|
||||
of field specified by Field from the beginning of the data structure specified
|
||||
by TYPE. This offset is subtracted from Record, and is used to compute a pointer
|
||||
to a data structure of the type specified by TYPE. The Signature field of the
|
||||
data structure specified by TYPE is compared to TestSignature. If the signatures
|
||||
match, then a pointer to the pointer to a data structure of the type specified by
|
||||
TYPE is returned. If the signatures do not match, then DebugAssert() is called
|
||||
with a description of "CR has a bad signature" and Record is returned.
|
||||
|
||||
If the data type specified by TYPE does not contain the field specified by Field,
|
||||
then the module will not compile.
|
||||
|
||||
If TYPE does not contain a field called Signature, then the module will not
|
||||
compile.
|
||||
|
||||
@param Record The pointer to the field specified by Field within a data
|
||||
structure of type TYPE.
|
||||
|
||||
@param TYPE The name of the data structure type to return This
|
||||
data structure must contain the field specified by Field.
|
||||
|
||||
@param Field The name of the field in the data structure specified
|
||||
by TYPE to which Record points.
|
||||
|
||||
@param TestSignature The 32-bit signature value to match.
|
||||
|
||||
**/
|
||||
#if !defined(MDEPKG_NDEBUG)
|
||||
#define CR(Record, TYPE, Field, TestSignature) \
|
||||
(DebugAssertEnabled () && (BASE_CR (Record, TYPE, Field)->Signature != TestSignature)) ? \
|
||||
(TYPE *) (_ASSERT (CR has Bad Signature), Record) : \
|
||||
BASE_CR (Record, TYPE, Field)
|
||||
#else
|
||||
#define CR(Record, TYPE, Field, TestSignature) \
|
||||
BASE_CR (Record, TYPE, Field)
|
||||
#endif
|
||||
|
||||
#endif
|
566
sys/contrib/edk2/Include/Library/DevicePathLib.h
Normal file
566
sys/contrib/edk2/Include/Library/DevicePathLib.h
Normal file
@ -0,0 +1,566 @@
|
||||
/** @file
|
||||
Provides library functions to construct and parse UEFI Device Paths.
|
||||
|
||||
This library provides defines, macros, and functions to help create and parse
|
||||
EFI_DEVICE_PATH_PROTOCOL structures.
|
||||
|
||||
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __DEVICE_PATH_LIB_H__
|
||||
#define __DEVICE_PATH_LIB_H__
|
||||
|
||||
#define END_DEVICE_PATH_LENGTH (sizeof (EFI_DEVICE_PATH_PROTOCOL))
|
||||
|
||||
/**
|
||||
Determine whether a given device path is valid.
|
||||
If DevicePath is NULL, then ASSERT().
|
||||
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
@param MaxSize The maximum size of the device path data structure.
|
||||
|
||||
@retval TRUE DevicePath is valid.
|
||||
@retval FALSE The length of any node node in the DevicePath is less
|
||||
than sizeof (EFI_DEVICE_PATH_PROTOCOL).
|
||||
@retval FALSE If MaxSize is not zero, the size of the DevicePath
|
||||
exceeds MaxSize.
|
||||
@retval FALSE If PcdMaximumDevicePathNodeCount is not zero, the node
|
||||
count of the DevicePath exceeds PcdMaximumDevicePathNodeCount.
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsDevicePathValid (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN UINTN MaxSize
|
||||
);
|
||||
|
||||
/**
|
||||
Returns the Type field of a device path node.
|
||||
|
||||
Returns the Type field of the device path node specified by Node.
|
||||
|
||||
If Node is NULL, then ASSERT().
|
||||
|
||||
@param Node A pointer to a device path node data structure.
|
||||
|
||||
@return The Type field of the device path node specified by Node.
|
||||
|
||||
**/
|
||||
UINT8
|
||||
EFIAPI
|
||||
DevicePathType (
|
||||
IN CONST VOID *Node
|
||||
);
|
||||
|
||||
/**
|
||||
Returns the SubType field of a device path node.
|
||||
|
||||
Returns the SubType field of the device path node specified by Node.
|
||||
|
||||
If Node is NULL, then ASSERT().
|
||||
|
||||
@param Node A pointer to a device path node data structure.
|
||||
|
||||
@return The SubType field of the device path node specified by Node.
|
||||
|
||||
**/
|
||||
UINT8
|
||||
EFIAPI
|
||||
DevicePathSubType (
|
||||
IN CONST VOID *Node
|
||||
);
|
||||
|
||||
/**
|
||||
Returns the 16-bit Length field of a device path node.
|
||||
|
||||
Returns the 16-bit Length field of the device path node specified by Node.
|
||||
Node is not required to be aligned on a 16-bit boundary, so it is recommended
|
||||
that a function such as ReadUnaligned16() be used to extract the contents of
|
||||
the Length field.
|
||||
|
||||
If Node is NULL, then ASSERT().
|
||||
|
||||
@param Node A pointer to a device path node data structure.
|
||||
|
||||
@return The 16-bit Length field of the device path node specified by Node.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
DevicePathNodeLength (
|
||||
IN CONST VOID *Node
|
||||
);
|
||||
|
||||
/**
|
||||
Returns a pointer to the next node in a device path.
|
||||
|
||||
Returns a pointer to the device path node that follows the device path node specified by Node.
|
||||
|
||||
If Node is NULL, then ASSERT().
|
||||
|
||||
@param Node A pointer to a device path node data structure.
|
||||
|
||||
@return a pointer to the device path node that follows the device path node specified by Node.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
NextDevicePathNode (
|
||||
IN CONST VOID *Node
|
||||
);
|
||||
|
||||
/**
|
||||
Determines if a device path node is an end node of a device path.
|
||||
This includes nodes that are the end of a device path instance and nodes that
|
||||
are the end of an entire device path.
|
||||
|
||||
Determines if the device path node specified by Node is an end node of a device path.
|
||||
This includes nodes that are the end of a device path instance and nodes that are the
|
||||
end of an entire device path. If Node represents an end node of a device path,
|
||||
then TRUE is returned. Otherwise, FALSE is returned.
|
||||
|
||||
If Node is NULL, then ASSERT().
|
||||
|
||||
@param Node A pointer to a device path node data structure.
|
||||
|
||||
@retval TRUE The device path node specified by Node is an end node of a device path.
|
||||
@retval FALSE The device path node specified by Node is not an end node of a device path.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsDevicePathEndType (
|
||||
IN CONST VOID *Node
|
||||
);
|
||||
|
||||
/**
|
||||
Determines if a device path node is an end node of an entire device path.
|
||||
|
||||
Determines if a device path node specified by Node is an end node of an entire device path.
|
||||
If Node represents the end of an entire device path, then TRUE is returned.
|
||||
Otherwise, FALSE is returned.
|
||||
|
||||
If Node is NULL, then ASSERT().
|
||||
|
||||
@param Node A pointer to a device path node data structure.
|
||||
|
||||
@retval TRUE The device path node specified by Node is the end of an entire device path.
|
||||
@retval FALSE The device path node specified by Node is not the end of an entire device path.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsDevicePathEnd (
|
||||
IN CONST VOID *Node
|
||||
);
|
||||
|
||||
/**
|
||||
Determines if a device path node is an end node of a device path instance.
|
||||
|
||||
Determines if a device path node specified by Node is an end node of a device path instance.
|
||||
If Node represents the end of a device path instance, then TRUE is returned.
|
||||
Otherwise, FALSE is returned.
|
||||
|
||||
If Node is NULL, then ASSERT().
|
||||
|
||||
@param Node A pointer to a device path node data structure.
|
||||
|
||||
@retval TRUE The device path node specified by Node is the end of a device path instance.
|
||||
@retval FALSE The device path node specified by Node is not the end of a device path instance.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsDevicePathEndInstance (
|
||||
IN CONST VOID *Node
|
||||
);
|
||||
|
||||
/**
|
||||
Sets the length, in bytes, of a device path node.
|
||||
|
||||
Sets the length of the device path node specified by Node to the value specified
|
||||
by NodeLength. NodeLength is returned. Node is not required to be aligned on
|
||||
a 16-bit boundary, so it is recommended that a function such as WriteUnaligned16()
|
||||
be used to set the contents of the Length field.
|
||||
|
||||
If Node is NULL, then ASSERT().
|
||||
If NodeLength >= 0x10000, then ASSERT().
|
||||
If NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL), then ASSERT().
|
||||
|
||||
@param Node A pointer to a device path node data structure.
|
||||
@param Length The length, in bytes, of the device path node.
|
||||
|
||||
@return Length
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
SetDevicePathNodeLength (
|
||||
IN OUT VOID *Node,
|
||||
IN UINTN Length
|
||||
);
|
||||
|
||||
/**
|
||||
Fills in all the fields of a device path node that is the end of an entire device path.
|
||||
|
||||
Fills in all the fields of a device path node specified by Node so Node represents
|
||||
the end of an entire device path. The Type field of Node is set to
|
||||
END_DEVICE_PATH_TYPE, the SubType field of Node is set to
|
||||
END_ENTIRE_DEVICE_PATH_SUBTYPE, and the Length field of Node is set to
|
||||
END_DEVICE_PATH_LENGTH. Node is not required to be aligned on a 16-bit boundary,
|
||||
so it is recommended that a function such as WriteUnaligned16() be used to set
|
||||
the contents of the Length field.
|
||||
|
||||
If Node is NULL, then ASSERT().
|
||||
|
||||
@param Node A pointer to a device path node data structure.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
SetDevicePathEndNode (
|
||||
OUT VOID *Node
|
||||
);
|
||||
|
||||
/**
|
||||
Returns the size of a device path in bytes.
|
||||
|
||||
This function returns the size, in bytes, of the device path data structure
|
||||
specified by DevicePath including the end of device path node.
|
||||
If DevicePath is NULL or invalid, then 0 is returned.
|
||||
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
|
||||
@retval 0 If DevicePath is NULL or invalid.
|
||||
@retval Others The size of a device path in bytes.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
GetDevicePathSize (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a new copy of an existing device path.
|
||||
|
||||
This function allocates space for a new copy of the device path specified by DevicePath. If
|
||||
DevicePath is NULL, then NULL is returned. If the memory is successfully allocated, then the
|
||||
contents of DevicePath are copied to the newly allocated buffer, and a pointer to that buffer
|
||||
is returned. Otherwise, NULL is returned.
|
||||
The memory for the new device path is allocated from EFI boot services memory.
|
||||
It is the responsibility of the caller to free the memory allocated.
|
||||
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
|
||||
@retval NULL DevicePath is NULL or invalid.
|
||||
@retval Others A pointer to the duplicated device path.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
DuplicateDevicePath (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a new device path by appending a second device path to a first device path.
|
||||
|
||||
This function creates a new device path by appending a copy of SecondDevicePath to a copy of
|
||||
FirstDevicePath in a newly allocated buffer. Only the end-of-device-path device node from
|
||||
SecondDevicePath is retained. The newly created device path is returned.
|
||||
If FirstDevicePath is NULL, then it is ignored, and a duplicate of SecondDevicePath is returned.
|
||||
If SecondDevicePath is NULL, then it is ignored, and a duplicate of FirstDevicePath is returned.
|
||||
If both FirstDevicePath and SecondDevicePath are NULL, then a copy of an end-of-device-path is
|
||||
returned.
|
||||
If there is not enough memory for the newly allocated buffer, then NULL is returned.
|
||||
The memory for the new device path is allocated from EFI boot services memory. It is the
|
||||
responsibility of the caller to free the memory allocated.
|
||||
|
||||
@param FirstDevicePath A pointer to a device path data structure.
|
||||
@param SecondDevicePath A pointer to a device path data structure.
|
||||
|
||||
@retval NULL If there is not enough memory for the newly allocated buffer.
|
||||
@retval NULL If FirstDevicePath or SecondDevicePath is invalid.
|
||||
@retval Others A pointer to the new device path if success.
|
||||
Or a copy an end-of-device-path if both FirstDevicePath and SecondDevicePath are NULL.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
AppendDevicePath (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *FirstDevicePath, OPTIONAL
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *SecondDevicePath OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a new path by appending the device node to the device path.
|
||||
|
||||
This function creates a new device path by appending a copy of the device node specified by
|
||||
DevicePathNode to a copy of the device path specified by DevicePath in an allocated buffer.
|
||||
The end-of-device-path device node is moved after the end of the appended device node.
|
||||
If DevicePathNode is NULL then a copy of DevicePath is returned.
|
||||
If DevicePath is NULL then a copy of DevicePathNode, followed by an end-of-device path device
|
||||
node is returned.
|
||||
If both DevicePathNode and DevicePath are NULL then a copy of an end-of-device-path device node
|
||||
is returned.
|
||||
If there is not enough memory to allocate space for the new device path, then NULL is returned.
|
||||
The memory is allocated from EFI boot services memory. It is the responsibility of the caller to
|
||||
free the memory allocated.
|
||||
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
@param DevicePathNode A pointer to a single device path node.
|
||||
|
||||
@retval NULL There is not enough memory for the new device path.
|
||||
@retval Others A pointer to the new device path if success.
|
||||
A copy of DevicePathNode followed by an end-of-device-path node
|
||||
if both FirstDevicePath and SecondDevicePath are NULL.
|
||||
A copy of an end-of-device-path node if both FirstDevicePath and SecondDevicePath are NULL.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
AppendDevicePathNode (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, OPTIONAL
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a new device path by appending the specified device path instance to the specified device
|
||||
path.
|
||||
|
||||
This function creates a new device path by appending a copy of the device path instance specified
|
||||
by DevicePathInstance to a copy of the device path secified by DevicePath in a allocated buffer.
|
||||
The end-of-device-path device node is moved after the end of the appended device path instance
|
||||
and a new end-of-device-path-instance node is inserted between.
|
||||
If DevicePath is NULL, then a copy if DevicePathInstance is returned.
|
||||
If DevicePathInstance is NULL, then NULL is returned.
|
||||
If DevicePath or DevicePathInstance is invalid, then NULL is returned.
|
||||
If there is not enough memory to allocate space for the new device path, then NULL is returned.
|
||||
The memory is allocated from EFI boot services memory. It is the responsibility of the caller to
|
||||
free the memory allocated.
|
||||
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
@param DevicePathInstance A pointer to a device path instance.
|
||||
|
||||
@return A pointer to the new device path.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
AppendDevicePathInstance (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, OPTIONAL
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a copy of the current device path instance and returns a pointer to the next device path
|
||||
instance.
|
||||
|
||||
This function creates a copy of the current device path instance. It also updates DevicePath to
|
||||
point to the next device path instance in the device path (or NULL if no more) and updates Size
|
||||
to hold the size of the device path instance copy.
|
||||
If DevicePath is NULL, then NULL is returned.
|
||||
If DevicePath points to a invalid device path, then NULL is returned.
|
||||
If there is not enough memory to allocate space for the new device path, then NULL is returned.
|
||||
The memory is allocated from EFI boot services memory. It is the responsibility of the caller to
|
||||
free the memory allocated.
|
||||
If Size is NULL, then ASSERT().
|
||||
|
||||
@param DevicePath On input, this holds the pointer to the current device path
|
||||
instance. On output, this holds the pointer to the next device
|
||||
path instance or NULL if there are no more device path
|
||||
instances in the device path pointer to a device path data
|
||||
structure.
|
||||
@param Size On output, this holds the size of the device path instance, in
|
||||
bytes or zero, if DevicePath is NULL.
|
||||
|
||||
@return A pointer to the current device path instance.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
GetNextDevicePathInstance (
|
||||
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
|
||||
OUT UINTN *Size
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a device node.
|
||||
|
||||
This function creates a new device node in a newly allocated buffer of size NodeLength and
|
||||
initializes the device path node header with NodeType and NodeSubType. The new device path node
|
||||
is returned.
|
||||
If NodeLength is smaller than a device path header, then NULL is returned.
|
||||
If there is not enough memory to allocate space for the new device path, then NULL is returned.
|
||||
The memory is allocated from EFI boot services memory. It is the responsibility of the caller to
|
||||
free the memory allocated.
|
||||
|
||||
@param NodeType The device node type for the new device node.
|
||||
@param NodeSubType The device node sub-type for the new device node.
|
||||
@param NodeLength The length of the new device node.
|
||||
|
||||
@return The new device path.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
CreateDeviceNode (
|
||||
IN UINT8 NodeType,
|
||||
IN UINT8 NodeSubType,
|
||||
IN UINT16 NodeLength
|
||||
);
|
||||
|
||||
/**
|
||||
Determines if a device path is single or multi-instance.
|
||||
|
||||
This function returns TRUE if the device path specified by DevicePath is multi-instance.
|
||||
Otherwise, FALSE is returned.
|
||||
If DevicePath is NULL or invalid, then FALSE is returned.
|
||||
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
|
||||
@retval TRUE DevicePath is multi-instance.
|
||||
@retval FALSE DevicePath is not multi-instance, or DevicePath is NULL or invalid.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
IsDevicePathMultiInstance (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieves the device path protocol from a handle.
|
||||
|
||||
This function returns the device path protocol from the handle specified by Handle. If Handle is
|
||||
NULL or Handle does not contain a device path protocol, then NULL is returned.
|
||||
|
||||
@param Handle The handle from which to retrieve the device path protocol.
|
||||
|
||||
@return The device path protocol from the handle specified by Handle.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
DevicePathFromHandle (
|
||||
IN EFI_HANDLE Handle
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates a device path for a file and appends it to an existing device path.
|
||||
|
||||
If Device is a valid device handle that contains a device path protocol, then a device path for
|
||||
the file specified by FileName is allocated and appended to the device path associated with the
|
||||
handle Device. The allocated device path is returned. If Device is NULL or Device is a handle
|
||||
that does not support the device path protocol, then a device path containing a single device
|
||||
path node for the file specified by FileName is allocated and returned.
|
||||
The memory for the new device path is allocated from EFI boot services memory. It is the responsibility
|
||||
of the caller to free the memory allocated.
|
||||
|
||||
If FileName is NULL, then ASSERT().
|
||||
If FileName is not aligned on a 16-bit boundary, then ASSERT().
|
||||
|
||||
@param Device A pointer to a device handle. This parameter is optional and
|
||||
may be NULL.
|
||||
@param FileName A pointer to a Null-terminated Unicode string.
|
||||
|
||||
@return The allocated device path.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
FileDevicePath (
|
||||
IN EFI_HANDLE Device, OPTIONAL
|
||||
IN CONST CHAR16 *FileName
|
||||
);
|
||||
|
||||
/**
|
||||
Converts a device path to its text representation.
|
||||
|
||||
@param DevicePath A Pointer to the device to be converted.
|
||||
@param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
|
||||
of the display node is used, where applicable. If DisplayOnly
|
||||
is FALSE, then the longer text representation of the display node
|
||||
is used.
|
||||
@param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
|
||||
representation for a device node can be used, where applicable.
|
||||
|
||||
@return A pointer to the allocated text representation of the device path or
|
||||
NULL if DeviceNode is NULL or there was insufficient memory.
|
||||
|
||||
**/
|
||||
CHAR16 *
|
||||
EFIAPI
|
||||
ConvertDevicePathToText (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN BOOLEAN DisplayOnly,
|
||||
IN BOOLEAN AllowShortcuts
|
||||
);
|
||||
|
||||
/**
|
||||
Converts a device node to its string representation.
|
||||
|
||||
@param DeviceNode A Pointer to the device node to be converted.
|
||||
@param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
|
||||
of the display node is used, where applicable. If DisplayOnly
|
||||
is FALSE, then the longer text representation of the display node
|
||||
is used.
|
||||
@param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
|
||||
representation for a device node can be used, where applicable.
|
||||
|
||||
@return A pointer to the allocated text representation of the device node or NULL if DeviceNode
|
||||
is NULL or there was insufficient memory.
|
||||
|
||||
**/
|
||||
CHAR16 *
|
||||
EFIAPI
|
||||
ConvertDeviceNodeToText (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode,
|
||||
IN BOOLEAN DisplayOnly,
|
||||
IN BOOLEAN AllowShortcuts
|
||||
);
|
||||
|
||||
/**
|
||||
Convert text to the binary representation of a device node.
|
||||
|
||||
@param TextDeviceNode TextDeviceNode points to the text representation of a device
|
||||
node. Conversion starts with the first character and continues
|
||||
until the first non-device node character.
|
||||
|
||||
@return A pointer to the EFI device node or NULL if TextDeviceNode is NULL or there was
|
||||
insufficient memory or text unsupported.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
ConvertTextToDeviceNode (
|
||||
IN CONST CHAR16 *TextDeviceNode
|
||||
);
|
||||
|
||||
/**
|
||||
Convert text to the binary representation of a device path.
|
||||
|
||||
@param TextDevicePath TextDevicePath points to the text representation of a device
|
||||
path. Conversion starts with the first character and continues
|
||||
until the first non-device node character.
|
||||
|
||||
@return A pointer to the allocated device path or NULL if TextDeviceNode is NULL or
|
||||
there was insufficient memory.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
ConvertTextToDevicePath (
|
||||
IN CONST CHAR16 *TextDevicePath
|
||||
);
|
||||
|
||||
#endif
|
493
sys/contrib/edk2/Include/Library/MemoryAllocationLib.h
Normal file
493
sys/contrib/edk2/Include/Library/MemoryAllocationLib.h
Normal file
@ -0,0 +1,493 @@
|
||||
/** @file
|
||||
Provides services to allocate and free memory buffers of various memory types and alignments.
|
||||
|
||||
The Memory Allocation Library abstracts various common memory allocation operations. This library
|
||||
allows code to be written in a phase-independent manner because the allocation of memory in PEI, DXE,
|
||||
and SMM (for example) is done via a different mechanism. Using a common library interface makes it
|
||||
much easier to port algorithms from phase to phase.
|
||||
|
||||
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __MEMORY_ALLOCATION_LIB_H__
|
||||
#define __MEMORY_ALLOCATION_LIB_H__
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of type EfiBootServicesData.
|
||||
|
||||
Allocates the number of 4KB pages of type EfiBootServicesData and returns a pointer to the
|
||||
allocated buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL
|
||||
is returned. If there is not enough memory remaining to satisfy the request, then NULL is
|
||||
returned.
|
||||
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocatePages (
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of type EfiRuntimeServicesData.
|
||||
|
||||
Allocates the number of 4KB pages of type EfiRuntimeServicesData and returns a pointer to the
|
||||
allocated buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL
|
||||
is returned. If there is not enough memory remaining to satisfy the request, then NULL is
|
||||
returned.
|
||||
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateRuntimePages (
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of type EfiReservedMemoryType.
|
||||
|
||||
Allocates the number of 4KB pages of type EfiReservedMemoryType and returns a pointer to the
|
||||
allocated buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL
|
||||
is returned. If there is not enough memory remaining to satisfy the request, then NULL is
|
||||
returned.
|
||||
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateReservedPages (
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
/**
|
||||
Frees one or more 4KB pages that were previously allocated with one of the page allocation
|
||||
functions in the Memory Allocation Library.
|
||||
|
||||
Frees the number of 4KB pages specified by Pages from the buffer specified by Buffer. Buffer
|
||||
must have been allocated on a previous call to the page allocation services of the Memory
|
||||
Allocation Library. If it is not possible to free allocated pages, then this function will
|
||||
perform no actions.
|
||||
|
||||
If Buffer was not allocated with a page allocation function in the Memory Allocation Library,
|
||||
then ASSERT().
|
||||
If Pages is zero, then ASSERT().
|
||||
|
||||
@param Buffer Pointer to the buffer of pages to free.
|
||||
@param Pages The number of 4 KB pages to free.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
FreePages (
|
||||
IN VOID *Buffer,
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of type EfiBootServicesData at a specified alignment.
|
||||
|
||||
Allocates the number of 4KB pages specified by Pages of type EfiBootServicesData with an
|
||||
alignment specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is
|
||||
returned. If there is not enough memory at the specified alignment remaining to satisfy the
|
||||
request, then NULL is returned.
|
||||
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
If Pages plus EFI_SIZE_TO_PAGES (Alignment) overflows, then ASSERT().
|
||||
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateAlignedPages (
|
||||
IN UINTN Pages,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of type EfiRuntimeServicesData at a specified alignment.
|
||||
|
||||
Allocates the number of 4KB pages specified by Pages of type EfiRuntimeServicesData with an
|
||||
alignment specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is
|
||||
returned. If there is not enough memory at the specified alignment remaining to satisfy the
|
||||
request, then NULL is returned.
|
||||
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
If Pages plus EFI_SIZE_TO_PAGES (Alignment) overflows, then ASSERT().
|
||||
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateAlignedRuntimePages (
|
||||
IN UINTN Pages,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of type EfiReservedMemoryType at a specified alignment.
|
||||
|
||||
Allocates the number of 4KB pages specified by Pages of type EfiReservedMemoryType with an
|
||||
alignment specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is
|
||||
returned. If there is not enough memory at the specified alignment remaining to satisfy the
|
||||
request, then NULL is returned.
|
||||
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
If Pages plus EFI_SIZE_TO_PAGES (Alignment) overflows, then ASSERT().
|
||||
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateAlignedReservedPages (
|
||||
IN UINTN Pages,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
/**
|
||||
Frees one or more 4KB pages that were previously allocated with one of the aligned page
|
||||
allocation functions in the Memory Allocation Library.
|
||||
|
||||
Frees the number of 4KB pages specified by Pages from the buffer specified by Buffer. Buffer
|
||||
must have been allocated on a previous call to the aligned page allocation services of the Memory
|
||||
Allocation Library. If it is not possible to free allocated pages, then this function will
|
||||
perform no actions.
|
||||
|
||||
If Buffer was not allocated with an aligned page allocation function in the Memory Allocation
|
||||
Library, then ASSERT().
|
||||
If Pages is zero, then ASSERT().
|
||||
|
||||
@param Buffer Pointer to the buffer of pages to free.
|
||||
@param Pages The number of 4 KB pages to free.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
FreeAlignedPages (
|
||||
IN VOID *Buffer,
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates a buffer of type EfiBootServicesData.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiBootServicesData and returns a
|
||||
pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
|
||||
returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocatePool (
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates a buffer of type EfiRuntimeServicesData.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiRuntimeServicesData and returns
|
||||
a pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
|
||||
returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateRuntimePool (
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates a buffer of type EfiReservedMemoryType.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiReservedMemoryType and returns
|
||||
a pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
|
||||
returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateReservedPool (
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates and zeros a buffer of type EfiBootServicesData.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiBootServicesData, clears the
|
||||
buffer with zeros, and returns a pointer to the allocated buffer. If AllocationSize is 0, then a
|
||||
valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the
|
||||
request, then NULL is returned.
|
||||
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateZeroPool (
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates and zeros a buffer of type EfiRuntimeServicesData.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiRuntimeServicesData, clears the
|
||||
buffer with zeros, and returns a pointer to the allocated buffer. If AllocationSize is 0, then a
|
||||
valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the
|
||||
request, then NULL is returned.
|
||||
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateRuntimeZeroPool (
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates and zeros a buffer of type EfiReservedMemoryType.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiReservedMemoryType, clears the
|
||||
buffer with zeros, and returns a pointer to the allocated buffer. If AllocationSize is 0, then a
|
||||
valid buffer of 0 size is returned. If there is not enough memory remaining to satisfy the
|
||||
request, then NULL is returned.
|
||||
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateReservedZeroPool (
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
/**
|
||||
Copies a buffer to an allocated buffer of type EfiBootServicesData.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiBootServicesData, copies
|
||||
AllocationSize bytes from Buffer to the newly allocated buffer, and returns a pointer to the
|
||||
allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
|
||||
is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
If Buffer is NULL, then ASSERT().
|
||||
If AllocationSize is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
@param Buffer The buffer to copy to the allocated buffer.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateCopyPool (
|
||||
IN UINTN AllocationSize,
|
||||
IN CONST VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Copies a buffer to an allocated buffer of type EfiRuntimeServicesData.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiRuntimeServicesData, copies
|
||||
AllocationSize bytes from Buffer to the newly allocated buffer, and returns a pointer to the
|
||||
allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
|
||||
is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
If Buffer is NULL, then ASSERT().
|
||||
If AllocationSize is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
@param Buffer The buffer to copy to the allocated buffer.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateRuntimeCopyPool (
|
||||
IN UINTN AllocationSize,
|
||||
IN CONST VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Copies a buffer to an allocated buffer of type EfiReservedMemoryType.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiReservedMemoryType, copies
|
||||
AllocationSize bytes from Buffer to the newly allocated buffer, and returns a pointer to the
|
||||
allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is returned. If there
|
||||
is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
If Buffer is NULL, then ASSERT().
|
||||
If AllocationSize is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
|
||||
|
||||
@param AllocationSize The number of bytes to allocate and zero.
|
||||
@param Buffer The buffer to copy to the allocated buffer.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateReservedCopyPool (
|
||||
IN UINTN AllocationSize,
|
||||
IN CONST VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Reallocates a buffer of type EfiBootServicesData.
|
||||
|
||||
Allocates and zeros the number bytes specified by NewSize from memory of type
|
||||
EfiBootServicesData. If OldBuffer is not NULL, then the smaller of OldSize and
|
||||
NewSize bytes are copied from OldBuffer to the newly allocated buffer, and
|
||||
OldBuffer is freed. A pointer to the newly allocated buffer is returned.
|
||||
If NewSize is 0, then a valid buffer of 0 size is returned. If there is not
|
||||
enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
If the allocation of the new buffer is successful and the smaller of NewSize and OldSize
|
||||
is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT().
|
||||
|
||||
@param OldSize The size, in bytes, of OldBuffer.
|
||||
@param NewSize The size, in bytes, of the buffer to reallocate.
|
||||
@param OldBuffer The buffer to copy to the allocated buffer. This is an optional
|
||||
parameter that may be NULL.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ReallocatePool (
|
||||
IN UINTN OldSize,
|
||||
IN UINTN NewSize,
|
||||
IN VOID *OldBuffer OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Reallocates a buffer of type EfiRuntimeServicesData.
|
||||
|
||||
Allocates and zeros the number bytes specified by NewSize from memory of type
|
||||
EfiRuntimeServicesData. If OldBuffer is not NULL, then the smaller of OldSize and
|
||||
NewSize bytes are copied from OldBuffer to the newly allocated buffer, and
|
||||
OldBuffer is freed. A pointer to the newly allocated buffer is returned.
|
||||
If NewSize is 0, then a valid buffer of 0 size is returned. If there is not
|
||||
enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
If the allocation of the new buffer is successful and the smaller of NewSize and OldSize
|
||||
is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT().
|
||||
|
||||
@param OldSize The size, in bytes, of OldBuffer.
|
||||
@param NewSize The size, in bytes, of the buffer to reallocate.
|
||||
@param OldBuffer The buffer to copy to the allocated buffer. This is an optional
|
||||
parameter that may be NULL.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ReallocateRuntimePool (
|
||||
IN UINTN OldSize,
|
||||
IN UINTN NewSize,
|
||||
IN VOID *OldBuffer OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Reallocates a buffer of type EfiReservedMemoryType.
|
||||
|
||||
Allocates and zeros the number bytes specified by NewSize from memory of type
|
||||
EfiReservedMemoryType. If OldBuffer is not NULL, then the smaller of OldSize and
|
||||
NewSize bytes are copied from OldBuffer to the newly allocated buffer, and
|
||||
OldBuffer is freed. A pointer to the newly allocated buffer is returned.
|
||||
If NewSize is 0, then a valid buffer of 0 size is returned. If there is not
|
||||
enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
If the allocation of the new buffer is successful and the smaller of NewSize and OldSize
|
||||
is greater than (MAX_ADDRESS - OldBuffer + 1), then ASSERT().
|
||||
|
||||
@param OldSize The size, in bytes, of OldBuffer.
|
||||
@param NewSize The size, in bytes, of the buffer to reallocate.
|
||||
@param OldBuffer The buffer to copy to the allocated buffer. This is an optional
|
||||
parameter that may be NULL.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
ReallocateReservedPool (
|
||||
IN UINTN OldSize,
|
||||
IN UINTN NewSize,
|
||||
IN VOID *OldBuffer OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Frees a buffer that was previously allocated with one of the pool allocation functions in the
|
||||
Memory Allocation Library.
|
||||
|
||||
Frees the buffer specified by Buffer. Buffer must have been allocated on a previous call to the
|
||||
pool allocation services of the Memory Allocation Library. If it is not possible to free pool
|
||||
resources, then this function will perform no actions.
|
||||
|
||||
If Buffer was not allocated with a pool allocation function in the Memory Allocation Library,
|
||||
then ASSERT().
|
||||
|
||||
@param Buffer Pointer to the buffer to free.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
FreePool (
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
#endif
|
2260
sys/contrib/edk2/Include/Library/PcdLib.h
Normal file
2260
sys/contrib/edk2/Include/Library/PcdLib.h
Normal file
File diff suppressed because it is too large
Load Diff
1052
sys/contrib/edk2/Include/Library/PrintLib.h
Normal file
1052
sys/contrib/edk2/Include/Library/PrintLib.h
Normal file
File diff suppressed because it is too large
Load Diff
34
sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h
Normal file
34
sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h
Normal file
@ -0,0 +1,34 @@
|
||||
/** @file
|
||||
Provides a service to retrieve a pointer to the EFI Boot Services Table.
|
||||
Only available to DXE and UEFI module types.
|
||||
|
||||
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __UEFI_BOOT_SERVICES_TABLE_LIB_H__
|
||||
#define __UEFI_BOOT_SERVICES_TABLE_LIB_H__
|
||||
|
||||
///
|
||||
/// Cache the Image Handle
|
||||
///
|
||||
extern EFI_HANDLE gImageHandle;
|
||||
|
||||
///
|
||||
/// Cache pointer to the EFI System Table
|
||||
///
|
||||
extern EFI_SYSTEM_TABLE *gST;
|
||||
|
||||
///
|
||||
/// Cache pointer to the EFI Boot Services Table
|
||||
///
|
||||
extern EFI_BOOT_SERVICES *gBS;
|
||||
|
||||
#endif
|
146
sys/contrib/edk2/Include/Protocol/DebugPort.h
Normal file
146
sys/contrib/edk2/Include/Protocol/DebugPort.h
Normal file
@ -0,0 +1,146 @@
|
||||
/** @file
|
||||
|
||||
The file defines the EFI Debugport protocol.
|
||||
This protocol is used by debug agent to communicate with the
|
||||
remote debug host.
|
||||
|
||||
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __DEBUG_PORT_H__
|
||||
#define __DEBUG_PORT_H__
|
||||
|
||||
|
||||
///
|
||||
/// DebugPortIo protocol {EBA4E8D2-3858-41EC-A281-2647BA9660D0}
|
||||
///
|
||||
#define EFI_DEBUGPORT_PROTOCOL_GUID \
|
||||
{ \
|
||||
0xEBA4E8D2, 0x3858, 0x41EC, {0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
|
||||
}
|
||||
|
||||
extern EFI_GUID gEfiDebugPortProtocolGuid;
|
||||
|
||||
typedef struct _EFI_DEBUGPORT_PROTOCOL EFI_DEBUGPORT_PROTOCOL;
|
||||
|
||||
//
|
||||
// DebugPort member functions
|
||||
//
|
||||
|
||||
/**
|
||||
Resets the debugport.
|
||||
|
||||
@param This A pointer to the EFI_DEBUGPORT_PROTOCOL instance.
|
||||
|
||||
@retval EFI_SUCCESS The debugport device was reset and is in usable state.
|
||||
@retval EFI_DEVICE_ERROR The debugport device could not be reset and is unusable.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_DEBUGPORT_RESET)(
|
||||
IN EFI_DEBUGPORT_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
Writes data to the debugport.
|
||||
|
||||
@param This A pointer to the EFI_DEBUGPORT_PROTOCOL instance.
|
||||
@param Timeout The number of microseconds to wait before timing out a write operation.
|
||||
@param BufferSize On input, the requested number of bytes of data to write. On output, the
|
||||
number of bytes of data actually written.
|
||||
@param Buffer A pointer to a buffer containing the data to write.
|
||||
|
||||
@retval EFI_SUCCESS The data was written.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_TIMEOUT The data write was stopped due to a timeout.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_DEBUGPORT_WRITE)(
|
||||
IN EFI_DEBUGPORT_PROTOCOL *This,
|
||||
IN UINT32 Timeout,
|
||||
IN OUT UINTN *BufferSize,
|
||||
IN VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Reads data from the debugport.
|
||||
|
||||
@param This A pointer to the EFI_DEBUGPORT_PROTOCOL instance.
|
||||
@param Timeout The number of microseconds to wait before timing out a read operation.
|
||||
@param BufferSize On input, the requested number of bytes of data to read. On output, the
|
||||
number of bytes of data actually number of bytes
|
||||
of data read and returned in Buffer.
|
||||
@param Buffer A pointer to a buffer into which the data read will be saved.
|
||||
|
||||
@retval EFI_SUCCESS The data was read.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_TIMEOUT The operation was stopped due to a timeout or overrun.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_DEBUGPORT_READ)(
|
||||
IN EFI_DEBUGPORT_PROTOCOL *This,
|
||||
IN UINT32 Timeout,
|
||||
IN OUT UINTN *BufferSize,
|
||||
OUT VOID *Buffer
|
||||
);
|
||||
|
||||
/**
|
||||
Checks to see if any data is available to be read from the debugport device.
|
||||
|
||||
@param This A pointer to the EFI_DEBUGPORT_PROTOCOL instance.
|
||||
|
||||
@retval EFI_SUCCESS At least one byte of data is available to be read.
|
||||
@retval EFI_DEVICE_ERROR The debugport device is not functioning correctly.
|
||||
@retval EFI_NOT_READY No data is available to be read.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_DEBUGPORT_POLL)(
|
||||
IN EFI_DEBUGPORT_PROTOCOL *This
|
||||
);
|
||||
|
||||
///
|
||||
/// This protocol provides the communication link between the debug agent and the remote host.
|
||||
///
|
||||
struct _EFI_DEBUGPORT_PROTOCOL {
|
||||
EFI_DEBUGPORT_RESET Reset;
|
||||
EFI_DEBUGPORT_WRITE Write;
|
||||
EFI_DEBUGPORT_READ Read;
|
||||
EFI_DEBUGPORT_POLL Poll;
|
||||
};
|
||||
|
||||
//
|
||||
// DEBUGPORT variable definitions...
|
||||
//
|
||||
#define EFI_DEBUGPORT_VARIABLE_NAME L"DEBUGPORT"
|
||||
#define EFI_DEBUGPORT_VARIABLE_GUID EFI_DEBUGPORT_PROTOCOL_GUID
|
||||
|
||||
extern EFI_GUID gEfiDebugPortVariableGuid;
|
||||
|
||||
//
|
||||
// DebugPort device path definitions...
|
||||
//
|
||||
#define DEVICE_PATH_MESSAGING_DEBUGPORT EFI_DEBUGPORT_PROTOCOL_GUID
|
||||
|
||||
extern EFI_GUID gEfiDebugPortDevicePathGuid;
|
||||
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||
EFI_GUID Guid;
|
||||
} DEBUGPORT_DEVICE_PATH;
|
||||
|
||||
#endif
|
1331
sys/contrib/edk2/Include/Protocol/DevicePath.h
Normal file
1331
sys/contrib/edk2/Include/Protocol/DevicePath.h
Normal file
File diff suppressed because it is too large
Load Diff
72
sys/contrib/edk2/Include/Protocol/DevicePathFromText.h
Normal file
72
sys/contrib/edk2/Include/Protocol/DevicePathFromText.h
Normal file
@ -0,0 +1,72 @@
|
||||
/** @file
|
||||
EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL as defined in UEFI 2.0.
|
||||
This protocol provides service to convert text to device paths and device nodes.
|
||||
|
||||
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __DEVICE_PATH_FROM_TEXT_PROTOCOL_H__
|
||||
#define __DEVICE_PATH_FROM_TEXT_PROTOCOL_H__
|
||||
|
||||
///
|
||||
/// Device Path From Text protocol
|
||||
///
|
||||
#define EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID \
|
||||
{ \
|
||||
0x5c99a21, 0xc70f, 0x4ad2, {0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e } \
|
||||
}
|
||||
|
||||
/**
|
||||
Convert text to the binary representation of a device node.
|
||||
|
||||
@param TextDeviceNode TextDeviceNode points to the text representation of a device
|
||||
node. Conversion starts with the first character and continues
|
||||
until the first non-device node character.
|
||||
|
||||
@retval a_pointer Pointer to the EFI device node.
|
||||
@retval NULL if TextDeviceNode is NULL or there was insufficient memory.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_DEVICE_PATH_PROTOCOL*
|
||||
(EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_NODE)(
|
||||
IN CONST CHAR16 *TextDeviceNode
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Convert text to the binary representation of a device node.
|
||||
|
||||
@param TextDeviceNode TextDevicePath points to the text representation of a device
|
||||
path. Conversion starts with the first character and continues
|
||||
until the first non-device path character.
|
||||
|
||||
@retval a_pointer Pointer to the allocated device path.
|
||||
@retval NULL if TextDeviceNode is NULL or there was insufficient memory.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_DEVICE_PATH_PROTOCOL*
|
||||
(EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_PATH)(
|
||||
IN CONST CHAR16 *TextDevicePath
|
||||
);
|
||||
|
||||
///
|
||||
/// This protocol converts text to device paths and device nodes.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_FROM_TEXT_NODE ConvertTextToDeviceNode;
|
||||
EFI_DEVICE_PATH_FROM_TEXT_PATH ConvertTextToDevicePath;
|
||||
} EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL;
|
||||
|
||||
extern EFI_GUID gEfiDevicePathFromTextProtocolGuid;
|
||||
|
||||
#endif
|
85
sys/contrib/edk2/Include/Protocol/DevicePathToText.h
Normal file
85
sys/contrib/edk2/Include/Protocol/DevicePathToText.h
Normal file
@ -0,0 +1,85 @@
|
||||
/** @file
|
||||
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL as defined in UEFI 2.0.
|
||||
This protocol provides service to convert device nodes and paths to text.
|
||||
|
||||
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __DEVICE_PATH_TO_TEXT_PROTOCOL_H__
|
||||
#define __DEVICE_PATH_TO_TEXT_PROTOCOL_H__
|
||||
|
||||
///
|
||||
/// Device Path To Text protocol
|
||||
///
|
||||
#define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \
|
||||
{ \
|
||||
0x8b843e20, 0x8132, 0x4852, {0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c } \
|
||||
}
|
||||
|
||||
/**
|
||||
Convert a device node to its text representation.
|
||||
|
||||
@param DeviceNode Points to the device node to be converted.
|
||||
@param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
|
||||
of the display node is used, where applicable. If DisplayOnly
|
||||
is FALSE, then the longer text representation of the display node
|
||||
is used.
|
||||
@param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
|
||||
representation for a device node can be used, where applicable.
|
||||
|
||||
@retval a_pointer a pointer to the allocated text representation of the device node data
|
||||
@retval NULL if DeviceNode is NULL or there was insufficient memory.
|
||||
|
||||
**/
|
||||
typedef
|
||||
CHAR16*
|
||||
(EFIAPI *EFI_DEVICE_PATH_TO_TEXT_NODE)(
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode,
|
||||
IN BOOLEAN DisplayOnly,
|
||||
IN BOOLEAN AllowShortcuts
|
||||
);
|
||||
|
||||
/**
|
||||
Convert a device path to its text representation.
|
||||
|
||||
@param DevicePath Points to the device path to be converted.
|
||||
@param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
|
||||
of the display node is used, where applicable. If DisplayOnly
|
||||
is FALSE, then the longer text representation of the display node
|
||||
is used.
|
||||
@param AllowShortcuts The AllowShortcuts is FALSE, then the shortcut forms of
|
||||
text representation for a device node cannot be used.
|
||||
|
||||
@retval a_pointer a pointer to the allocated text representation of the device node.
|
||||
@retval NULL if DevicePath is NULL or there was insufficient memory.
|
||||
|
||||
**/
|
||||
typedef
|
||||
CHAR16*
|
||||
(EFIAPI *EFI_DEVICE_PATH_TO_TEXT_PATH)(
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN BOOLEAN DisplayOnly,
|
||||
IN BOOLEAN AllowShortcuts
|
||||
);
|
||||
|
||||
///
|
||||
/// This protocol converts device paths and device nodes to text.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_TO_TEXT_NODE ConvertDeviceNodeToText;
|
||||
EFI_DEVICE_PATH_TO_TEXT_PATH ConvertDevicePathToText;
|
||||
} EFI_DEVICE_PATH_TO_TEXT_PROTOCOL;
|
||||
|
||||
extern EFI_GUID gEfiDevicePathToTextProtocolGuid;
|
||||
|
||||
#endif
|
||||
|
||||
|
192
sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h
Normal file
192
sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h
Normal file
@ -0,0 +1,192 @@
|
||||
/** @file
|
||||
EFI_DEVICE_PATH_UTILITIES_PROTOCOL as defined in UEFI 2.0.
|
||||
Use to create and manipulate device paths and device nodes.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __DEVICE_PATH_UTILITIES_PROTOCOL_H__
|
||||
#define __DEVICE_PATH_UTILITIES_PROTOCOL_H__
|
||||
|
||||
///
|
||||
/// Device Path Utilities protocol
|
||||
///
|
||||
#define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \
|
||||
{ \
|
||||
0x379be4e, 0xd706, 0x437d, {0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4 } \
|
||||
}
|
||||
|
||||
/**
|
||||
Returns the size of the device path, in bytes.
|
||||
|
||||
@param DevicePath Points to the start of the EFI device path.
|
||||
|
||||
@return Size Size of the specified device path, in bytes, including the end-of-path tag.
|
||||
@retval 0 DevicePath is NULL
|
||||
|
||||
**/
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE)(
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Create a duplicate of the specified path.
|
||||
|
||||
@param DevicePath Points to the source EFI device path.
|
||||
|
||||
@retval Pointer A pointer to the duplicate device path.
|
||||
@retval NULL insufficient memory or DevicePath is NULL
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_DEVICE_PATH_PROTOCOL*
|
||||
(EFIAPI *EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH)(
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
Create a new path by appending the second device path to the first.
|
||||
If Src1 is NULL and Src2 is non-NULL, then a duplicate of Src2 is returned.
|
||||
If Src1 is non-NULL and Src2 is NULL, then a duplicate of Src1 is returned.
|
||||
If Src1 and Src2 are both NULL, then a copy of an end-of-device-path is returned.
|
||||
|
||||
@param Src1 Points to the first device path.
|
||||
@param Src2 Points to the second device path.
|
||||
|
||||
@retval Pointer A pointer to the newly created device path.
|
||||
@retval NULL Memory could not be allocated
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_DEVICE_PATH_PROTOCOL*
|
||||
(EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_PATH)(
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *Src1,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *Src2
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a new path by appending the device node to the device path.
|
||||
If DeviceNode is NULL then a copy of DevicePath is returned.
|
||||
If DevicePath is NULL then a copy of DeviceNode, followed by an end-of-device path device node is returned.
|
||||
If both DeviceNode and DevicePath are NULL then a copy of an end-of-device-path device node is returned.
|
||||
|
||||
@param DevicePath Points to the device path.
|
||||
@param DeviceNode Points to the device node.
|
||||
|
||||
@retval Pointer A pointer to the allocated device node.
|
||||
@retval NULL There was insufficient memory.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_DEVICE_PATH_PROTOCOL*
|
||||
(EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_NODE)(
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a new path by appending the specified device path instance to the specified device path.
|
||||
|
||||
@param DevicePath Points to the device path. If NULL, then ignored.
|
||||
@param DevicePathInstance Points to the device path instance.
|
||||
|
||||
@retval Pointer A pointer to the newly created device path
|
||||
@retval NULL Memory could not be allocated or DevicePathInstance is NULL.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_DEVICE_PATH_PROTOCOL*
|
||||
(EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE)(
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a copy of the current device path instance and returns a pointer to the next device path
|
||||
instance.
|
||||
|
||||
@param DevicePathInstance On input, this holds the pointer to the current device path
|
||||
instance. On output, this holds the pointer to the next
|
||||
device path instance or NULL if there are no more device
|
||||
path instances in the device path.
|
||||
@param DevicePathInstanceSize On output, this holds the size of the device path instance,
|
||||
in bytes or zero, if DevicePathInstance is NULL.
|
||||
If NULL, then the instance size is not output.
|
||||
|
||||
@retval Pointer A pointer to the copy of the current device path instance.
|
||||
@retval NULL DevicePathInstace was NULL on entry or there was insufficient memory.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_DEVICE_PATH_PROTOCOL*
|
||||
(EFIAPI *EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE)(
|
||||
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathInstance,
|
||||
OUT UINTN *DevicePathInstanceSize
|
||||
);
|
||||
|
||||
/**
|
||||
Creates a device node
|
||||
|
||||
@param NodeType NodeType is the device node type (EFI_DEVICE_PATH.Type) for
|
||||
the new device node.
|
||||
@param NodeSubType NodeSubType is the device node sub-type
|
||||
EFI_DEVICE_PATH.SubType) for the new device node.
|
||||
@param NodeLength NodeLength is the length of the device node
|
||||
(EFI_DEVICE_PATH.Length) for the new device node.
|
||||
|
||||
@retval Pointer A pointer to the newly created device node.
|
||||
@retval NULL NodeLength is less than
|
||||
the size of the header or there was insufficient memory.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_DEVICE_PATH_PROTOCOL*
|
||||
(EFIAPI *EFI_DEVICE_PATH_UTILS_CREATE_NODE)(
|
||||
IN UINT8 NodeType,
|
||||
IN UINT8 NodeSubType,
|
||||
IN UINT16 NodeLength
|
||||
);
|
||||
|
||||
/**
|
||||
Returns whether a device path is multi-instance.
|
||||
|
||||
@param DevicePath Points to the device path. If NULL, then ignored.
|
||||
|
||||
@retval TRUE The device path has more than one instance
|
||||
@retval FALSE The device path is empty or contains only a single instance.
|
||||
|
||||
**/
|
||||
typedef
|
||||
BOOLEAN
|
||||
(EFIAPI *EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE)(
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
);
|
||||
|
||||
///
|
||||
/// This protocol is used to creates and manipulates device paths and device nodes.
|
||||
///
|
||||
typedef struct {
|
||||
EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE GetDevicePathSize;
|
||||
EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH DuplicateDevicePath;
|
||||
EFI_DEVICE_PATH_UTILS_APPEND_PATH AppendDevicePath;
|
||||
EFI_DEVICE_PATH_UTILS_APPEND_NODE AppendDeviceNode;
|
||||
EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE AppendDevicePathInstance;
|
||||
EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE GetNextDevicePathInstance;
|
||||
EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE IsDevicePathMultiInstance;
|
||||
EFI_DEVICE_PATH_UTILS_CREATE_NODE CreateDeviceNode;
|
||||
} EFI_DEVICE_PATH_UTILITIES_PROTOCOL;
|
||||
|
||||
extern EFI_GUID gEfiDevicePathUtilitiesProtocolGuid;
|
||||
|
||||
#endif
|
133
sys/contrib/edk2/Include/Protocol/SimpleTextIn.h
Normal file
133
sys/contrib/edk2/Include/Protocol/SimpleTextIn.h
Normal file
@ -0,0 +1,133 @@
|
||||
/** @file
|
||||
Simple Text Input protocol from the UEFI 2.0 specification.
|
||||
|
||||
Abstraction of a very simple input device like a keyboard or serial
|
||||
terminal.
|
||||
|
||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __SIMPLE_TEXT_IN_PROTOCOL_H__
|
||||
#define __SIMPLE_TEXT_IN_PROTOCOL_H__
|
||||
|
||||
#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
|
||||
{ \
|
||||
0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
|
||||
}
|
||||
|
||||
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
|
||||
|
||||
///
|
||||
/// Protocol GUID name defined in EFI1.1.
|
||||
///
|
||||
#define SIMPLE_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID
|
||||
|
||||
///
|
||||
/// Protocol name in EFI1.1 for backward-compatible.
|
||||
///
|
||||
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL SIMPLE_INPUT_INTERFACE;
|
||||
|
||||
///
|
||||
/// The keystroke information for the key that was pressed.
|
||||
///
|
||||
typedef struct {
|
||||
UINT16 ScanCode;
|
||||
CHAR16 UnicodeChar;
|
||||
} EFI_INPUT_KEY;
|
||||
|
||||
//
|
||||
// Required unicode control chars
|
||||
//
|
||||
#define CHAR_BACKSPACE 0x0008
|
||||
#define CHAR_TAB 0x0009
|
||||
#define CHAR_LINEFEED 0x000A
|
||||
#define CHAR_CARRIAGE_RETURN 0x000D
|
||||
|
||||
//
|
||||
// EFI Scan codes
|
||||
//
|
||||
#define SCAN_NULL 0x0000
|
||||
#define SCAN_UP 0x0001
|
||||
#define SCAN_DOWN 0x0002
|
||||
#define SCAN_RIGHT 0x0003
|
||||
#define SCAN_LEFT 0x0004
|
||||
#define SCAN_HOME 0x0005
|
||||
#define SCAN_END 0x0006
|
||||
#define SCAN_INSERT 0x0007
|
||||
#define SCAN_DELETE 0x0008
|
||||
#define SCAN_PAGE_UP 0x0009
|
||||
#define SCAN_PAGE_DOWN 0x000A
|
||||
#define SCAN_F1 0x000B
|
||||
#define SCAN_F2 0x000C
|
||||
#define SCAN_F3 0x000D
|
||||
#define SCAN_F4 0x000E
|
||||
#define SCAN_F5 0x000F
|
||||
#define SCAN_F6 0x0010
|
||||
#define SCAN_F7 0x0011
|
||||
#define SCAN_F8 0x0012
|
||||
#define SCAN_F9 0x0013
|
||||
#define SCAN_F10 0x0014
|
||||
#define SCAN_ESC 0x0017
|
||||
|
||||
/**
|
||||
Reset the input device and optionally run diagnostics
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param ExtendedVerification Driver may perform diagnostics on reset.
|
||||
|
||||
@retval EFI_SUCCESS The device was reset.
|
||||
@retval EFI_DEVICE_ERROR The device is not functioning properly and could not be reset.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_INPUT_RESET)(
|
||||
IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
/**
|
||||
Reads the next keystroke from the input device. The WaitForKey Event can
|
||||
be used to test for existence of a keystroke via WaitForEvent () call.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param Key A pointer to a buffer that is filled in with the keystroke
|
||||
information for the key that was pressed.
|
||||
|
||||
@retval EFI_SUCCESS The keystroke information was returned.
|
||||
@retval EFI_NOT_READY There was no keystroke data available.
|
||||
@retval EFI_DEVICE_ERROR The keystroke information was not returned due to
|
||||
hardware errors.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_INPUT_READ_KEY)(
|
||||
IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
|
||||
OUT EFI_INPUT_KEY *Key
|
||||
);
|
||||
|
||||
///
|
||||
/// The EFI_SIMPLE_TEXT_INPUT_PROTOCOL is used on the ConsoleIn device.
|
||||
/// It is the minimum required protocol for ConsoleIn.
|
||||
///
|
||||
struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {
|
||||
EFI_INPUT_RESET Reset;
|
||||
EFI_INPUT_READ_KEY ReadKeyStroke;
|
||||
///
|
||||
/// Event to use with WaitForEvent() to wait for a key to be available
|
||||
///
|
||||
EFI_EVENT WaitForKey;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEfiSimpleTextInProtocolGuid;
|
||||
|
||||
#endif
|
325
sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h
Normal file
325
sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h
Normal file
@ -0,0 +1,325 @@
|
||||
/** @file
|
||||
Simple Text Input Ex protocol from the UEFI 2.0 specification.
|
||||
|
||||
This protocol defines an extension to the EFI_SIMPLE_TEXT_INPUT_PROTOCOL
|
||||
which exposes much more state and modifier information from the input device,
|
||||
also allows one to register a notification for a particular keystroke.
|
||||
|
||||
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __SIMPLE_TEXT_IN_EX_H__
|
||||
#define __SIMPLE_TEXT_IN_EX_H__
|
||||
|
||||
#include <Protocol/SimpleTextIn.h>
|
||||
|
||||
#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
|
||||
{0xdd9e7534, 0x7762, 0x4698, { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } }
|
||||
|
||||
|
||||
typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
|
||||
|
||||
/**
|
||||
The Reset() function resets the input device hardware. As part
|
||||
of initialization process, the firmware/device will make a quick
|
||||
but reasonable attempt to verify that the device is functioning.
|
||||
If the ExtendedVerification flag is TRUE the firmware may take
|
||||
an extended amount of time to verify the device is operating on
|
||||
reset. Otherwise the reset operation is to occur as quickly as
|
||||
possible. The hardware verification process is not defined by
|
||||
this specification and is left up to the platform firmware or
|
||||
driver to implement.
|
||||
|
||||
@param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance.
|
||||
|
||||
@param ExtendedVerification Indicates that the driver may
|
||||
perform a more exhaustive
|
||||
verification operation of the
|
||||
device during reset.
|
||||
|
||||
|
||||
@retval EFI_SUCCESS The device was reset.
|
||||
|
||||
@retval EFI_DEVICE_ERROR The device is not functioning
|
||||
correctly and could not be reset.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_INPUT_RESET_EX)(
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
|
||||
///
|
||||
/// EFI_KEY_TOGGLE_STATE. The toggle states are defined.
|
||||
/// They are: EFI_TOGGLE_STATE_VALID, EFI_SCROLL_LOCK_ACTIVE
|
||||
/// EFI_NUM_LOCK_ACTIVE, EFI_CAPS_LOCK_ACTIVE
|
||||
///
|
||||
typedef UINT8 EFI_KEY_TOGGLE_STATE;
|
||||
|
||||
typedef struct _EFI_KEY_STATE {
|
||||
///
|
||||
/// Reflects the currently pressed shift
|
||||
/// modifiers for the input device. The
|
||||
/// returned value is valid only if the high
|
||||
/// order bit has been set.
|
||||
///
|
||||
UINT32 KeyShiftState;
|
||||
///
|
||||
/// Reflects the current internal state of
|
||||
/// various toggled attributes. The returned
|
||||
/// value is valid only if the high order
|
||||
/// bit has been set.
|
||||
///
|
||||
EFI_KEY_TOGGLE_STATE KeyToggleState;
|
||||
} EFI_KEY_STATE;
|
||||
|
||||
typedef struct {
|
||||
///
|
||||
/// The EFI scan code and Unicode value returned from the input device.
|
||||
///
|
||||
EFI_INPUT_KEY Key;
|
||||
///
|
||||
/// The current state of various toggled attributes as well as input modifier values.
|
||||
///
|
||||
EFI_KEY_STATE KeyState;
|
||||
} EFI_KEY_DATA;
|
||||
|
||||
//
|
||||
// Any Shift or Toggle State that is valid should have
|
||||
// high order bit set.
|
||||
//
|
||||
// Shift state
|
||||
//
|
||||
#define EFI_SHIFT_STATE_VALID 0x80000000
|
||||
#define EFI_RIGHT_SHIFT_PRESSED 0x00000001
|
||||
#define EFI_LEFT_SHIFT_PRESSED 0x00000002
|
||||
#define EFI_RIGHT_CONTROL_PRESSED 0x00000004
|
||||
#define EFI_LEFT_CONTROL_PRESSED 0x00000008
|
||||
#define EFI_RIGHT_ALT_PRESSED 0x00000010
|
||||
#define EFI_LEFT_ALT_PRESSED 0x00000020
|
||||
#define EFI_RIGHT_LOGO_PRESSED 0x00000040
|
||||
#define EFI_LEFT_LOGO_PRESSED 0x00000080
|
||||
#define EFI_MENU_KEY_PRESSED 0x00000100
|
||||
#define EFI_SYS_REQ_PRESSED 0x00000200
|
||||
|
||||
//
|
||||
// Toggle state
|
||||
//
|
||||
#define EFI_TOGGLE_STATE_VALID 0x80
|
||||
#define EFI_KEY_STATE_EXPOSED 0x40
|
||||
#define EFI_SCROLL_LOCK_ACTIVE 0x01
|
||||
#define EFI_NUM_LOCK_ACTIVE 0x02
|
||||
#define EFI_CAPS_LOCK_ACTIVE 0x04
|
||||
|
||||
//
|
||||
// EFI Scan codes
|
||||
//
|
||||
#define SCAN_F11 0x0015
|
||||
#define SCAN_F12 0x0016
|
||||
#define SCAN_PAUSE 0x0048
|
||||
#define SCAN_F13 0x0068
|
||||
#define SCAN_F14 0x0069
|
||||
#define SCAN_F15 0x006A
|
||||
#define SCAN_F16 0x006B
|
||||
#define SCAN_F17 0x006C
|
||||
#define SCAN_F18 0x006D
|
||||
#define SCAN_F19 0x006E
|
||||
#define SCAN_F20 0x006F
|
||||
#define SCAN_F21 0x0070
|
||||
#define SCAN_F22 0x0071
|
||||
#define SCAN_F23 0x0072
|
||||
#define SCAN_F24 0x0073
|
||||
#define SCAN_MUTE 0x007F
|
||||
#define SCAN_VOLUME_UP 0x0080
|
||||
#define SCAN_VOLUME_DOWN 0x0081
|
||||
#define SCAN_BRIGHTNESS_UP 0x0100
|
||||
#define SCAN_BRIGHTNESS_DOWN 0x0101
|
||||
#define SCAN_SUSPEND 0x0102
|
||||
#define SCAN_HIBERNATE 0x0103
|
||||
#define SCAN_TOGGLE_DISPLAY 0x0104
|
||||
#define SCAN_RECOVERY 0x0105
|
||||
#define SCAN_EJECT 0x0106
|
||||
|
||||
/**
|
||||
The function reads the next keystroke from the input device. If
|
||||
there is no pending keystroke the function returns
|
||||
EFI_NOT_READY. If there is a pending keystroke, then
|
||||
KeyData.Key.ScanCode is the EFI scan code defined in Error!
|
||||
Reference source not found. The KeyData.Key.UnicodeChar is the
|
||||
actual printable character or is zero if the key does not
|
||||
represent a printable character (control key, function key,
|
||||
etc.). The KeyData.KeyState is shift state for the character
|
||||
reflected in KeyData.Key.UnicodeChar or KeyData.Key.ScanCode .
|
||||
When interpreting the data from this function, it should be
|
||||
noted that if a class of printable characters that are
|
||||
normally adjusted by shift modifiers (e.g. Shift Key + "f"
|
||||
key) would be presented solely as a KeyData.Key.UnicodeChar
|
||||
without the associated shift state. So in the previous example
|
||||
of a Shift Key + "f" key being pressed, the only pertinent
|
||||
data returned would be KeyData.Key.UnicodeChar with the value
|
||||
of "F". This of course would not typically be the case for
|
||||
non-printable characters such as the pressing of the Right
|
||||
Shift Key + F10 key since the corresponding returned data
|
||||
would be reflected both in the KeyData.KeyState.KeyShiftState
|
||||
and KeyData.Key.ScanCode values. UEFI drivers which implement
|
||||
the EFI_SIMPLE_TEXT_INPUT_EX protocol are required to return
|
||||
KeyData.Key and KeyData.KeyState values. These drivers must
|
||||
always return the most current state of
|
||||
KeyData.KeyState.KeyShiftState and
|
||||
KeyData.KeyState.KeyToggleState. It should also be noted that
|
||||
certain input devices may not be able to produce shift or toggle
|
||||
state information, and in those cases the high order bit in the
|
||||
respective Toggle and Shift state fields should not be active.
|
||||
|
||||
|
||||
@param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance.
|
||||
|
||||
@param KeyData A pointer to a buffer that is filled in with
|
||||
the keystroke state data for the key that was
|
||||
pressed.
|
||||
|
||||
|
||||
@retval EFI_SUCCESS The keystroke information was
|
||||
returned.
|
||||
|
||||
@retval EFI_NOT_READY There was no keystroke data available.
|
||||
EFI_DEVICE_ERROR The keystroke
|
||||
information was not returned due to
|
||||
hardware errors.
|
||||
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_INPUT_READ_KEY_EX)(
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
|
||||
OUT EFI_KEY_DATA *KeyData
|
||||
);
|
||||
|
||||
/**
|
||||
The SetState() function allows the input device hardware to
|
||||
have state settings adjusted.
|
||||
|
||||
@param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance.
|
||||
|
||||
@param KeyToggleState Pointer to the EFI_KEY_TOGGLE_STATE to
|
||||
set the state for the input device.
|
||||
|
||||
|
||||
@retval EFI_SUCCESS The device state was set appropriately.
|
||||
|
||||
@retval EFI_DEVICE_ERROR The device is not functioning
|
||||
correctly and could not have the
|
||||
setting adjusted.
|
||||
|
||||
@retval EFI_UNSUPPORTED The device does not support the
|
||||
ability to have its state set.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SET_STATE)(
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
|
||||
IN EFI_KEY_TOGGLE_STATE *KeyToggleState
|
||||
);
|
||||
|
||||
///
|
||||
/// The function will be called when the key sequence is typed specified by KeyData.
|
||||
///
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_KEY_NOTIFY_FUNCTION)(
|
||||
IN EFI_KEY_DATA *KeyData
|
||||
);
|
||||
|
||||
/**
|
||||
The RegisterKeystrokeNotify() function registers a function
|
||||
which will be called when a specified keystroke will occur.
|
||||
|
||||
@param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance.
|
||||
|
||||
@param KeyData A pointer to a buffer that is filled in with
|
||||
the keystroke information for the key that was
|
||||
pressed.
|
||||
|
||||
@param KeyNotificationFunction Points to the function to be
|
||||
called when the key sequence
|
||||
is typed specified by KeyData.
|
||||
|
||||
|
||||
@param NotifyHandle Points to the unique handle assigned to
|
||||
the registered notification.
|
||||
|
||||
@retval EFI_SUCCESS The device state was set
|
||||
appropriately.
|
||||
|
||||
@retval EFI_OUT_OF_RESOURCES Unable to allocate necessary
|
||||
data structures.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY)(
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
|
||||
IN EFI_KEY_DATA *KeyData,
|
||||
IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,
|
||||
OUT VOID **NotifyHandle
|
||||
);
|
||||
|
||||
/**
|
||||
The UnregisterKeystrokeNotify() function removes the
|
||||
notification which was previously registered.
|
||||
|
||||
@param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance.
|
||||
|
||||
@param NotificationHandle The handle of the notification
|
||||
function being unregistered.
|
||||
|
||||
@retval EFI_SUCCESS The device state was set appropriately.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER The NotificationHandle is
|
||||
invalid.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY)(
|
||||
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
|
||||
IN VOID *NotificationHandle
|
||||
);
|
||||
|
||||
|
||||
///
|
||||
/// The EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL is used on the ConsoleIn
|
||||
/// device. It is an extension to the Simple Text Input protocol
|
||||
/// which allows a variety of extended shift state information to be
|
||||
/// returned.
|
||||
///
|
||||
struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL{
|
||||
EFI_INPUT_RESET_EX Reset;
|
||||
EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx;
|
||||
///
|
||||
/// Event to use with WaitForEvent() to wait for a key to be available.
|
||||
///
|
||||
EFI_EVENT WaitForKeyEx;
|
||||
EFI_SET_STATE SetState;
|
||||
EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify;
|
||||
EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify;
|
||||
};
|
||||
|
||||
|
||||
extern EFI_GUID gEfiSimpleTextInputExProtocolGuid;
|
||||
|
||||
#endif
|
||||
|
415
sys/contrib/edk2/Include/Protocol/SimpleTextOut.h
Normal file
415
sys/contrib/edk2/Include/Protocol/SimpleTextOut.h
Normal file
@ -0,0 +1,415 @@
|
||||
/** @file
|
||||
Simple Text Out protocol from the UEFI 2.0 specification.
|
||||
|
||||
Abstraction of a very simple text based output device like VGA text mode or
|
||||
a serial terminal. The Simple Text Out protocol instance can represent
|
||||
a single hardware device or a virtual device that is an aggregation
|
||||
of multiple physical devices.
|
||||
|
||||
Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __SIMPLE_TEXT_OUT_H__
|
||||
#define __SIMPLE_TEXT_OUT_H__
|
||||
|
||||
#define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \
|
||||
{ \
|
||||
0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
|
||||
}
|
||||
|
||||
///
|
||||
/// Protocol GUID defined in EFI1.1.
|
||||
///
|
||||
#define SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID
|
||||
|
||||
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
|
||||
|
||||
///
|
||||
/// Backward-compatible with EFI1.1.
|
||||
///
|
||||
typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE;
|
||||
|
||||
//
|
||||
// Define's for required EFI Unicode Box Draw characters
|
||||
//
|
||||
#define BOXDRAW_HORIZONTAL 0x2500
|
||||
#define BOXDRAW_VERTICAL 0x2502
|
||||
#define BOXDRAW_DOWN_RIGHT 0x250c
|
||||
#define BOXDRAW_DOWN_LEFT 0x2510
|
||||
#define BOXDRAW_UP_RIGHT 0x2514
|
||||
#define BOXDRAW_UP_LEFT 0x2518
|
||||
#define BOXDRAW_VERTICAL_RIGHT 0x251c
|
||||
#define BOXDRAW_VERTICAL_LEFT 0x2524
|
||||
#define BOXDRAW_DOWN_HORIZONTAL 0x252c
|
||||
#define BOXDRAW_UP_HORIZONTAL 0x2534
|
||||
#define BOXDRAW_VERTICAL_HORIZONTAL 0x253c
|
||||
#define BOXDRAW_DOUBLE_HORIZONTAL 0x2550
|
||||
#define BOXDRAW_DOUBLE_VERTICAL 0x2551
|
||||
#define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552
|
||||
#define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553
|
||||
#define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554
|
||||
#define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555
|
||||
#define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556
|
||||
#define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557
|
||||
#define BOXDRAW_UP_RIGHT_DOUBLE 0x2558
|
||||
#define BOXDRAW_UP_DOUBLE_RIGHT 0x2559
|
||||
#define BOXDRAW_DOUBLE_UP_RIGHT 0x255a
|
||||
#define BOXDRAW_UP_LEFT_DOUBLE 0x255b
|
||||
#define BOXDRAW_UP_DOUBLE_LEFT 0x255c
|
||||
#define BOXDRAW_DOUBLE_UP_LEFT 0x255d
|
||||
#define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e
|
||||
#define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f
|
||||
#define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560
|
||||
#define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561
|
||||
#define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562
|
||||
#define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563
|
||||
#define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564
|
||||
#define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565
|
||||
#define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566
|
||||
#define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567
|
||||
#define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568
|
||||
#define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569
|
||||
#define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a
|
||||
#define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b
|
||||
#define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c
|
||||
|
||||
//
|
||||
// EFI Required Block Elements Code Chart
|
||||
//
|
||||
#define BLOCKELEMENT_FULL_BLOCK 0x2588
|
||||
#define BLOCKELEMENT_LIGHT_SHADE 0x2591
|
||||
|
||||
//
|
||||
// EFI Required Geometric Shapes Code Chart
|
||||
//
|
||||
#define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2
|
||||
#define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
|
||||
#define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc
|
||||
#define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4
|
||||
|
||||
//
|
||||
// EFI Required Arrow shapes
|
||||
//
|
||||
#define ARROW_LEFT 0x2190
|
||||
#define ARROW_UP 0x2191
|
||||
#define ARROW_RIGHT 0x2192
|
||||
#define ARROW_DOWN 0x2193
|
||||
|
||||
//
|
||||
// EFI Console Colours
|
||||
//
|
||||
#define EFI_BLACK 0x00
|
||||
#define EFI_BLUE 0x01
|
||||
#define EFI_GREEN 0x02
|
||||
#define EFI_CYAN (EFI_BLUE | EFI_GREEN)
|
||||
#define EFI_RED 0x04
|
||||
#define EFI_MAGENTA (EFI_BLUE | EFI_RED)
|
||||
#define EFI_BROWN (EFI_GREEN | EFI_RED)
|
||||
#define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED)
|
||||
#define EFI_BRIGHT 0x08
|
||||
#define EFI_DARKGRAY (EFI_BLACK | EFI_BRIGHT)
|
||||
#define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT)
|
||||
#define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT)
|
||||
#define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT)
|
||||
#define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT)
|
||||
#define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT)
|
||||
#define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT)
|
||||
#define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
|
||||
|
||||
//
|
||||
// Macro to accept color values in their raw form to create
|
||||
// a value that represents both a foreground and background
|
||||
// color in a single byte.
|
||||
// For Foreground, and EFI_* value is valid from EFI_BLACK(0x00) to
|
||||
// EFI_WHITE (0x0F).
|
||||
// For Background, only EFI_BLACK, EFI_BLUE, EFI_GREEN, EFI_CYAN,
|
||||
// EFI_RED, EFI_MAGENTA, EFI_BROWN, and EFI_LIGHTGRAY are acceptable
|
||||
//
|
||||
// Do not use EFI_BACKGROUND_xxx values with this macro.
|
||||
//
|
||||
#define EFI_TEXT_ATTR(Foreground,Background) ((Foreground) | ((Background) << 4))
|
||||
|
||||
#define EFI_BACKGROUND_BLACK 0x00
|
||||
#define EFI_BACKGROUND_BLUE 0x10
|
||||
#define EFI_BACKGROUND_GREEN 0x20
|
||||
#define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
|
||||
#define EFI_BACKGROUND_RED 0x40
|
||||
#define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
|
||||
#define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
|
||||
#define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
|
||||
|
||||
//
|
||||
// We currently define attributes from 0 - 7F for color manipulations
|
||||
// To internally handle the local display characteristics for a particular character,
|
||||
// Bit 7 signifies the local glyph representation for a character. If turned on, glyphs will be
|
||||
// pulled from the wide glyph database and will display locally as a wide character (16 X 19 versus 8 X 19)
|
||||
// If bit 7 is off, the narrow glyph database will be used. This does NOT affect information that is sent to
|
||||
// non-local displays, such as serial or LAN consoles.
|
||||
//
|
||||
#define EFI_WIDE_ATTRIBUTE 0x80
|
||||
|
||||
/**
|
||||
Reset the text output device hardware and optionaly run diagnostics
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param ExtendedVerification Driver may perform more exhaustive verification
|
||||
operation of the device during reset.
|
||||
|
||||
@retval EFI_SUCCESS The text output device was reset.
|
||||
@retval EFI_DEVICE_ERROR The text output device is not functioning correctly and
|
||||
could not be reset.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_RESET)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN ExtendedVerification
|
||||
);
|
||||
|
||||
/**
|
||||
Write a string to the output device.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param String The NULL-terminated string to be displayed on the output
|
||||
device(s). All output devices must also support the Unicode
|
||||
drawing character codes defined in this file.
|
||||
|
||||
@retval EFI_SUCCESS The string was output to the device.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error while attempting to output
|
||||
the text.
|
||||
@retval EFI_UNSUPPORTED The output device's mode is not currently in a
|
||||
defined text mode.
|
||||
@retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the
|
||||
characters in the string could not be
|
||||
rendered and were skipped.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_STRING)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN CHAR16 *String
|
||||
);
|
||||
|
||||
/**
|
||||
Verifies that all characters in a string can be output to the
|
||||
target device.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param String The NULL-terminated string to be examined for the output
|
||||
device(s).
|
||||
|
||||
@retval EFI_SUCCESS The device(s) are capable of rendering the output string.
|
||||
@retval EFI_UNSUPPORTED Some of the characters in the string cannot be
|
||||
rendered by one or more of the output devices mapped
|
||||
by the EFI handle.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_TEST_STRING)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN CHAR16 *String
|
||||
);
|
||||
|
||||
/**
|
||||
Returns information for an available text mode that the output device(s)
|
||||
supports.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param ModeNumber The mode number to return information on.
|
||||
@param Columns Returns the geometry of the text output device for the
|
||||
requested ModeNumber.
|
||||
@param Rows Returns the geometry of the text output device for the
|
||||
requested ModeNumber.
|
||||
|
||||
@retval EFI_SUCCESS The requested mode information was returned.
|
||||
@retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
|
||||
@retval EFI_UNSUPPORTED The mode number was not valid.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_QUERY_MODE)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN ModeNumber,
|
||||
OUT UINTN *Columns,
|
||||
OUT UINTN *Rows
|
||||
);
|
||||
|
||||
/**
|
||||
Sets the output device(s) to a specified mode.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param ModeNumber The mode number to set.
|
||||
|
||||
@retval EFI_SUCCESS The requested text mode was set.
|
||||
@retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
|
||||
@retval EFI_UNSUPPORTED The mode number was not valid.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_SET_MODE)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN ModeNumber
|
||||
);
|
||||
|
||||
/**
|
||||
Sets the background and foreground colors for the OutputString () and
|
||||
ClearScreen () functions.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param Attribute The attribute to set. Bits 0..3 are the foreground color, and
|
||||
bits 4..6 are the background color. All other bits are undefined
|
||||
and must be zero. The valid Attributes are defined in this file.
|
||||
|
||||
@retval EFI_SUCCESS The attribute was set.
|
||||
@retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
|
||||
@retval EFI_UNSUPPORTED The attribute requested is not defined.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_SET_ATTRIBUTE)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN Attribute
|
||||
);
|
||||
|
||||
/**
|
||||
Clears the output device(s) display to the currently selected background
|
||||
color.
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
|
||||
@retval EFI_SUCCESS The operation completed successfully.
|
||||
@retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
|
||||
@retval EFI_UNSUPPORTED The output device is not in a valid text mode.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_CLEAR_SCREEN)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This
|
||||
);
|
||||
|
||||
/**
|
||||
Sets the current coordinates of the cursor position
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param Column The position to set the cursor to. Must be greater than or
|
||||
equal to zero and less than the number of columns and rows
|
||||
by QueryMode ().
|
||||
@param Row The position to set the cursor to. Must be greater than or
|
||||
equal to zero and less than the number of columns and rows
|
||||
by QueryMode ().
|
||||
|
||||
@retval EFI_SUCCESS The operation completed successfully.
|
||||
@retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
|
||||
@retval EFI_UNSUPPORTED The output device is not in a valid text mode, or the
|
||||
cursor position is invalid for the current mode.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN UINTN Column,
|
||||
IN UINTN Row
|
||||
);
|
||||
|
||||
/**
|
||||
Makes the cursor visible or invisible
|
||||
|
||||
@param This The protocol instance pointer.
|
||||
@param Visible If TRUE, the cursor is set to be visible. If FALSE, the cursor is
|
||||
set to be invisible.
|
||||
|
||||
@retval EFI_SUCCESS The operation completed successfully.
|
||||
@retval EFI_DEVICE_ERROR The device had an error and could not complete the
|
||||
request, or the device does not support changing
|
||||
the cursor mode.
|
||||
@retval EFI_UNSUPPORTED The output device is not in a valid text mode.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_TEXT_ENABLE_CURSOR)(
|
||||
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
|
||||
IN BOOLEAN Visible
|
||||
);
|
||||
|
||||
/**
|
||||
@par Data Structure Description:
|
||||
Mode Structure pointed to by Simple Text Out protocol.
|
||||
**/
|
||||
typedef struct {
|
||||
///
|
||||
/// The number of modes supported by QueryMode () and SetMode ().
|
||||
///
|
||||
INT32 MaxMode;
|
||||
|
||||
//
|
||||
// current settings
|
||||
//
|
||||
|
||||
///
|
||||
/// The text mode of the output device(s).
|
||||
///
|
||||
INT32 Mode;
|
||||
///
|
||||
/// The current character output attribute.
|
||||
///
|
||||
INT32 Attribute;
|
||||
///
|
||||
/// The cursor's column.
|
||||
///
|
||||
INT32 CursorColumn;
|
||||
///
|
||||
/// The cursor's row.
|
||||
///
|
||||
INT32 CursorRow;
|
||||
///
|
||||
/// The cursor is currently visbile or not.
|
||||
///
|
||||
BOOLEAN CursorVisible;
|
||||
} EFI_SIMPLE_TEXT_OUTPUT_MODE;
|
||||
|
||||
///
|
||||
/// The SIMPLE_TEXT_OUTPUT protocol is used to control text-based output devices.
|
||||
/// It is the minimum required protocol for any handle supplied as the ConsoleOut
|
||||
/// or StandardError device. In addition, the minimum supported text mode of such
|
||||
/// devices is at least 80 x 25 characters.
|
||||
///
|
||||
struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
|
||||
EFI_TEXT_RESET Reset;
|
||||
|
||||
EFI_TEXT_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;
|
||||
|
||||
///
|
||||
/// Pointer to SIMPLE_TEXT_OUTPUT_MODE data.
|
||||
///
|
||||
EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEfiSimpleTextOutProtocolGuid;
|
||||
|
||||
#endif
|
27
sys/contrib/edk2/Include/Uefi.h
Normal file
27
sys/contrib/edk2/Include/Uefi.h
Normal file
@ -0,0 +1,27 @@
|
||||
/** @file
|
||||
|
||||
Root include file for Mde Package UEFI, UEFI_APPLICATION type modules.
|
||||
|
||||
This is the include file for any module of type UEFI and UEFI_APPLICATION. Uefi modules only use
|
||||
types defined via this include file and can be ported easily to any
|
||||
environment.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PI_UEFI_H__
|
||||
#define __PI_UEFI_H__
|
||||
|
||||
#include <Uefi/UefiBaseType.h>
|
||||
#include <Uefi/UefiSpec.h>
|
||||
|
||||
#endif
|
||||
|
299
sys/contrib/edk2/Include/Uefi/UefiBaseType.h
Normal file
299
sys/contrib/edk2/Include/Uefi/UefiBaseType.h
Normal file
@ -0,0 +1,299 @@
|
||||
/** @file
|
||||
Defines data types and constants introduced in UEFI.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Portions copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR>
|
||||
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __UEFI_BASETYPE_H__
|
||||
#define __UEFI_BASETYPE_H__
|
||||
|
||||
#include <Base.h>
|
||||
|
||||
//
|
||||
// Basic data type definitions introduced in UEFI.
|
||||
//
|
||||
|
||||
///
|
||||
/// 128-bit buffer containing a unique identifier value.
|
||||
///
|
||||
typedef GUID EFI_GUID;
|
||||
///
|
||||
/// Function return status for EFI API.
|
||||
///
|
||||
typedef RETURN_STATUS EFI_STATUS;
|
||||
///
|
||||
/// A collection of related interfaces.
|
||||
///
|
||||
typedef VOID *EFI_HANDLE;
|
||||
///
|
||||
/// Handle to an event structure.
|
||||
///
|
||||
typedef VOID *EFI_EVENT;
|
||||
///
|
||||
/// Task priority level.
|
||||
///
|
||||
typedef UINTN EFI_TPL;
|
||||
///
|
||||
/// Logical block address.
|
||||
///
|
||||
typedef UINT64 EFI_LBA;
|
||||
|
||||
///
|
||||
/// 64-bit physical memory address.
|
||||
///
|
||||
typedef UINT64 EFI_PHYSICAL_ADDRESS;
|
||||
|
||||
///
|
||||
/// 64-bit virtual memory address.
|
||||
///
|
||||
typedef UINT64 EFI_VIRTUAL_ADDRESS;
|
||||
|
||||
///
|
||||
/// EFI Time Abstraction:
|
||||
/// Year: 1900 - 9999
|
||||
/// Month: 1 - 12
|
||||
/// Day: 1 - 31
|
||||
/// Hour: 0 - 23
|
||||
/// Minute: 0 - 59
|
||||
/// Second: 0 - 59
|
||||
/// Nanosecond: 0 - 999,999,999
|
||||
/// TimeZone: -1440 to 1440 or 2047
|
||||
///
|
||||
typedef struct {
|
||||
UINT16 Year;
|
||||
UINT8 Month;
|
||||
UINT8 Day;
|
||||
UINT8 Hour;
|
||||
UINT8 Minute;
|
||||
UINT8 Second;
|
||||
UINT8 Pad1;
|
||||
UINT32 Nanosecond;
|
||||
INT16 TimeZone;
|
||||
UINT8 Daylight;
|
||||
UINT8 Pad2;
|
||||
} EFI_TIME;
|
||||
|
||||
|
||||
///
|
||||
/// 4-byte buffer. An IPv4 internet protocol address.
|
||||
///
|
||||
typedef IPv4_ADDRESS EFI_IPv4_ADDRESS;
|
||||
|
||||
///
|
||||
/// 16-byte buffer. An IPv6 internet protocol address.
|
||||
///
|
||||
typedef IPv6_ADDRESS EFI_IPv6_ADDRESS;
|
||||
|
||||
///
|
||||
/// 32-byte buffer containing a network Media Access Control address.
|
||||
///
|
||||
typedef struct {
|
||||
UINT8 Addr[32];
|
||||
} EFI_MAC_ADDRESS;
|
||||
|
||||
///
|
||||
/// 16-byte buffer aligned on a 4-byte boundary.
|
||||
/// An IPv4 or IPv6 internet protocol address.
|
||||
///
|
||||
typedef union {
|
||||
UINT32 Addr[4];
|
||||
EFI_IPv4_ADDRESS v4;
|
||||
EFI_IPv6_ADDRESS v6;
|
||||
} EFI_IP_ADDRESS;
|
||||
|
||||
|
||||
///
|
||||
/// Enumeration of EFI_STATUS.
|
||||
///@{
|
||||
#define EFI_SUCCESS RETURN_SUCCESS
|
||||
#define EFI_LOAD_ERROR RETURN_LOAD_ERROR
|
||||
#define EFI_INVALID_PARAMETER RETURN_INVALID_PARAMETER
|
||||
#define EFI_UNSUPPORTED RETURN_UNSUPPORTED
|
||||
#define EFI_BAD_BUFFER_SIZE RETURN_BAD_BUFFER_SIZE
|
||||
#define EFI_BUFFER_TOO_SMALL RETURN_BUFFER_TOO_SMALL
|
||||
#define EFI_NOT_READY RETURN_NOT_READY
|
||||
#define EFI_DEVICE_ERROR RETURN_DEVICE_ERROR
|
||||
#define EFI_WRITE_PROTECTED RETURN_WRITE_PROTECTED
|
||||
#define EFI_OUT_OF_RESOURCES RETURN_OUT_OF_RESOURCES
|
||||
#define EFI_VOLUME_CORRUPTED RETURN_VOLUME_CORRUPTED
|
||||
#define EFI_VOLUME_FULL RETURN_VOLUME_FULL
|
||||
#define EFI_NO_MEDIA RETURN_NO_MEDIA
|
||||
#define EFI_MEDIA_CHANGED RETURN_MEDIA_CHANGED
|
||||
#define EFI_NOT_FOUND RETURN_NOT_FOUND
|
||||
#define EFI_ACCESS_DENIED RETURN_ACCESS_DENIED
|
||||
#define EFI_NO_RESPONSE RETURN_NO_RESPONSE
|
||||
#define EFI_NO_MAPPING RETURN_NO_MAPPING
|
||||
#define EFI_TIMEOUT RETURN_TIMEOUT
|
||||
#define EFI_NOT_STARTED RETURN_NOT_STARTED
|
||||
#define EFI_ALREADY_STARTED RETURN_ALREADY_STARTED
|
||||
#define EFI_ABORTED RETURN_ABORTED
|
||||
#define EFI_ICMP_ERROR RETURN_ICMP_ERROR
|
||||
#define EFI_TFTP_ERROR RETURN_TFTP_ERROR
|
||||
#define EFI_PROTOCOL_ERROR RETURN_PROTOCOL_ERROR
|
||||
#define EFI_INCOMPATIBLE_VERSION RETURN_INCOMPATIBLE_VERSION
|
||||
#define EFI_SECURITY_VIOLATION RETURN_SECURITY_VIOLATION
|
||||
#define EFI_CRC_ERROR RETURN_CRC_ERROR
|
||||
#define EFI_END_OF_MEDIA RETURN_END_OF_MEDIA
|
||||
#define EFI_END_OF_FILE RETURN_END_OF_FILE
|
||||
#define EFI_INVALID_LANGUAGE RETURN_INVALID_LANGUAGE
|
||||
#define EFI_COMPROMISED_DATA RETURN_COMPROMISED_DATA
|
||||
#define EFI_HTTP_ERROR RETURN_HTTP_ERROR
|
||||
|
||||
#define EFI_WARN_UNKNOWN_GLYPH RETURN_WARN_UNKNOWN_GLYPH
|
||||
#define EFI_WARN_DELETE_FAILURE RETURN_WARN_DELETE_FAILURE
|
||||
#define EFI_WARN_WRITE_FAILURE RETURN_WARN_WRITE_FAILURE
|
||||
#define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL
|
||||
#define EFI_WARN_STALE_DATA RETURN_WARN_STALE_DATA
|
||||
#define EFI_WARN_FILE_SYSTEM RETURN_WARN_FILE_SYSTEM
|
||||
///@}
|
||||
|
||||
///
|
||||
/// Define macro to encode the status code.
|
||||
///
|
||||
#define EFIERR(_a) ENCODE_ERROR(_a)
|
||||
|
||||
#define EFI_ERROR(A) RETURN_ERROR(A)
|
||||
|
||||
///
|
||||
/// ICMP error definitions
|
||||
///@{
|
||||
#define EFI_NETWORK_UNREACHABLE EFIERR(100)
|
||||
#define EFI_HOST_UNREACHABLE EFIERR(101)
|
||||
#define EFI_PROTOCOL_UNREACHABLE EFIERR(102)
|
||||
#define EFI_PORT_UNREACHABLE EFIERR(103)
|
||||
///@}
|
||||
|
||||
///
|
||||
/// Tcp connection status definitions
|
||||
///@{
|
||||
#define EFI_CONNECTION_FIN EFIERR(104)
|
||||
#define EFI_CONNECTION_RESET EFIERR(105)
|
||||
#define EFI_CONNECTION_REFUSED EFIERR(106)
|
||||
///@}
|
||||
|
||||
//
|
||||
// The EFI memory allocation functions work in units of EFI_PAGEs that are
|
||||
// 4KB. This should in no way be confused with the page size of the processor.
|
||||
// An EFI_PAGE is just the quanta of memory in EFI.
|
||||
//
|
||||
#define EFI_PAGE_SIZE SIZE_4KB
|
||||
#define EFI_PAGE_MASK 0xFFF
|
||||
#define EFI_PAGE_SHIFT 12
|
||||
|
||||
/**
|
||||
Macro that converts a size, in bytes, to a number of EFI_PAGESs.
|
||||
|
||||
@param Size A size in bytes. This parameter is assumed to be type UINTN.
|
||||
Passing in a parameter that is larger than UINTN may produce
|
||||
unexpected results.
|
||||
|
||||
@return The number of EFI_PAGESs associated with the number of bytes specified
|
||||
by Size.
|
||||
|
||||
**/
|
||||
#define EFI_SIZE_TO_PAGES(Size) (((Size) >> EFI_PAGE_SHIFT) + (((Size) & EFI_PAGE_MASK) ? 1 : 0))
|
||||
|
||||
/**
|
||||
Macro that converts a number of EFI_PAGEs to a size in bytes.
|
||||
|
||||
@param Pages The number of EFI_PAGES. This parameter is assumed to be
|
||||
type UINTN. Passing in a parameter that is larger than
|
||||
UINTN may produce unexpected results.
|
||||
|
||||
@return The number of bytes associated with the number of EFI_PAGEs specified
|
||||
by Pages.
|
||||
|
||||
**/
|
||||
#define EFI_PAGES_TO_SIZE(Pages) ((Pages) << EFI_PAGE_SHIFT)
|
||||
|
||||
///
|
||||
/// PE32+ Machine type for IA32 UEFI images.
|
||||
///
|
||||
#define EFI_IMAGE_MACHINE_IA32 0x014C
|
||||
|
||||
///
|
||||
/// PE32+ Machine type for IA64 UEFI images.
|
||||
///
|
||||
#define EFI_IMAGE_MACHINE_IA64 0x0200
|
||||
|
||||
///
|
||||
/// PE32+ Machine type for EBC UEFI images.
|
||||
///
|
||||
#define EFI_IMAGE_MACHINE_EBC 0x0EBC
|
||||
|
||||
///
|
||||
/// PE32+ Machine type for X64 UEFI images.
|
||||
///
|
||||
#define EFI_IMAGE_MACHINE_X64 0x8664
|
||||
|
||||
///
|
||||
/// PE32+ Machine type for ARM mixed ARM and Thumb/Thumb2 images.
|
||||
///
|
||||
#define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED 0x01C2
|
||||
|
||||
///
|
||||
/// PE32+ Machine type for AARCH64 A64 images.
|
||||
///
|
||||
#define EFI_IMAGE_MACHINE_AARCH64 0xAA64
|
||||
|
||||
|
||||
#if defined (MDE_CPU_IA32)
|
||||
|
||||
#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
|
||||
(((Machine) == EFI_IMAGE_MACHINE_IA32) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
|
||||
|
||||
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_X64)
|
||||
|
||||
#elif defined (MDE_CPU_IPF)
|
||||
|
||||
#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
|
||||
(((Machine) == EFI_IMAGE_MACHINE_IA64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
|
||||
|
||||
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
|
||||
|
||||
#elif defined (MDE_CPU_X64)
|
||||
|
||||
#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
|
||||
(((Machine) == EFI_IMAGE_MACHINE_X64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
|
||||
|
||||
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_IA32)
|
||||
|
||||
#elif defined (MDE_CPU_ARM)
|
||||
|
||||
#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
|
||||
(((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
|
||||
|
||||
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)
|
||||
|
||||
#elif defined (MDE_CPU_AARCH64)
|
||||
|
||||
#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
|
||||
(((Machine) == EFI_IMAGE_MACHINE_AARCH64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
|
||||
|
||||
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
|
||||
|
||||
#elif defined (MDE_CPU_EBC)
|
||||
|
||||
///
|
||||
/// This is just to make sure you can cross compile with the EBC compiler.
|
||||
/// It does not make sense to have a PE loader coded in EBC.
|
||||
///
|
||||
#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_EBC)
|
||||
|
||||
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
|
||||
|
||||
#else
|
||||
#error Unknown Processor Type
|
||||
#endif
|
||||
|
||||
#endif
|
141
sys/contrib/edk2/Include/Uefi/UefiGpt.h
Normal file
141
sys/contrib/edk2/Include/Uefi/UefiGpt.h
Normal file
@ -0,0 +1,141 @@
|
||||
/** @file
|
||||
EFI Guid Partition Table Format Definition.
|
||||
|
||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __UEFI_GPT_H__
|
||||
#define __UEFI_GPT_H__
|
||||
|
||||
///
|
||||
/// The primary GUID Partition Table Header must be
|
||||
/// located in LBA 1 (i.e., the second logical block).
|
||||
///
|
||||
#define PRIMARY_PART_HEADER_LBA 1
|
||||
///
|
||||
/// EFI Partition Table Signature: "EFI PART".
|
||||
///
|
||||
#define EFI_PTAB_HEADER_ID SIGNATURE_64 ('E','F','I',' ','P','A','R','T')
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
///
|
||||
/// GPT Partition Table Header.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// The table header for the GPT partition Table.
|
||||
/// This header contains EFI_PTAB_HEADER_ID.
|
||||
///
|
||||
EFI_TABLE_HEADER Header;
|
||||
///
|
||||
/// The LBA that contains this data structure.
|
||||
///
|
||||
EFI_LBA MyLBA;
|
||||
///
|
||||
/// LBA address of the alternate GUID Partition Table Header.
|
||||
///
|
||||
EFI_LBA AlternateLBA;
|
||||
///
|
||||
/// The first usable logical block that may be used
|
||||
/// by a partition described by a GUID Partition Entry.
|
||||
///
|
||||
EFI_LBA FirstUsableLBA;
|
||||
///
|
||||
/// The last usable logical block that may be used
|
||||
/// by a partition described by a GUID Partition Entry.
|
||||
///
|
||||
EFI_LBA LastUsableLBA;
|
||||
///
|
||||
/// GUID that can be used to uniquely identify the disk.
|
||||
///
|
||||
EFI_GUID DiskGUID;
|
||||
///
|
||||
/// The starting LBA of the GUID Partition Entry array.
|
||||
///
|
||||
EFI_LBA PartitionEntryLBA;
|
||||
///
|
||||
/// The number of Partition Entries in the GUID Partition Entry array.
|
||||
///
|
||||
UINT32 NumberOfPartitionEntries;
|
||||
///
|
||||
/// The size, in bytes, of each the GUID Partition
|
||||
/// Entry structures in the GUID Partition Entry
|
||||
/// array. This field shall be set to a value of 128 x 2^n where n is
|
||||
/// an integer greater than or equal to zero (e.g., 128, 256, 512, etc.).
|
||||
///
|
||||
UINT32 SizeOfPartitionEntry;
|
||||
///
|
||||
/// The CRC32 of the GUID Partition Entry array.
|
||||
/// Starts at PartitionEntryLBA and is
|
||||
/// computed over a byte length of
|
||||
/// NumberOfPartitionEntries * SizeOfPartitionEntry.
|
||||
///
|
||||
UINT32 PartitionEntryArrayCRC32;
|
||||
} EFI_PARTITION_TABLE_HEADER;
|
||||
|
||||
///
|
||||
/// GPT Partition Entry.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// Unique ID that defines the purpose and type of this Partition. A value of
|
||||
/// zero defines that this partition entry is not being used.
|
||||
///
|
||||
EFI_GUID PartitionTypeGUID;
|
||||
///
|
||||
/// GUID that is unique for every partition entry. Every partition ever
|
||||
/// created will have a unique GUID.
|
||||
/// This GUID must be assigned when the GUID Partition Entry is created.
|
||||
///
|
||||
EFI_GUID UniquePartitionGUID;
|
||||
///
|
||||
/// Starting LBA of the partition defined by this entry
|
||||
///
|
||||
EFI_LBA StartingLBA;
|
||||
///
|
||||
/// Ending LBA of the partition defined by this entry.
|
||||
///
|
||||
EFI_LBA EndingLBA;
|
||||
///
|
||||
/// Attribute bits, all bits reserved by UEFI
|
||||
/// Bit 0: If this bit is set, the partition is required for the platform to function. The owner/creator of the
|
||||
/// partition indicates that deletion or modification of the contents can result in loss of platform
|
||||
/// features or failure for the platform to boot or operate. The system cannot function normally if
|
||||
/// this partition is removed, and it should be considered part of the hardware of the system.
|
||||
/// Actions such as running diagnostics, system recovery, or even OS install or boot, could
|
||||
/// potentially stop working if this partition is removed. Unless OS software or firmware
|
||||
/// recognizes this partition, it should never be removed or modified as the UEFI firmware or
|
||||
/// platform hardware may become non-functional.
|
||||
/// Bit 1: If this bit is set, then firmware must not produce an EFI_BLOCK_IO_PROTOCOL device for
|
||||
/// this partition. By not producing an EFI_BLOCK_IO_PROTOCOL partition, file system
|
||||
/// mappings will not be created for this partition in UEFI.
|
||||
/// Bit 2: This bit is set aside to let systems with traditional PC-AT BIOS firmware implementations
|
||||
/// inform certain limited, special-purpose software running on these systems that a GPT
|
||||
/// partition may be bootable. The UEFI boot manager must ignore this bit when selecting
|
||||
/// a UEFI-compliant application, e.g., an OS loader.
|
||||
/// Bits 3-47: Undefined and must be zero. Reserved for expansion by future versions of the UEFI
|
||||
/// specification.
|
||||
/// Bits 48-63: Reserved for GUID specific use. The use of these bits will vary depending on the
|
||||
/// PartitionTypeGUID. Only the owner of the PartitionTypeGUID is allowed
|
||||
/// to modify these bits. They must be preserved if Bits 0-47 are modified..
|
||||
///
|
||||
UINT64 Attributes;
|
||||
///
|
||||
/// Null-terminated name of the partition.
|
||||
///
|
||||
CHAR16 PartitionName[36];
|
||||
} EFI_PARTITION_ENTRY;
|
||||
|
||||
#pragma pack()
|
||||
#endif
|
||||
|
||||
|
2135
sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h
Normal file
2135
sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h
Normal file
File diff suppressed because it is too large
Load Diff
231
sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h
Normal file
231
sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h
Normal file
@ -0,0 +1,231 @@
|
||||
/** @file
|
||||
This includes some definitions introduced in UEFI that will be used in both PEI and DXE phases.
|
||||
|
||||
Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __UEFI_MULTIPHASE_H__
|
||||
#define __UEFI_MULTIPHASE_H__
|
||||
|
||||
#include <Guid/WinCertificate.h>
|
||||
///
|
||||
/// Enumeration of memory types introduced in UEFI.
|
||||
///
|
||||
typedef enum {
|
||||
///
|
||||
/// Not used.
|
||||
///
|
||||
EfiReservedMemoryType,
|
||||
///
|
||||
/// The code portions of a loaded application.
|
||||
/// (Note that UEFI OS loaders are UEFI applications.)
|
||||
///
|
||||
EfiLoaderCode,
|
||||
///
|
||||
/// The data portions of a loaded application and the default data allocation
|
||||
/// type used by an application to allocate pool memory.
|
||||
///
|
||||
EfiLoaderData,
|
||||
///
|
||||
/// The code portions of a loaded Boot Services Driver.
|
||||
///
|
||||
EfiBootServicesCode,
|
||||
///
|
||||
/// The data portions of a loaded Boot Serves Driver, and the default data
|
||||
/// allocation type used by a Boot Services Driver to allocate pool memory.
|
||||
///
|
||||
EfiBootServicesData,
|
||||
///
|
||||
/// The code portions of a loaded Runtime Services Driver.
|
||||
///
|
||||
EfiRuntimeServicesCode,
|
||||
///
|
||||
/// The data portions of a loaded Runtime Services Driver and the default
|
||||
/// data allocation type used by a Runtime Services Driver to allocate pool memory.
|
||||
///
|
||||
EfiRuntimeServicesData,
|
||||
///
|
||||
/// Free (unallocated) memory.
|
||||
///
|
||||
EfiConventionalMemory,
|
||||
///
|
||||
/// Memory in which errors have been detected.
|
||||
///
|
||||
EfiUnusableMemory,
|
||||
///
|
||||
/// Memory that holds the ACPI tables.
|
||||
///
|
||||
EfiACPIReclaimMemory,
|
||||
///
|
||||
/// Address space reserved for use by the firmware.
|
||||
///
|
||||
EfiACPIMemoryNVS,
|
||||
///
|
||||
/// Used by system firmware to request that a memory-mapped IO region
|
||||
/// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
|
||||
///
|
||||
EfiMemoryMappedIO,
|
||||
///
|
||||
/// System memory-mapped IO region that is used to translate memory
|
||||
/// cycles to IO cycles by the processor.
|
||||
///
|
||||
EfiMemoryMappedIOPortSpace,
|
||||
///
|
||||
/// Address space reserved by the firmware for code that is part of the processor.
|
||||
///
|
||||
EfiPalCode,
|
||||
///
|
||||
/// A memory region that operates as EfiConventionalMemory,
|
||||
/// however it happens to also support byte-addressable non-volatility.
|
||||
///
|
||||
EfiPersistentMemory,
|
||||
EfiMaxMemoryType
|
||||
} EFI_MEMORY_TYPE;
|
||||
|
||||
///
|
||||
/// Enumeration of reset types.
|
||||
///
|
||||
typedef enum {
|
||||
///
|
||||
/// Used to induce a system-wide reset. This sets all circuitry within the
|
||||
/// system to its initial state. This type of reset is asynchronous to system
|
||||
/// operation and operates withgout regard to cycle boundaries. EfiColdReset
|
||||
/// is tantamount to a system power cycle.
|
||||
///
|
||||
EfiResetCold,
|
||||
///
|
||||
/// Used to induce a system-wide initialization. The processors are set to their
|
||||
/// initial state, and pending cycles are not corrupted. If the system does
|
||||
/// not support this reset type, then an EfiResetCold must be performed.
|
||||
///
|
||||
EfiResetWarm,
|
||||
///
|
||||
/// Used to induce an entry into a power state equivalent to the ACPI G2/S5 or G3
|
||||
/// state. If the system does not support this reset type, then when the system
|
||||
/// is rebooted, it should exhibit the EfiResetCold attributes.
|
||||
///
|
||||
EfiResetShutdown,
|
||||
///
|
||||
/// Used to induce a system-wide reset. The exact type of the reset is defined by
|
||||
/// the EFI_GUID that follows the Null-terminated Unicode string passed into
|
||||
/// ResetData. If the platform does not recognize the EFI_GUID in ResetData the
|
||||
/// platform must pick a supported reset type to perform. The platform may
|
||||
/// optionally log the parameters from any non-normal reset that occurs.
|
||||
///
|
||||
EfiResetPlatformSpecific
|
||||
} EFI_RESET_TYPE;
|
||||
|
||||
///
|
||||
/// Data structure that precedes all of the standard EFI table types.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// A 64-bit signature that identifies the type of table that follows.
|
||||
/// Unique signatures have been generated for the EFI System Table,
|
||||
/// the EFI Boot Services Table, and the EFI Runtime Services Table.
|
||||
///
|
||||
UINT64 Signature;
|
||||
///
|
||||
/// The revision of the EFI Specification to which this table
|
||||
/// conforms. The upper 16 bits of this field contain the major
|
||||
/// revision value, and the lower 16 bits contain the minor revision
|
||||
/// value. The minor revision values are limited to the range of 00..99.
|
||||
///
|
||||
UINT32 Revision;
|
||||
///
|
||||
/// The size, in bytes, of the entire table including the EFI_TABLE_HEADER.
|
||||
///
|
||||
UINT32 HeaderSize;
|
||||
///
|
||||
/// The 32-bit CRC for the entire table. This value is computed by
|
||||
/// setting this field to 0, and computing the 32-bit CRC for HeaderSize bytes.
|
||||
///
|
||||
UINT32 CRC32;
|
||||
///
|
||||
/// Reserved field that must be set to 0.
|
||||
///
|
||||
UINT32 Reserved;
|
||||
} EFI_TABLE_HEADER;
|
||||
|
||||
///
|
||||
/// Attributes of variable.
|
||||
///
|
||||
#define EFI_VARIABLE_NON_VOLATILE 0x00000001
|
||||
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
|
||||
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
|
||||
///
|
||||
/// This attribute is identified by the mnemonic 'HR'
|
||||
/// elsewhere in this specification.
|
||||
///
|
||||
#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
|
||||
///
|
||||
/// Attributes of Authenticated Variable
|
||||
///
|
||||
#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
|
||||
#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020
|
||||
#define EFI_VARIABLE_APPEND_WRITE 0x00000040
|
||||
|
||||
|
||||
///
|
||||
/// AuthInfo is a WIN_CERTIFICATE using the wCertificateType
|
||||
/// WIN_CERTIFICATE_UEFI_GUID and the CertType
|
||||
/// EFI_CERT_TYPE_RSA2048_SHA256_GUID. If the attribute specifies
|
||||
/// authenticated access, then the Data buffer should begin with an
|
||||
/// authentication descriptor prior to the data payload and DataSize
|
||||
/// should reflect the the data.and descriptor size. The caller
|
||||
/// shall digest the Monotonic Count value and the associated data
|
||||
/// for the variable update using the SHA-256 1-way hash algorithm.
|
||||
/// The ensuing the 32-byte digest will be signed using the private
|
||||
/// key associated w/ the public/private 2048-bit RSA key-pair. The
|
||||
/// WIN_CERTIFICATE shall be used to describe the signature of the
|
||||
/// Variable data *Data. In addition, the signature will also
|
||||
/// include the MonotonicCount value to guard against replay attacks.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// Included in the signature of
|
||||
/// AuthInfo.Used to ensure freshness/no
|
||||
/// replay. Incremented during each
|
||||
/// "Write" access.
|
||||
///
|
||||
UINT64 MonotonicCount;
|
||||
///
|
||||
/// Provides the authorization for the variable
|
||||
/// access. It is a signature across the
|
||||
/// variable data and the Monotonic Count
|
||||
/// value. Caller uses Private key that is
|
||||
/// associated with a public key that has been
|
||||
/// provisioned via the key exchange.
|
||||
///
|
||||
WIN_CERTIFICATE_UEFI_GUID AuthInfo;
|
||||
} EFI_VARIABLE_AUTHENTICATION;
|
||||
|
||||
///
|
||||
/// When the attribute EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS is
|
||||
/// set, then the Data buffer shall begin with an instance of a complete (and serialized)
|
||||
/// EFI_VARIABLE_AUTHENTICATION_2 descriptor. The descriptor shall be followed by the new
|
||||
/// variable value and DataSize shall reflect the combined size of the descriptor and the new
|
||||
/// variable value. The authentication descriptor is not part of the variable data and is not
|
||||
/// returned by subsequent calls to GetVariable().
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// For the TimeStamp value, components Pad1, Nanosecond, TimeZone, Daylight and
|
||||
/// Pad2 shall be set to 0. This means that the time shall always be expressed in GMT.
|
||||
///
|
||||
EFI_TIME TimeStamp;
|
||||
///
|
||||
/// Only a CertType of EFI_CERT_TYPE_PKCS7_GUID is accepted.
|
||||
///
|
||||
WIN_CERTIFICATE_UEFI_GUID AuthInfo;
|
||||
} EFI_VARIABLE_AUTHENTICATION_2;
|
||||
|
||||
#endif
|
1792
sys/contrib/edk2/Include/Uefi/UefiPxe.h
Normal file
1792
sys/contrib/edk2/Include/Uefi/UefiPxe.h
Normal file
File diff suppressed because it is too large
Load Diff
2194
sys/contrib/edk2/Include/Uefi/UefiSpec.h
Normal file
2194
sys/contrib/edk2/Include/Uefi/UefiSpec.h
Normal file
File diff suppressed because it is too large
Load Diff
2140
sys/contrib/edk2/MdePkg.dec
Normal file
2140
sys/contrib/edk2/MdePkg.dec
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user