Index: head/sys/contrib/edk2/Include/Base.h
===================================================================
--- head/sys/contrib/edk2/Include/Base.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Base.h (revision 361802)
@@ -1,1270 +1,1315 @@
/** @file
Root include file for Mde Package Base type modules
This is the include file for any module of type base. Base modules only use
types defined via this include file and can be ported easily to any
environment. There are a set of base libraries in the Mde Package that can
be used to implement base modules.
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
-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.
+SPDX-License-Identifier: BSD-2-Clause-Patent
-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_H__
#define __BASE_H__
//
// Include processor specific binding
//
#include
#if defined(_MSC_EXTENSIONS)
//
// Disable warning when last field of data structure is a zero sized array.
//
#pragma warning ( disable : 4200 )
#endif
-/**
- Verifies the storage size of a given data type.
-
- This macro generates a divide by zero error or a zero size array declaration in
- the preprocessor if the size is incorrect. These are declared as "extern" so
- the space for these arrays will not be in the modules.
-
- @param TYPE The date type to determine the size of.
- @param Size The expected size for the TYPE.
-
-**/
-#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8 _VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
-
//
-// Verify that ProcessorBind.h produced UEFI Data Types that are compliant with
-// Section 2.3.1 of the UEFI 2.3 Specification.
-//
-VERIFY_SIZE_OF (BOOLEAN, 1);
-VERIFY_SIZE_OF (INT8, 1);
-VERIFY_SIZE_OF (UINT8, 1);
-VERIFY_SIZE_OF (INT16, 2);
-VERIFY_SIZE_OF (UINT16, 2);
-VERIFY_SIZE_OF (INT32, 4);
-VERIFY_SIZE_OF (UINT32, 4);
-VERIFY_SIZE_OF (INT64, 8);
-VERIFY_SIZE_OF (UINT64, 8);
-VERIFY_SIZE_OF (CHAR8, 1);
-VERIFY_SIZE_OF (CHAR16, 2);
-
-//
-// The following three enum types are used to verify that the compiler
-// configuration for enum types is compliant with Section 2.3.1 of the
-// UEFI 2.3 Specification. These enum types and enum values are not
-// intended to be used. A prefix of '__' is used avoid conflicts with
-// other types.
-//
-typedef enum {
- __VerifyUint8EnumValue = 0xff
-} __VERIFY_UINT8_ENUM_SIZE;
-
-typedef enum {
- __VerifyUint16EnumValue = 0xffff
-} __VERIFY_UINT16_ENUM_SIZE;
-
-typedef enum {
- __VerifyUint32EnumValue = 0xffffffff
-} __VERIFY_UINT32_ENUM_SIZE;
-
-VERIFY_SIZE_OF (__VERIFY_UINT8_ENUM_SIZE, 4);
-VERIFY_SIZE_OF (__VERIFY_UINT16_ENUM_SIZE, 4);
-VERIFY_SIZE_OF (__VERIFY_UINT32_ENUM_SIZE, 4);
-
-//
// The Microsoft* C compiler can removed references to unreferenced data items
// if the /OPT:REF linker option is used. We defined a macro as this is a
// a non standard extension
//
-#if defined(_MSC_EXTENSIONS) && !defined (MDE_CPU_EBC)
+#if defined(_MSC_VER) && _MSC_VER < 1800 && !defined (MDE_CPU_EBC)
///
/// Remove global variable from the linked image if there are no references to
/// it after all compiler and linker optimizations have been performed.
///
///
#define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)
#else
///
/// Remove the global variable from the linked image if there are no references
/// to it after all compiler and linker optimizations have been performed.
///
///
#define GLOBAL_REMOVE_IF_UNREFERENCED
#endif
//
// Should be used in combination with NORETURN to avoid 'noreturn' returns
// warnings.
//
#ifndef UNREACHABLE
- #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)
+ #ifdef __GNUC__
///
/// Signal compilers and analyzers that this call is not reachable. It is
/// up to the compiler to remove any code past that point.
- /// Not implemented by GCC 4.4 or earlier.
///
#define UNREACHABLE() __builtin_unreachable ()
#elif defined (__has_feature)
#if __has_builtin (__builtin_unreachable)
///
/// Signal compilers and analyzers that this call is not reachable. It is
/// up to the compiler to remove any code past that point.
///
#define UNREACHABLE() __builtin_unreachable ()
#endif
#endif
#ifndef UNREACHABLE
///
/// Signal compilers and analyzers that this call is not reachable. It is
/// up to the compiler to remove any code past that point.
///
#define UNREACHABLE()
#endif
#endif
//
// Signaling compilers and analyzers that a certain function cannot return may
// remove all following code and thus lead to better optimization and less
// false positives.
//
#ifndef NORETURN
#if defined (__GNUC__) || defined (__clang__)
///
/// Signal compilers and analyzers that the function cannot return.
/// It is up to the compiler to remove any code past a call to functions
/// flagged with this attribute.
///
#define NORETURN __attribute__((noreturn))
#elif defined(_MSC_EXTENSIONS) && !defined(MDE_CPU_EBC)
///
/// Signal compilers and analyzers that the function cannot return.
/// It is up to the compiler to remove any code past a call to functions
/// flagged with this attribute.
///
#define NORETURN __declspec(noreturn)
#else
///
/// Signal compilers and analyzers that the function cannot return.
/// It is up to the compiler to remove any code past a call to functions
/// flagged with this attribute.
///
#define NORETURN
#endif
#endif
//
// Should be used in combination with ANALYZER_NORETURN to avoid 'noreturn'
// returns warnings.
//
#ifndef ANALYZER_UNREACHABLE
#ifdef __clang_analyzer__
#if __has_builtin (__builtin_unreachable)
///
/// Signal the analyzer that this call is not reachable.
/// This excludes compilers.
///
#define ANALYZER_UNREACHABLE() __builtin_unreachable ()
#endif
#endif
#ifndef ANALYZER_UNREACHABLE
///
/// Signal the analyzer that this call is not reachable.
/// This excludes compilers.
///
#define ANALYZER_UNREACHABLE()
#endif
#endif
//
// Static Analyzers may issue errors about potential NULL-dereferences when
// dereferencing a pointer, that has been checked before, outside of a
// NULL-check. This may lead to false positives, such as when using ASSERT()
// for verification.
//
#ifndef ANALYZER_NORETURN
#ifdef __has_feature
#if __has_feature (attribute_analyzer_noreturn)
///
/// Signal analyzers that the function cannot return.
/// This excludes compilers.
///
#define ANALYZER_NORETURN __attribute__((analyzer_noreturn))
#endif
#endif
#ifndef ANALYZER_NORETURN
///
/// Signal the analyzer that the function cannot return.
/// This excludes compilers.
///
#define ANALYZER_NORETURN
#endif
#endif
+///
+/// Tell the code optimizer that the function will return twice.
+/// This prevents wrong optimizations which can cause bugs.
+///
+#ifndef RETURNS_TWICE
+ #if defined (__GNUC__) || defined (__clang__)
+ ///
+ /// Tell the code optimizer that the function will return twice.
+ /// This prevents wrong optimizations which can cause bugs.
+ ///
+ #define RETURNS_TWICE __attribute__((returns_twice))
+ #else
+ ///
+ /// Tell the code optimizer that the function will return twice.
+ /// This prevents wrong optimizations which can cause bugs.
+ ///
+ #define RETURNS_TWICE
+ #endif
+#endif
+
//
// For symbol name in assembly code, an extra "_" is sometimes necessary
//
///
/// Private worker functions for ASM_PFX()
///
#define _CONCATENATE(a, b) __CONCATENATE(a, b)
#define __CONCATENATE(a, b) a ## b
///
/// The __USER_LABEL_PREFIX__ macro predefined by GNUC represents the prefix
/// on symbols in assembly language.
///
#define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name)
-#if __APPLE__
+#ifdef __APPLE__
//
// Apple extension that is used by the linker to optimize code size
// with assembly functions. Put at the end of your .S files
//
#define ASM_FUNCTION_REMOVE_IF_UNREFERENCED .subsections_via_symbols
#else
#define ASM_FUNCTION_REMOVE_IF_UNREFERENCED
#endif
#ifdef __CC_ARM
//
// Older RVCT ARM compilers don't fully support #pragma pack and require __packed
// as a prefix for the structure.
//
#define PACKED __packed
#else
#define PACKED
#endif
///
/// 128 bit buffer containing a unique identifier value.
/// Unless otherwise specified, aligned on a 64 bit boundary.
///
typedef struct {
UINT32 Data1;
UINT16 Data2;
UINT16 Data3;
UINT8 Data4[8];
} GUID;
///
/// 4-byte buffer. An IPv4 internet protocol address.
///
typedef struct {
UINT8 Addr[4];
} IPv4_ADDRESS;
///
/// 16-byte buffer. An IPv6 internet protocol address.
///
typedef struct {
UINT8 Addr[16];
} IPv6_ADDRESS;
//
// 8-bytes unsigned value that represents a physical system address.
//
typedef UINT64 PHYSICAL_ADDRESS;
///
/// LIST_ENTRY structure definition.
///
typedef struct _LIST_ENTRY LIST_ENTRY;
///
/// _LIST_ENTRY structure definition.
///
struct _LIST_ENTRY {
LIST_ENTRY *ForwardLink;
LIST_ENTRY *BackLink;
};
//
// Modifiers to abstract standard types to aid in debug of problems
//
///
/// Datum is read-only.
///
#define CONST const
///
/// Datum is scoped to the current file or function.
///
#define STATIC static
///
/// Undeclared type.
///
#define VOID void
//
// Modifiers for Data Types used to self document code.
// This concept is borrowed for UEFI specification.
//
///
/// Datum is passed to the function.
///
#define IN
///
/// Datum is returned from the function.
///
#define OUT
///
/// Passing the datum to the function is optional, and a NULL
/// is passed if the value is not supplied.
///
#define OPTIONAL
//
// UEFI specification claims 1 and 0. We are concerned about the
// compiler portability so we did it this way.
//
///
/// Boolean true value. UEFI Specification defines this value to be 1,
/// but this form is more portable.
///
#define TRUE ((BOOLEAN)(1==1))
///
/// Boolean false value. UEFI Specification defines this value to be 0,
/// but this form is more portable.
///
#define FALSE ((BOOLEAN)(0==1))
///
/// NULL pointer (VOID *)
///
#define NULL ((VOID *) 0)
//
// Null character
//
#define CHAR_NULL 0x0000
///
/// Maximum values for common UEFI Data Types
///
#define MAX_INT8 ((INT8)0x7F)
#define MAX_UINT8 ((UINT8)0xFF)
#define MAX_INT16 ((INT16)0x7FFF)
#define MAX_UINT16 ((UINT16)0xFFFF)
#define MAX_INT32 ((INT32)0x7FFFFFFF)
#define MAX_UINT32 ((UINT32)0xFFFFFFFF)
#define MAX_INT64 ((INT64)0x7FFFFFFFFFFFFFFFULL)
#define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL)
+///
+/// Minimum values for the signed UEFI Data Types
+///
+#define MIN_INT8 (((INT8) -127) - 1)
+#define MIN_INT16 (((INT16) -32767) - 1)
+#define MIN_INT32 (((INT32) -2147483647) - 1)
+#define MIN_INT64 (((INT64) -9223372036854775807LL) - 1)
+
#define BIT0 0x00000001
#define BIT1 0x00000002
#define BIT2 0x00000004
#define BIT3 0x00000008
#define BIT4 0x00000010
#define BIT5 0x00000020
#define BIT6 0x00000040
#define BIT7 0x00000080
#define BIT8 0x00000100
#define BIT9 0x00000200
#define BIT10 0x00000400
#define BIT11 0x00000800
#define BIT12 0x00001000
#define BIT13 0x00002000
#define BIT14 0x00004000
#define BIT15 0x00008000
#define BIT16 0x00010000
#define BIT17 0x00020000
#define BIT18 0x00040000
#define BIT19 0x00080000
#define BIT20 0x00100000
#define BIT21 0x00200000
#define BIT22 0x00400000
#define BIT23 0x00800000
#define BIT24 0x01000000
#define BIT25 0x02000000
#define BIT26 0x04000000
#define BIT27 0x08000000
#define BIT28 0x10000000
#define BIT29 0x20000000
#define BIT30 0x40000000
#define BIT31 0x80000000
#define BIT32 0x0000000100000000ULL
#define BIT33 0x0000000200000000ULL
#define BIT34 0x0000000400000000ULL
#define BIT35 0x0000000800000000ULL
#define BIT36 0x0000001000000000ULL
#define BIT37 0x0000002000000000ULL
#define BIT38 0x0000004000000000ULL
#define BIT39 0x0000008000000000ULL
#define BIT40 0x0000010000000000ULL
#define BIT41 0x0000020000000000ULL
#define BIT42 0x0000040000000000ULL
#define BIT43 0x0000080000000000ULL
#define BIT44 0x0000100000000000ULL
#define BIT45 0x0000200000000000ULL
#define BIT46 0x0000400000000000ULL
#define BIT47 0x0000800000000000ULL
#define BIT48 0x0001000000000000ULL
#define BIT49 0x0002000000000000ULL
#define BIT50 0x0004000000000000ULL
#define BIT51 0x0008000000000000ULL
#define BIT52 0x0010000000000000ULL
#define BIT53 0x0020000000000000ULL
#define BIT54 0x0040000000000000ULL
#define BIT55 0x0080000000000000ULL
#define BIT56 0x0100000000000000ULL
#define BIT57 0x0200000000000000ULL
#define BIT58 0x0400000000000000ULL
#define BIT59 0x0800000000000000ULL
#define BIT60 0x1000000000000000ULL
#define BIT61 0x2000000000000000ULL
#define BIT62 0x4000000000000000ULL
#define BIT63 0x8000000000000000ULL
#define SIZE_1KB 0x00000400
#define SIZE_2KB 0x00000800
#define SIZE_4KB 0x00001000
#define SIZE_8KB 0x00002000
#define SIZE_16KB 0x00004000
#define SIZE_32KB 0x00008000
#define SIZE_64KB 0x00010000
#define SIZE_128KB 0x00020000
#define SIZE_256KB 0x00040000
#define SIZE_512KB 0x00080000
#define SIZE_1MB 0x00100000
#define SIZE_2MB 0x00200000
#define SIZE_4MB 0x00400000
#define SIZE_8MB 0x00800000
#define SIZE_16MB 0x01000000
#define SIZE_32MB 0x02000000
#define SIZE_64MB 0x04000000
#define SIZE_128MB 0x08000000
#define SIZE_256MB 0x10000000
#define SIZE_512MB 0x20000000
#define SIZE_1GB 0x40000000
#define SIZE_2GB 0x80000000
#define SIZE_4GB 0x0000000100000000ULL
#define SIZE_8GB 0x0000000200000000ULL
#define SIZE_16GB 0x0000000400000000ULL
#define SIZE_32GB 0x0000000800000000ULL
#define SIZE_64GB 0x0000001000000000ULL
#define SIZE_128GB 0x0000002000000000ULL
#define SIZE_256GB 0x0000004000000000ULL
#define SIZE_512GB 0x0000008000000000ULL
#define SIZE_1TB 0x0000010000000000ULL
#define SIZE_2TB 0x0000020000000000ULL
#define SIZE_4TB 0x0000040000000000ULL
#define SIZE_8TB 0x0000080000000000ULL
#define SIZE_16TB 0x0000100000000000ULL
#define SIZE_32TB 0x0000200000000000ULL
#define SIZE_64TB 0x0000400000000000ULL
#define SIZE_128TB 0x0000800000000000ULL
#define SIZE_256TB 0x0001000000000000ULL
#define SIZE_512TB 0x0002000000000000ULL
#define SIZE_1PB 0x0004000000000000ULL
#define SIZE_2PB 0x0008000000000000ULL
#define SIZE_4PB 0x0010000000000000ULL
#define SIZE_8PB 0x0020000000000000ULL
#define SIZE_16PB 0x0040000000000000ULL
#define SIZE_32PB 0x0080000000000000ULL
#define SIZE_64PB 0x0100000000000000ULL
#define SIZE_128PB 0x0200000000000000ULL
#define SIZE_256PB 0x0400000000000000ULL
#define SIZE_512PB 0x0800000000000000ULL
#define SIZE_1EB 0x1000000000000000ULL
#define SIZE_2EB 0x2000000000000000ULL
#define SIZE_4EB 0x4000000000000000ULL
#define SIZE_8EB 0x8000000000000000ULL
#define BASE_1KB 0x00000400
#define BASE_2KB 0x00000800
#define BASE_4KB 0x00001000
#define BASE_8KB 0x00002000
#define BASE_16KB 0x00004000
#define BASE_32KB 0x00008000
#define BASE_64KB 0x00010000
#define BASE_128KB 0x00020000
#define BASE_256KB 0x00040000
#define BASE_512KB 0x00080000
#define BASE_1MB 0x00100000
#define BASE_2MB 0x00200000
#define BASE_4MB 0x00400000
#define BASE_8MB 0x00800000
#define BASE_16MB 0x01000000
#define BASE_32MB 0x02000000
#define BASE_64MB 0x04000000
#define BASE_128MB 0x08000000
#define BASE_256MB 0x10000000
#define BASE_512MB 0x20000000
#define BASE_1GB 0x40000000
#define BASE_2GB 0x80000000
#define BASE_4GB 0x0000000100000000ULL
#define BASE_8GB 0x0000000200000000ULL
#define BASE_16GB 0x0000000400000000ULL
#define BASE_32GB 0x0000000800000000ULL
#define BASE_64GB 0x0000001000000000ULL
#define BASE_128GB 0x0000002000000000ULL
#define BASE_256GB 0x0000004000000000ULL
#define BASE_512GB 0x0000008000000000ULL
#define BASE_1TB 0x0000010000000000ULL
#define BASE_2TB 0x0000020000000000ULL
#define BASE_4TB 0x0000040000000000ULL
#define BASE_8TB 0x0000080000000000ULL
#define BASE_16TB 0x0000100000000000ULL
#define BASE_32TB 0x0000200000000000ULL
#define BASE_64TB 0x0000400000000000ULL
#define BASE_128TB 0x0000800000000000ULL
#define BASE_256TB 0x0001000000000000ULL
#define BASE_512TB 0x0002000000000000ULL
#define BASE_1PB 0x0004000000000000ULL
#define BASE_2PB 0x0008000000000000ULL
#define BASE_4PB 0x0010000000000000ULL
#define BASE_8PB 0x0020000000000000ULL
#define BASE_16PB 0x0040000000000000ULL
#define BASE_32PB 0x0080000000000000ULL
#define BASE_64PB 0x0100000000000000ULL
#define BASE_128PB 0x0200000000000000ULL
#define BASE_256PB 0x0400000000000000ULL
#define BASE_512PB 0x0800000000000000ULL
#define BASE_1EB 0x1000000000000000ULL
#define BASE_2EB 0x2000000000000000ULL
#define BASE_4EB 0x4000000000000000ULL
#define BASE_8EB 0x8000000000000000ULL
//
-// Support for variable length argument lists using the ANSI standard.
+// Support for variable argument lists in freestanding edk2 modules.
//
-// Since we are using the ANSI standard we used the standard naming and
-// did not follow the coding convention
+// For modules that use the ISO C library interfaces for variable
+// argument lists, refer to "StdLib/Include/stdarg.h".
//
// VA_LIST - typedef for argument list.
// VA_START (VA_LIST Marker, argument before the ...) - Init Marker for use.
// VA_END (VA_LIST Marker) - Clear Marker
-// VA_ARG (VA_LIST Marker, var arg size) - Use Marker to get an argument from
-// the ... list. You must know the size and pass it in this macro.
+// VA_ARG (VA_LIST Marker, var arg type) - Use Marker to get an argument from
+// the ... list. You must know the type and pass it in this macro. Type
+// must be compatible with the type of the actual next argument (as promoted
+// according to the default argument promotions.)
// VA_COPY (VA_LIST Dest, VA_LIST Start) - Initialize Dest as a copy of Start.
//
-// example:
+// Example:
//
// UINTN
+// EFIAPI
// ExampleVarArg (
// IN UINTN NumberOfArgs,
// ...
// )
// {
// VA_LIST Marker;
// UINTN Index;
// UINTN Result;
//
// //
// // Initialize the Marker
// //
// VA_START (Marker, NumberOfArgs);
// for (Index = 0, Result = 0; Index < NumberOfArgs; Index++) {
// //
-// // The ... list is a series of UINTN values, so average them up.
+// // The ... list is a series of UINTN values, so sum them up.
// //
// Result += VA_ARG (Marker, UINTN);
// }
//
// VA_END (Marker);
-// return Result
+// return Result;
// }
//
+// Notes:
+// - Functions that call VA_START() / VA_END() must have a variable
+// argument list and must be declared EFIAPI.
+// - Functions that call VA_COPY() / VA_END() must be declared EFIAPI.
+// - Functions that only use VA_LIST and VA_ARG() need not be EFIAPI.
+//
/**
Return the size of argument that has been aligned to sizeof (UINTN).
@param n The parameter size to be aligned.
@return The aligned size.
**/
#define _INT_SIZE_OF(n) ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))
#if defined(__CC_ARM)
//
// RVCT ARM variable argument list support.
//
///
/// Variable used to traverse the list of arguments. This type can vary by
/// implementation and could be an array or structure.
///
#ifdef __APCS_ADSABI
typedef int *va_list[1];
#define VA_LIST va_list
#else
typedef struct __va_list { void *__ap; } va_list;
#define VA_LIST va_list
#endif
#define VA_START(Marker, Parameter) __va_start(Marker, Parameter)
#define VA_ARG(Marker, TYPE) __va_arg(Marker, TYPE)
#define VA_END(Marker) ((void)0)
// For some ARM RVCT compilers, __va_copy is not defined
#ifndef __va_copy
#define __va_copy(dest, src) ((void)((dest) = (src)))
#endif
#define VA_COPY(Dest, Start) __va_copy (Dest, Start)
-#elif defined(__GNUC__)
+#elif defined(_M_ARM) || defined(_M_ARM64)
+//
+// MSFT ARM variable argument list support.
+//
+typedef char* VA_LIST;
+
+#define VA_START(Marker, Parameter) __va_start (&Marker, &Parameter, _INT_SIZE_OF (Parameter), __alignof(Parameter), &Parameter)
+#define VA_ARG(Marker, TYPE) (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE) + ((-(INTN)Marker) & (sizeof(TYPE) - 1))) - _INT_SIZE_OF (TYPE)))
+#define VA_END(Marker) (Marker = (VA_LIST) 0)
+#define VA_COPY(Dest, Start) ((void)((Dest) = (Start)))
+
+#elif defined(__GNUC__) || defined(__clang__)
+
#if defined(MDE_CPU_X64) && !defined(NO_MSABI_VA_FUNCS)
//
// X64 only. Use MS ABI version of GCC built-in macros for variable argument lists.
//
///
/// Both GCC and LLVM 3.8 for X64 support new variable argument intrinsics for Microsoft ABI
///
///
/// Variable used to traverse the list of arguments. This type can vary by
/// implementation and could be an array or structure.
///
typedef __builtin_ms_va_list VA_LIST;
#define VA_START(Marker, Parameter) __builtin_ms_va_start (Marker, Parameter)
#define VA_ARG(Marker, TYPE) ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))
#define VA_END(Marker) __builtin_ms_va_end (Marker)
#define VA_COPY(Dest, Start) __builtin_ms_va_copy (Dest, Start)
#else
//
// Use GCC built-in macros for variable argument lists.
//
///
/// Variable used to traverse the list of arguments. This type can vary by
/// implementation and could be an array or structure.
///
typedef __builtin_va_list VA_LIST;
#define VA_START(Marker, Parameter) __builtin_va_start (Marker, Parameter)
#define VA_ARG(Marker, TYPE) ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))
#define VA_END(Marker) __builtin_va_end (Marker)
#define VA_COPY(Dest, Start) __builtin_va_copy (Dest, Start)
#endif
#else
///
/// Variable used to traverse the list of arguments. This type can vary by
/// implementation and could be an array or structure.
///
typedef CHAR8 *VA_LIST;
/**
Retrieves a pointer to the beginning of a variable argument list, based on
the name of the parameter that immediately precedes the variable argument list.
This function initializes Marker to point to the beginning of the variable
argument list that immediately follows Parameter. The method for computing the
pointer to the next argument in the argument list is CPU-specific following the
EFIAPI ABI.
@param Marker The VA_LIST used to traverse the list of arguments.
@param Parameter The name of the parameter that immediately precedes
the variable argument list.
@return A pointer to the beginning of a variable argument list.
**/
#define VA_START(Marker, Parameter) (Marker = (VA_LIST) ((UINTN) & (Parameter) + _INT_SIZE_OF (Parameter)))
/**
Returns an argument of a specified type from a variable argument list and updates
the pointer to the variable argument list to point to the next argument.
This function returns an argument of the type specified by TYPE from the beginning
of the variable argument list specified by Marker. Marker is then updated to point
to the next argument in the variable argument list. The method for computing the
pointer to the next argument in the argument list is CPU-specific following the EFIAPI ABI.
@param Marker VA_LIST used to traverse the list of arguments.
@param TYPE The type of argument to retrieve from the beginning
of the variable argument list.
@return An argument of the type specified by TYPE.
**/
#define VA_ARG(Marker, TYPE) (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE)) - _INT_SIZE_OF (TYPE)))
/**
Terminates the use of a variable argument list.
This function initializes Marker so it can no longer be used with VA_ARG().
After this macro is used, the only way to access the variable argument list is
by using VA_START() again.
@param Marker VA_LIST used to traverse the list of arguments.
**/
#define VA_END(Marker) (Marker = (VA_LIST) 0)
/**
Initializes a VA_LIST as a copy of an existing VA_LIST.
This macro initializes Dest as a copy of Start, as if the VA_START macro had been applied to Dest
followed by the same sequence of uses of the VA_ARG macro as had previously been used to reach
- the present state of Start.
+ the present state of Start.
@param Dest VA_LIST used to traverse the list of arguments.
@param Start VA_LIST used to traverse the list of arguments.
**/
#define VA_COPY(Dest, Start) ((void)((Dest) = (Start)))
#endif
///
/// Pointer to the start of a variable argument list stored in a memory buffer. Same as UINT8 *.
///
typedef UINTN *BASE_LIST;
/**
Returns the size of a data type in sizeof(UINTN) units rounded up to the nearest UINTN boundary.
@param TYPE The date type to determine the size of.
@return The size of TYPE in sizeof (UINTN) units rounded up to the nearest UINTN boundary.
**/
#define _BASE_INT_SIZE_OF(TYPE) ((sizeof (TYPE) + sizeof (UINTN) - 1) / sizeof (UINTN))
/**
Returns an argument of a specified type from a variable argument list and updates
the pointer to the variable argument list to point to the next argument.
This function returns an argument of the type specified by TYPE from the beginning
of the variable argument list specified by Marker. Marker is then updated to point
to the next argument in the variable argument list. The method for computing the
pointer to the next argument in the argument list is CPU specific following the EFIAPI ABI.
@param Marker The pointer to the beginning of a variable argument list.
@param TYPE The type of argument to retrieve from the beginning
of the variable argument list.
@return An argument of the type specified by TYPE.
**/
#define BASE_ARG(Marker, TYPE) (*(TYPE *) ((Marker += _BASE_INT_SIZE_OF (TYPE)) - _BASE_INT_SIZE_OF (TYPE)))
/**
The macro that returns the byte offset of a field in a data structure.
This function returns the offset, in bytes, of field specified by Field from the
beginning of the data structure specified by TYPE. If TYPE does not contain Field,
the module will not compile.
@param TYPE The name of the data structure that contains the field specified by Field.
@param Field The name of the field in the data structure.
@return Offset, in bytes, of field.
**/
-#ifdef __GNUC__
-#if __GNUC__ >= 4
+#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)
#define OFFSET_OF(TYPE, Field) ((UINTN) __builtin_offsetof(TYPE, Field))
#endif
-#endif
#ifndef OFFSET_OF
#define OFFSET_OF(TYPE, Field) ((UINTN) &(((TYPE *)0)->Field))
#endif
/**
+ Portable definition for compile time assertions.
+ Equivalent to C11 static_assert macro from assert.h.
+
+ @param Expression Boolean expression.
+ @param Message Raised compiler diagnostic message when expression is false.
+
+**/
+#ifdef MDE_CPU_EBC
+ #define STATIC_ASSERT(Expression, Message)
+#elif defined(_MSC_EXTENSIONS)
+ #define STATIC_ASSERT static_assert
+#else
+ #define STATIC_ASSERT _Static_assert
+#endif
+
+//
+// Verify that ProcessorBind.h produced UEFI Data Types that are compliant with
+// Section 2.3.1 of the UEFI 2.3 Specification.
+//
+
+STATIC_ASSERT (sizeof (BOOLEAN) == 1, "sizeof (BOOLEAN) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (INT8) == 1, "sizeof (INT8) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (UINT8) == 1, "sizeof (UINT8) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (INT16) == 2, "sizeof (INT16) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (UINT16) == 2, "sizeof (UINT16) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (INT32) == 4, "sizeof (INT32) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (UINT32) == 4, "sizeof (UINT32) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (INT64) == 8, "sizeof (INT64) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (UINT64) == 8, "sizeof (UINT64) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (CHAR8) == 1, "sizeof (CHAR8) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (CHAR16) == 2, "sizeof (CHAR16) does not meet UEFI Specification Data Type requirements");
+
+//
+// The following three enum types are used to verify that the compiler
+// configuration for enum types is compliant with Section 2.3.1 of the
+// UEFI 2.3 Specification. These enum types and enum values are not
+// intended to be used. A prefix of '__' is used avoid conflicts with
+// other types.
+//
+typedef enum {
+ __VerifyUint8EnumValue = 0xff
+} __VERIFY_UINT8_ENUM_SIZE;
+
+typedef enum {
+ __VerifyUint16EnumValue = 0xffff
+} __VERIFY_UINT16_ENUM_SIZE;
+
+typedef enum {
+ __VerifyUint32EnumValue = 0xffffffff
+} __VERIFY_UINT32_ENUM_SIZE;
+
+STATIC_ASSERT (sizeof (__VERIFY_UINT8_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (__VERIFY_UINT16_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (__VERIFY_UINT32_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements");
+
+/**
Macro that returns a pointer to the data structure that contains a specified field of
that data structure. This is a lightweight method to 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.
This function 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 return a pointer to a data structure of the type specified by TYPE. If the data type
specified by TYPE does not contain the field specified by Field, then the module will not compile.
@param Record 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.
@return A pointer to the structure from one of it's elements.
**/
-#define BASE_CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
+#define BASE_CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - OFFSET_OF (TYPE, Field)))
/**
Rounds a value up to the next boundary using a specified alignment.
This function rounds Value up to the next boundary using the specified Alignment.
This aligned value is returned.
@param Value The value to round up.
@param Alignment The alignment boundary used to return the aligned value.
@return A value up to the next boundary.
**/
#define ALIGN_VALUE(Value, Alignment) ((Value) + (((Alignment) - (Value)) & ((Alignment) - 1)))
/**
Adjust a pointer by adding the minimum offset required for it to be aligned on
a specified alignment boundary.
This function rounds the pointer specified by Pointer to the next alignment boundary
specified by Alignment. The pointer to the aligned address is returned.
@param Pointer The pointer to round up.
@param Alignment The alignment boundary to use to return an aligned pointer.
@return Pointer to the aligned address.
**/
#define ALIGN_POINTER(Pointer, Alignment) ((VOID *) (ALIGN_VALUE ((UINTN)(Pointer), (Alignment))))
/**
Rounds a value up to the next natural boundary for the current CPU.
This is 4-bytes for 32-bit CPUs and 8-bytes for 64-bit CPUs.
This function rounds the value specified by Value up to the next natural boundary for the
current CPU. This rounded value is returned.
@param Value The value to round up.
@return Rounded value specified by Value.
**/
#define ALIGN_VARIABLE(Value) ALIGN_VALUE ((Value), sizeof (UINTN))
/**
Return the maximum of two operands.
This macro returns the maximum of two operand specified by a and b.
Both a and b must be the same numerical types, signed or unsigned.
@param a The first operand with any numerical type.
@param b The second operand. Can be any numerical type as long as is
the same type as a.
@return Maximum of two operands.
**/
#define MAX(a, b) \
(((a) > (b)) ? (a) : (b))
/**
Return the minimum of two operands.
This macro returns the minimal of two operand specified by a and b.
Both a and b must be the same numerical types, signed or unsigned.
@param a The first operand with any numerical type.
@param b The second operand. It should be the same any numerical type with a.
@return Minimum of two operands.
**/
#define MIN(a, b) \
(((a) < (b)) ? (a) : (b))
/**
Return the absolute value of a signed operand.
This macro returns the absolute value of the signed operand specified by a.
@param a The signed operand.
@return The absolute value of the signed operand.
**/
#define ABS(a) \
(((a) < 0) ? (-(a)) : (a))
//
// Status codes common to all execution phases
//
typedef UINTN RETURN_STATUS;
/**
Produces a RETURN_STATUS code with the highest bit set.
@param StatusCode The status code value to convert into a warning code.
StatusCode must be in the range 0x00000000..0x7FFFFFFF.
@return The value specified by StatusCode with the highest bit set.
**/
#define ENCODE_ERROR(StatusCode) ((RETURN_STATUS)(MAX_BIT | (StatusCode)))
/**
Produces a RETURN_STATUS code with the highest bit clear.
@param StatusCode The status code value to convert into a warning code.
StatusCode must be in the range 0x00000000..0x7FFFFFFF.
@return The value specified by StatusCode with the highest bit clear.
**/
#define ENCODE_WARNING(StatusCode) ((RETURN_STATUS)(StatusCode))
/**
Returns TRUE if a specified RETURN_STATUS code is an error code.
This function returns TRUE if StatusCode has the high bit set. Otherwise, FALSE is returned.
@param StatusCode The status code value to evaluate.
@retval TRUE The high bit of StatusCode is set.
@retval FALSE The high bit of StatusCode is clear.
**/
#define RETURN_ERROR(StatusCode) (((INTN)(RETURN_STATUS)(StatusCode)) < 0)
///
/// The operation completed successfully.
///
#define RETURN_SUCCESS 0
///
/// The image failed to load.
///
#define RETURN_LOAD_ERROR ENCODE_ERROR (1)
///
/// The parameter was incorrect.
///
#define RETURN_INVALID_PARAMETER ENCODE_ERROR (2)
///
/// The operation is not supported.
///
#define RETURN_UNSUPPORTED ENCODE_ERROR (3)
///
/// The buffer was not the proper size for the request.
///
#define RETURN_BAD_BUFFER_SIZE ENCODE_ERROR (4)
///
/// The buffer was not large enough to hold the requested data.
/// The required buffer size is returned in the appropriate
/// parameter when this error occurs.
///
#define RETURN_BUFFER_TOO_SMALL ENCODE_ERROR (5)
///
/// There is no data pending upon return.
///
#define RETURN_NOT_READY ENCODE_ERROR (6)
///
/// The physical device reported an error while attempting the
/// operation.
///
#define RETURN_DEVICE_ERROR ENCODE_ERROR (7)
///
/// The device can not be written to.
///
#define RETURN_WRITE_PROTECTED ENCODE_ERROR (8)
///
/// The resource has run out.
///
#define RETURN_OUT_OF_RESOURCES ENCODE_ERROR (9)
///
/// An inconsistency was detected on the file system causing the
/// operation to fail.
///
#define RETURN_VOLUME_CORRUPTED ENCODE_ERROR (10)
///
/// There is no more space on the file system.
///
#define RETURN_VOLUME_FULL ENCODE_ERROR (11)
///
/// The device does not contain any medium to perform the
/// operation.
///
#define RETURN_NO_MEDIA ENCODE_ERROR (12)
///
/// The medium in the device has changed since the last
/// access.
///
#define RETURN_MEDIA_CHANGED ENCODE_ERROR (13)
///
/// The item was not found.
///
#define RETURN_NOT_FOUND ENCODE_ERROR (14)
///
/// Access was denied.
///
#define RETURN_ACCESS_DENIED ENCODE_ERROR (15)
///
/// The server was not found or did not respond to the request.
///
#define RETURN_NO_RESPONSE ENCODE_ERROR (16)
///
/// A mapping to the device does not exist.
///
#define RETURN_NO_MAPPING ENCODE_ERROR (17)
///
/// A timeout time expired.
///
#define RETURN_TIMEOUT ENCODE_ERROR (18)
///
/// The protocol has not been started.
///
#define RETURN_NOT_STARTED ENCODE_ERROR (19)
///
/// The protocol has already been started.
///
#define RETURN_ALREADY_STARTED ENCODE_ERROR (20)
///
/// The operation was aborted.
///
#define RETURN_ABORTED ENCODE_ERROR (21)
///
/// An ICMP error occurred during the network operation.
///
#define RETURN_ICMP_ERROR ENCODE_ERROR (22)
///
/// A TFTP error occurred during the network operation.
///
#define RETURN_TFTP_ERROR ENCODE_ERROR (23)
///
/// A protocol error occurred during the network operation.
///
#define RETURN_PROTOCOL_ERROR ENCODE_ERROR (24)
///
/// A function encountered an internal version that was
/// incompatible with a version requested by the caller.
///
#define RETURN_INCOMPATIBLE_VERSION ENCODE_ERROR (25)
///
/// The function was not performed due to a security violation.
///
#define RETURN_SECURITY_VIOLATION ENCODE_ERROR (26)
///
/// A CRC error was detected.
///
#define RETURN_CRC_ERROR ENCODE_ERROR (27)
///
/// The beginning or end of media was reached.
///
#define RETURN_END_OF_MEDIA ENCODE_ERROR (28)
///
/// The end of the file was reached.
///
#define RETURN_END_OF_FILE ENCODE_ERROR (31)
///
/// The language specified was invalid.
///
#define RETURN_INVALID_LANGUAGE ENCODE_ERROR (32)
///
/// The security status of the data is unknown or compromised
/// and the data must be updated or replaced to restore a valid
/// security status.
///
#define RETURN_COMPROMISED_DATA ENCODE_ERROR (33)
///
/// A HTTP error occurred during the network operation.
///
#define RETURN_HTTP_ERROR ENCODE_ERROR (35)
///
/// The string contained one or more characters that
/// the device could not render and were skipped.
///
#define RETURN_WARN_UNKNOWN_GLYPH ENCODE_WARNING (1)
///
/// The handle was closed, but the file was not deleted.
///
#define RETURN_WARN_DELETE_FAILURE ENCODE_WARNING (2)
///
/// The handle was closed, but the data to the file was not
/// flushed properly.
///
#define RETURN_WARN_WRITE_FAILURE ENCODE_WARNING (3)
///
/// The resulting buffer was too small, and the data was
/// truncated to the buffer size.
///
#define RETURN_WARN_BUFFER_TOO_SMALL ENCODE_WARNING (4)
///
/// The data has not been updated within the timeframe set by
/// local policy for this type of data.
///
#define RETURN_WARN_STALE_DATA ENCODE_WARNING (5)
///
/// The resulting buffer contains UEFI-compliant file system.
///
#define RETURN_WARN_FILE_SYSTEM ENCODE_WARNING (6)
/**
Returns a 16-bit signature built from 2 ASCII characters.
This macro returns a 16-bit value built from the two ASCII characters specified
by A and B.
@param A The first ASCII character.
@param B The second ASCII character.
@return A 16-bit value built from the two ASCII characters specified by A and B.
**/
#define SIGNATURE_16(A, B) ((A) | (B << 8))
/**
Returns a 32-bit signature built from 4 ASCII characters.
This macro returns a 32-bit value built from the four ASCII characters specified
by A, B, C, and D.
@param A The first ASCII character.
@param B The second ASCII character.
@param C The third ASCII character.
@param D The fourth ASCII character.
@return A 32-bit value built from the two ASCII characters specified by A, B,
C and D.
**/
#define SIGNATURE_32(A, B, C, D) (SIGNATURE_16 (A, B) | (SIGNATURE_16 (C, D) << 16))
/**
Returns a 64-bit signature built from 8 ASCII characters.
This macro returns a 64-bit value built from the eight ASCII characters specified
by A, B, C, D, E, F, G,and H.
@param A The first ASCII character.
@param B The second ASCII character.
@param C The third ASCII character.
@param D The fourth ASCII character.
@param E The fifth ASCII character.
@param F The sixth ASCII character.
@param G The seventh ASCII character.
@param H The eighth ASCII character.
@return A 64-bit value built from the two ASCII characters specified by A, B,
C, D, E, F, G and H.
**/
#define SIGNATURE_64(A, B, C, D, E, F, G, H) \
(SIGNATURE_32 (A, B, C, D) | ((UINT64) (SIGNATURE_32 (E, F, G, H)) << 32))
#if defined(_MSC_EXTENSIONS) && !defined (__INTEL_COMPILER) && !defined (MDE_CPU_EBC)
+ void * _ReturnAddress(void);
#pragma intrinsic(_ReturnAddress)
/**
Get the return address of the calling function.
Based on intrinsic function _ReturnAddress that provides the address of
the instruction in the calling function that will be executed after
control returns to the caller.
@param L Return Level.
@return The return address of the calling function or 0 if L != 0.
**/
#define RETURN_ADDRESS(L) ((L == 0) ? _ReturnAddress() : (VOID *) 0)
-#elif defined(__GNUC__)
+#elif defined (__GNUC__) || defined (__clang__)
void * __builtin_return_address (unsigned int level);
/**
Get the return address of the calling function.
Based on built-in Function __builtin_return_address that returns
the return address of the current function, or of one of its callers.
@param L Return Level.
@return The return address of the calling function.
**/
#define RETURN_ADDRESS(L) __builtin_return_address (L)
#else
/**
Get the return address of the calling function.
@param L Return Level.
@return 0 as compilers don't support this feature.
**/
#define RETURN_ADDRESS(L) ((VOID *) 0)
#endif
/**
Return the number of elements in an array.
@param Array An object of array type. Array is only used as an argument to
the sizeof operator, therefore Array is never evaluated. The
caller is responsible for ensuring that Array's type is not
incomplete; that is, Array must have known constant size.
@return The number of elements in Array. The result has type UINTN.
**/
#define ARRAY_SIZE(Array) (sizeof (Array) / sizeof ((Array)[0]))
#endif
Property changes on: head/sys/contrib/edk2/Include/Base.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Base.h:r344081-345031,345036,345038,345042,345045,345047
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Base.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/Base.h:r263908
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Base.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Base.h:r295193
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Base.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Base.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Base.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Base.h:r289470-289489
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Base.h:r260687-261245
Merged /vendor/edk2/dist/MdePkg/Include/Base.h:r361765
Merged /projects/ipfw/sys/contrib/edk2/Include/Base.h:r267383-272837
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Base.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Base.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/clang350-import/sys/contrib/edk2/Include/Base.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Base.h:r1540-186085
Merged /projects/clang370-import/sys/contrib/edk2/Include/Base.h:r287506-288928
Merged /projects/vnet/sys/contrib/edk2/Include/Base.h:r295220
Merged /projects/quota64/sys/contrib/edk2/Include/Base.h:r184125-207707
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Base.h:r356848-358850
Merged /projects/clang391-import/sys/contrib/edk2/Include/Base.h:r309166-310192
Merged /projects/clang390-import/sys/contrib/edk2/Include/Base.h:r303250-308866,308868-309123
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Base.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/Base.h:r286179-290100
Merged /projects/release-embedded/sys/contrib/edk2/Include/Base.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Base.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Base.h:r262258-262612
Merged /projects/largeSMP/sys/contrib/edk2/Include/Base.h:r221273-222812,222815-223757
Merged /projects/head_mfi/sys/contrib/edk2/Include/Base.h:r233621
Merged /projects/bectl/sys/contrib/edk2/Include/Base.h:r336666-337662
Merged /projects/release-pkg/sys/contrib/edk2/Include/Base.h:r274131-298104
Merged /projects/collation/sys/contrib/edk2/Include/Base.h:r286424-290491
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Base.h:r262185-262527
Merged /projects/release-arm64/sys/contrib/edk2/Include/Base.h:r281786,281788,281792
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Base.h:r276164,276167,276170-276172
Merged /projects/openssl111/sys/contrib/edk2/Include/Base.h:r339079
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Base.h:r230929-231848
Merged /projects/clang900-import/sys/contrib/edk2/Include/Base.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Base.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Base.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Base.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Base.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Base.h:r326936-327339,327341-327933
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Base.h:r298865-299093
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Base.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Base.h:r277327-280030
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Base.h:r303380
Merged /projects/clang380-import/sys/contrib/edk2/Include/Base.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Base.h:r285199-285661
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Base.h:r266519,269993
Merged /projects/fuse2/sys/contrib/edk2/Include/Base.h:r344558-350621,350944,350955
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Base.h:r254613-256243
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Base.h:r303899-303984
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Base.h:r303985-305318
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Base.h:r319973-326168
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Base.h:r291227-291228,292618
Index: head/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h
===================================================================
--- head/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h (revision 361802)
@@ -1,25 +1,19 @@
/** @file
Guid used to identify HII FormMap configuration method.
- Copyright (c) 2009, Intel Corporation. All rights reserved.
- 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.
+ Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
@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
Property changes on: head/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r233621
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r301868
Merged /projects/fuse2/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r344558-350621,350944,350955
Merged /projects/quota64/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r184125-207707
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r286179-290100
Merged /projects/bectl/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r336666-337662
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r230929-231848
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r289470-289489
Merged /projects/release-pkg/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r274131-298104
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r298865-299093
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/release-embedded/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/clang600-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r351317-353352
Merged /projects/largeSMP/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r221273-222812,222815-223757
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r1540-186085
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r266519,269993
Merged /projects/clang350-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r274961-275126,275128-275133,275135-276476
Merged /projects/clang360-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r277327-280030
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r303985-305318
Merged /projects/clang370-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r309166-310192
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r312125-313435
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r262185-262527
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r291879-295379
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r262258-262612
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r291227-291228,292618
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r295193
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r267383-272837
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/collation/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r286424-290491
Merged /projects/openssl111/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r339079
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r281786,281788,281792
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r356848-358850
Merged /projects/pf/head/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r263908
Merged /projects/vnet/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r295220
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Guid/HiiFormMapMethodGuid.h:r361765
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r303380
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Guid/HiiFormMapMethodGuid.h:r303899-303984
Index: head/sys/contrib/edk2/Include/Guid/PcAnsi.h
===================================================================
--- head/sys/contrib/edk2/Include/Guid/PcAnsi.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Guid/PcAnsi.h (revision 361802)
@@ -1,58 +1,52 @@
/** @file
Terminal Device Path Vendor Guid.
- Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.
- 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
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
- 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
Property changes on: head/sys/contrib/edk2/Include/Guid/PcAnsi.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/fuse2/sys/contrib/edk2/Include/Guid/PcAnsi.h:r344558-350621,350944,350955
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Guid/PcAnsi.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/Guid/PcAnsi.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Guid/PcAnsi.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Guid/PcAnsi.h:r303380
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Guid/PcAnsi.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Guid/PcAnsi.h:r295220
Merged /projects/bectl/sys/contrib/edk2/Include/Guid/PcAnsi.h:r336666-337662
Merged /projects/pf/head/sys/contrib/edk2/Include/Guid/PcAnsi.h:r263908
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Guid/PcAnsi.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Guid/PcAnsi.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Guid/PcAnsi.h:r233621
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Guid/PcAnsi.h:r301868
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Guid/PcAnsi.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Guid/PcAnsi.h:r289470-289489
Merged /projects/quota64/sys/contrib/edk2/Include/Guid/PcAnsi.h:r184125-207707
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Guid/PcAnsi.h:r281754
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Guid/PcAnsi.h:r298865-299093
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Guid/PcAnsi.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Guid/PcAnsi.h:r286179-290100
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Guid/PcAnsi.h:r266519,269993
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Guid/PcAnsi.h:r230929-231848
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Guid/PcAnsi.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Guid/PcAnsi.h:r262258-262612
Merged /projects/release-pkg/sys/contrib/edk2/Include/Guid/PcAnsi.h:r274131-298104
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Guid/PcAnsi.h:r291227-291228,292618
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Guid/PcAnsi.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/release-embedded/sys/contrib/edk2/Include/Guid/PcAnsi.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Guid/PcAnsi.h:r303985-305318
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Guid/PcAnsi.h:r283596-287505
Merged /projects/collation/sys/contrib/edk2/Include/Guid/PcAnsi.h:r286424-290491
Merged /projects/largeSMP/sys/contrib/edk2/Include/Guid/PcAnsi.h:r221273-222812,222815-223757
Merged /projects/building-blocks/sys/contrib/edk2/Include/Guid/PcAnsi.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Guid/PcAnsi.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/clang900-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r326936-327339,327341-327933
Merged /projects/release-arm64/sys/contrib/edk2/Include/Guid/PcAnsi.h:r281786,281788,281792
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Guid/PcAnsi.h:r276164,276167,276170-276172
Merged /projects/clang350-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r274961-275126,275128-275133,275135-276476
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Guid/PcAnsi.h:r295193
Merged /vendor/edk2/dist/MdePkg/Include/Guid/PcAnsi.h:r361765
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Guid/PcAnsi.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r277327-280030
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Guid/PcAnsi.h:r262185-262527
Merged /projects/clang370-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Guid/PcAnsi.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Guid/PcAnsi.h:r309166-310192
Merged /projects/openssl111/sys/contrib/edk2/Include/Guid/PcAnsi.h:r339079
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Guid/PcAnsi.h:r291879-295379
Index: head/sys/contrib/edk2/Include/Guid/WinCertificate.h
===================================================================
--- head/sys/contrib/edk2/Include/Guid/WinCertificate.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Guid/WinCertificate.h (revision 361802)
@@ -1,128 +1,122 @@
/** @file
GUID for UEFI WIN_CERTIFICATE structure.
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
- 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.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
@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
Property changes on: head/sys/contrib/edk2/Include/Guid/WinCertificate.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/head_mfi/sys/contrib/edk2/Include/Guid/WinCertificate.h:r233621
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Guid/WinCertificate.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Guid/WinCertificate.h:r283596-287505
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Guid/WinCertificate.h:r295193
Merged /projects/building-blocks/sys/contrib/edk2/Include/Guid/WinCertificate.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/clang900-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r326936-327339,327341-327933
Merged /projects/openssl111/sys/contrib/edk2/Include/Guid/WinCertificate.h:r339079
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Guid/WinCertificate.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/clang350-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r274961-275126,275128-275133,275135-276476
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Guid/WinCertificate.h:r266519,269993
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Guid/WinCertificate.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r277327-280030
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Guid/WinCertificate.h:r230929-231848
Merged /projects/clang370-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r287506-288928
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Guid/WinCertificate.h:r303380
Merged /projects/pms/sys/contrib/edk2/Include/Guid/WinCertificate.h:r285199-285661
Merged /projects/clang380-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r292913-296412
Merged /projects/clang391-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r309166-310192
Merged /projects/clang390-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r303250-308866,308868-309123
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Guid/WinCertificate.h:r312125-313435
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Guid/WinCertificate.h:r291879-295379
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Guid/WinCertificate.h:r262258-262612
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Guid/WinCertificate.h:r291227-291228,292618
Merged /projects/release-embedded/sys/contrib/edk2/Include/Guid/WinCertificate.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/collation/sys/contrib/edk2/Include/Guid/WinCertificate.h:r286424-290491
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Guid/WinCertificate.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/largeSMP/sys/contrib/edk2/Include/Guid/WinCertificate.h:r221273-222812,222815-223757
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Guid/WinCertificate.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/Guid/WinCertificate.h:r281786,281788,281792
Merged /projects/pf/head/sys/contrib/edk2/Include/Guid/WinCertificate.h:r263908
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Guid/WinCertificate.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Guid/WinCertificate.h:r361765
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Guid/WinCertificate.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Guid/WinCertificate.h:r289470-289489
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Guid/WinCertificate.h:r262185-262527
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Guid/WinCertificate.h:r298865-299093
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Guid/WinCertificate.h:r301868
Merged /projects/fuse2/sys/contrib/edk2/Include/Guid/WinCertificate.h:r344558-350621,350944,350955
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Guid/WinCertificate.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/Guid/WinCertificate.h:r267383-272837
Merged /projects/quota64/sys/contrib/edk2/Include/Guid/WinCertificate.h:r184125-207707
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Guid/WinCertificate.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Guid/WinCertificate.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Guid/WinCertificate.h:r286179-290100
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Guid/WinCertificate.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Guid/WinCertificate.h:r295220
Merged /projects/bectl/sys/contrib/edk2/Include/Guid/WinCertificate.h:r336666-337662
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Guid/WinCertificate.h:r303985-305318
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Guid/WinCertificate.h:r303899-303984
Merged /projects/release-pkg/sys/contrib/edk2/Include/Guid/WinCertificate.h:r274131-298104
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Guid/WinCertificate.h:r319973-326168
Index: head/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h
===================================================================
--- head/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h (revision 361801)
+++ head/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h (revision 361802)
@@ -1,661 +1,655 @@
-/** @file
+/** @file
ACPI 1.0b definitions from the ACPI Specification, revision 1.0b
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
-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.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _ACPI_1_0_H_
#define _ACPI_1_0_H_
#include
///
/// 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 for Descriptor
//
#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
+/// The common 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
+// 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
Property changes on: head/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/pf/head/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r263908
Merged /projects/fuse2/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r344558-350621,350944,350955
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r262185-262527
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r303985-305318
Merged /projects/elftoolchain/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r267383-272837
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r301868
Merged /projects/bectl/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r336666-337662
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/quota64/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r184125-207707
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r295193
Merged /projects/clang1000-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r356848-358850
Merged /projects/random_number_generator/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r254613-256243
Merged /projects/vnet/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r295220
Merged /projects/mpsutil/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r286179-290100
Merged /projects/openssl111/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r339079
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r319973-326168
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r303380
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/head_mfi/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r233621
Merged /projects/release-pkg/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r274131-298104
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/zfsd/head/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r266519,269993
Merged /projects/clang-trunk/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r312125-313435
Merged /projects/clang500-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r351317-353352
Merged /projects/clang600-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r326936-327339,327341-327933
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r262258-262612
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r230929-231848
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r291227-291228,292618
Merged /projects/clang350-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r285199-285661
Merged /projects/collation/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r286424-290491
Merged /projects/clang390-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r309166-310192
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r289470-289489
Merged /user/ngie/make_check/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r291879-295379
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r281786,281788,281792
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r298865-299093
Merged /projects/release-embedded/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r276164,276167,276170-276172
Merged /projects/largeSMP/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r221273-222812,222815-223757
Merged /vendor/edk2/dist/MdePkg/Include/IndustryStandard/Acpi10.h:r361765
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/IndustryStandard/Acpi10.h:r344081-345031,345036,345038,345042,345045,345047
Index: head/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h
===================================================================
--- head/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h (revision 361801)
+++ head/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h (revision 361802)
@@ -1,545 +1,539 @@
-/** @file
+/** @file
ACPI 2.0 definitions from the ACPI Specification, revision 2.0
- Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
- 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.
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _ACPI_2_0_H_
#define _ACPI_2_0_H_
#include
//
-// Define for Desriptor
+// Define for Descriptor
//
#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
+// 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
+// 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
+/// "SPCR" Serial Port Console 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
Property changes on: head/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/pf/head/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r263908
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r262185-262527
Merged /projects/fuse2/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r344558-350621,350944,350955
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r303985-305318
Merged /projects/elftoolchain/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r267383-272837
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r301868
Merged /projects/bectl/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r336666-337662
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r295193
Merged /projects/quota64/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r184125-207707
Merged /projects/clang1000-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r295220
Merged /projects/random_number_generator/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r286179-290100
Merged /projects/openssl111/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r339079
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r319973-326168
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r303380
Merged /projects/head_mfi/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r233621
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/release-pkg/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r274131-298104
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/zfsd/head/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r266519,269993
Merged /projects/clang-trunk/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r312125-313435
Merged /projects/clang500-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r351317-353352
Merged /projects/clang600-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r326936-327339,327341-327933
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r262258-262612
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r230929-231848
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r291227-291228,292618
Merged /projects/clang350-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r285199-285661
Merged /projects/collation/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r286424-290491
Merged /projects/clang390-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r309166-310192
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r289470-289489
Merged /user/ngie/make_check/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r291879-295379
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r281786,281788,281792
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r298865-299093
Merged /projects/release-embedded/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r221273-222812,222815-223757
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/IndustryStandard/Acpi20.h:r361765
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/IndustryStandard/Acpi20.h:r344081-345031,345036,345038,345042,345045,345047
Index: head/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h
===================================================================
--- head/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h (revision 361801)
+++ head/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h (revision 361802)
@@ -1,729 +1,723 @@
-/** @file
+/** @file
ACPI 3.0 definitions from the ACPI Specification Revision 3.0b October 10, 2006
- Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
- 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.
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _ACPI_3_0_H_
#define _ACPI_3_0_H_
#include
//
-// Define for Desriptor
+// Define for Descriptor
//
#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
+// 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
+// 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', ' ')
+#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
+/// "SPCR" Serial Port Console 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
Property changes on: head/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r262185-262527
Merged /projects/fuse2/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r344558-350621,350944,350955
Merged /projects/pf/head/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r263908
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r303985-305318
Merged /projects/elftoolchain/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r267383-272837
Merged /projects/bectl/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r336666-337662
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r301868
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r295193
Merged /projects/quota64/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r184125-207707
Merged /projects/clang1000-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r295220
Merged /projects/openssl111/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r339079
Merged /projects/random_number_generator/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r286179-290100
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r319973-326168
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r303380
Merged /projects/head_mfi/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r233621
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/release-pkg/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r274131-298104
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/zfsd/head/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r266519,269993
Merged /projects/clang-trunk/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r312125-313435
Merged /projects/clang400-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r311132-314524
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r262258-262612
Merged /projects/clang700-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r351317-353352
Merged /projects/clang500-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r326936-327339,327341-327933
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r230929-231848
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r291227-291228,292618
Merged /projects/clang350-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r287506-288928
Merged /projects/collation/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r286424-290491
Merged /projects/clang380-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r309166-310192
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r289470-289489
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/make_check/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r291879-295379
Merged /projects/release-arm64/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r281786,281788,281792
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r298865-299093
Merged /projects/release-embedded/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r221273-222812,222815-223757
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/IndustryStandard/Acpi30.h:r361765
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/IndustryStandard/Acpi30.h:r344081-345031,345036,345038,345042,345045,345047
Index: head/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h
===================================================================
--- head/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h (revision 361801)
+++ head/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h (revision 361802)
@@ -1,1309 +1,1303 @@
-/** @file
+/** @file
ACPI 4.0 definitions from the ACPI Specification Revision 4.0a April 5, 2010
- Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
- 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.
+ Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _ACPI_4_0_H_
#define _ACPI_4_0_H_
#include
//
// Ensure proper structure formats
//
#pragma pack(1)
///
/// ACPI 4.0 Generic Address Space definition
///
typedef struct {
UINT8 AddressSpaceId;
UINT8 RegisterBitWidth;
UINT8 RegisterBitOffset;
UINT8 AccessSize;
UINT64 Address;
} EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE;
//
// Generic Address Space Address IDs
//
#define EFI_ACPI_4_0_SYSTEM_MEMORY 0
#define EFI_ACPI_4_0_SYSTEM_IO 1
#define EFI_ACPI_4_0_PCI_CONFIGURATION_SPACE 2
#define EFI_ACPI_4_0_EMBEDDED_CONTROLLER 3
#define EFI_ACPI_4_0_SMBUS 4
#define EFI_ACPI_4_0_FUNCTIONAL_FIXED_HARDWARE 0x7F
//
// Generic Address Space Access Sizes
//
#define EFI_ACPI_4_0_UNDEFINED 0
#define EFI_ACPI_4_0_BYTE 1
#define EFI_ACPI_4_0_WORD 2
#define EFI_ACPI_4_0_DWORD 3
#define EFI_ACPI_4_0_QWORD 4
//
// ACPI 4.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_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
///
/// RSD_PTR Revision (as defined in ACPI 4.0b spec.)
///
#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 4.0a) 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_4_0_COMMON_HEADER;
//
// Root System Description Table
-// No definition needed as it is a common description table header, the same with
+// 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 4.0 spec.)
///
#define EFI_ACPI_4_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
+// 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 4.0 spec.)
///
#define EFI_ACPI_4_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_4_0_GENERIC_ADDRESS_STRUCTURE ResetReg;
UINT8 ResetValue;
UINT8 Reserved2[3];
UINT64 XFirmwareCtrl;
UINT64 XDsdt;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
} EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE;
///
/// FADT Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x04
//
// Fixed ACPI Description Table Preferred Power Management Profile
//
#define EFI_ACPI_4_0_PM_PROFILE_UNSPECIFIED 0
#define EFI_ACPI_4_0_PM_PROFILE_DESKTOP 1
#define EFI_ACPI_4_0_PM_PROFILE_MOBILE 2
#define EFI_ACPI_4_0_PM_PROFILE_WORKSTATION 3
#define EFI_ACPI_4_0_PM_PROFILE_ENTERPRISE_SERVER 4
#define EFI_ACPI_4_0_PM_PROFILE_SOHO_SERVER 5
#define EFI_ACPI_4_0_PM_PROFILE_APPLIANCE_PC 6
#define EFI_ACPI_4_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_4_0_LEGACY_DEVICES BIT0
#define EFI_ACPI_4_0_8042 BIT1
#define EFI_ACPI_4_0_VGA_NOT_PRESENT BIT2
#define EFI_ACPI_4_0_MSI_NOT_SUPPORTED BIT3
#define EFI_ACPI_4_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_4_0_WBINVD BIT0
#define EFI_ACPI_4_0_WBINVD_FLUSH BIT1
#define EFI_ACPI_4_0_PROC_C1 BIT2
#define EFI_ACPI_4_0_P_LVL2_UP BIT3
#define EFI_ACPI_4_0_PWR_BUTTON BIT4
#define EFI_ACPI_4_0_SLP_BUTTON BIT5
#define EFI_ACPI_4_0_FIX_RTC BIT6
#define EFI_ACPI_4_0_RTC_S4 BIT7
#define EFI_ACPI_4_0_TMR_VAL_EXT BIT8
#define EFI_ACPI_4_0_DCK_CAP BIT9
#define EFI_ACPI_4_0_RESET_REG_SUP BIT10
#define EFI_ACPI_4_0_SEALED_CASE BIT11
#define EFI_ACPI_4_0_HEADLESS BIT12
#define EFI_ACPI_4_0_CPU_SW_SLP BIT13
#define EFI_ACPI_4_0_PCI_EXP_WAK BIT14
#define EFI_ACPI_4_0_USE_PLATFORM_CLOCK BIT15
#define EFI_ACPI_4_0_S4_RTC_STS_VALID BIT16
#define EFI_ACPI_4_0_REMOTE_POWER_ON_CAPABLE BIT17
#define EFI_ACPI_4_0_FORCE_APIC_CLUSTER_MODEL BIT18
#define EFI_ACPI_4_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 Reserved0[3];
UINT32 OspmFlags;
UINT8 Reserved1[24];
} EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
///
/// FACS Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02
///
/// Firmware Control Structure Feature Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_4_0_S4BIOS_F BIT0
#define EFI_ACPI_4_0_64BIT_WAKE_SUPPORTED_F BIT1
///
/// OSPM Enabled Firmware Control Structure Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_4_0_OSPM_64BIT_WAKE__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_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
#define EFI_ACPI_4_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_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
///
/// MADT Revision (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
///
/// Multiple APIC Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_4_0_PCAT_COMPAT BIT0
//
// Multiple APIC Description Table APIC structure types
// All other values between 0x0B an 0xFF are reserved and
// will be ignored by OSPM.
//
#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC 0x00
#define EFI_ACPI_4_0_IO_APIC 0x01
#define EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE 0x02
#define EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
#define EFI_ACPI_4_0_LOCAL_APIC_NMI 0x04
#define EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
#define EFI_ACPI_4_0_IO_SAPIC 0x06
#define EFI_ACPI_4_0_LOCAL_SAPIC 0x07
#define EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES 0x08
#define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC 0x09
#define EFI_ACPI_4_0_LOCAL_X2APIC_NMI 0x0A
//
// APIC Structure Definitions
//
///
/// Processor Local APIC Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 AcpiProcessorId;
UINT8 ApicId;
UINT32 Flags;
} EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
///
/// Local APIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_4_0_LOCAL_APIC_ENABLED BIT0
///
/// IO APIC Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 IoApicId;
UINT8 Reserved;
UINT32 IoApicAddress;
UINT32 GlobalSystemInterruptBase;
} EFI_ACPI_4_0_IO_APIC_STRUCTURE;
///
/// Interrupt Source Override Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Bus;
UINT8 Source;
UINT32 GlobalSystemInterrupt;
UINT16 Flags;
} EFI_ACPI_4_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_4_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
//
// MPS INTI flags.
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_4_0_POLARITY (3 << 0)
#define EFI_ACPI_4_0_TRIGGER_MODE (3 << 2)
///
/// Non-Maskable Interrupt Source Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Flags;
UINT32 GlobalSystemInterrupt;
} EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
///
/// Local APIC NMI Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 AcpiProcessorId;
UINT16 Flags;
UINT8 LocalApicLint;
} EFI_ACPI_4_0_LOCAL_APIC_NMI_STRUCTURE;
///
/// Local APIC Address Override Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT64 LocalApicAddress;
} EFI_ACPI_4_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_4_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_4_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_4_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
///
/// Platform Interrupt Source Flags.
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_4_0_CPEI_PROCESSOR_OVERRIDE BIT0
///
/// Processor Local x2APIC Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved[2];
UINT32 X2ApicId;
UINT32 Flags;
UINT32 AcpiProcessorUid;
} EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
///
/// Local x2APIC NMI Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Flags;
UINT32 AcpiProcessorUid;
UINT8 LocalX2ApicLint;
UINT8 Reserved[3];
} EFI_ACPI_4_0_LOCAL_X2APIC_NMI_STRUCTURE;
///
/// Smart Battery Description Table (SBST)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 WarningEnergyLevel;
UINT32 LowEnergyLevel;
UINT32 CriticalEnergyLevel;
} EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE;
///
/// SBST Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_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_4_0_GENERIC_ADDRESS_STRUCTURE EcControl;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE EcData;
UINT32 Uid;
UINT8 GpeBit;
} EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
///
/// ECDT Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_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_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
///
/// SRAT Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03
//
// SRAT structure types.
// All other values between 0x03 an 0xFF are reserved and
// will be ignored by OSPM.
//
#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
#define EFI_ACPI_4_0_MEMORY_AFFINITY 0x01
#define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02
///
/// Processor Local APIC/SAPIC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 ProximityDomain7To0;
UINT8 ApicId;
UINT32 Flags;
UINT8 LocalSapicEid;
UINT8 ProximityDomain31To8[3];
UINT32 ClockDomain;
} EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
///
/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_4_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_4_0_MEMORY_AFFINITY_STRUCTURE;
//
// Memory Flags. All other bits are reserved and must be 0.
//
#define EFI_ACPI_4_0_MEMORY_ENABLED (1 << 0)
#define EFI_ACPI_4_0_MEMORY_HOT_PLUGGABLE (1 << 1)
#define EFI_ACPI_4_0_MEMORY_NONVOLATILE (1 << 2)
///
/// Processor Local x2APIC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved1[2];
UINT32 ProximityDomain;
UINT32 X2ApicId;
UINT32 Flags;
UINT32 ClockDomain;
UINT8 Reserved2[4];
} EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
///
/// 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_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
///
/// SLIT Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01
///
/// Corrected Platform Error Polling Table (CPEP)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 Reserved[8];
} EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
///
/// CPEP Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
//
// CPEP processor structure types.
//
#define EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC 0x00
///
/// Corrected Platform Error Polling Processor Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 ProcessorId;
UINT8 ProcessorEid;
UINT32 PollingInterval;
} EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
///
/// Maximum System Characteristics Table (MSCT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 OffsetProxDomInfo;
UINT32 MaximumNumberOfProximityDomains;
UINT32 MaximumNumberOfClockDomains;
UINT64 MaximumPhysicalAddress;
} EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
///
/// MSCT Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
///
/// Maximum Proximity Domain Information Structure Definition
///
typedef struct {
UINT8 Revision;
UINT8 Length;
UINT32 ProximityDomainRangeLow;
UINT32 ProximityDomainRangeHigh;
UINT32 MaximumProcessorCapacity;
UINT64 MaximumMemoryCapacity;
} EFI_ACPI_4_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
///
/// Boot Error Record Table (BERT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 BootErrorRegionLength;
UINT64 BootErrorRegion;
} EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_HEADER;
///
/// BERT Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
///
/// Boot Error Region Block Status Definition
///
typedef struct {
UINT32 UncorrectableErrorValid:1;
UINT32 CorrectableErrorValid:1;
UINT32 MultipleUncorrectableErrors:1;
UINT32 MultipleCorrectableErrors:1;
UINT32 ErrorDataEntryCount:10;
UINT32 Reserved:18;
} EFI_ACPI_4_0_ERROR_BLOCK_STATUS;
///
/// Boot Error Region Definition
///
typedef struct {
EFI_ACPI_4_0_ERROR_BLOCK_STATUS BlockStatus;
UINT32 RawDataOffset;
UINT32 RawDataLength;
UINT32 DataLength;
UINT32 ErrorSeverity;
} EFI_ACPI_4_0_BOOT_ERROR_REGION_STRUCTURE;
//
// Boot Error Severity types
//
#define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTABLE 0x00
#define EFI_ACPI_4_0_ERROR_SEVERITY_FATAL 0x01
#define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTED 0x02
#define EFI_ACPI_4_0_ERROR_SEVERITY_NONE 0x03
///
/// Generic Error Data Entry Definition
///
typedef struct {
UINT8 SectionType[16];
UINT32 ErrorSeverity;
UINT16 Revision;
UINT8 ValidationBits;
UINT8 Flags;
UINT32 ErrorDataLength;
UINT8 FruId[16];
UINT8 FruText[20];
} EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
///
/// Generic Error Data Entry Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201
///
/// HEST - Hardware Error Source Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 ErrorSourceCount;
} EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
///
/// HEST Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
//
// Error Source structure types.
//
#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00
#define EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01
#define EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR 0x02
#define EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER 0x06
#define EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER 0x07
#define EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER 0x08
#define EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR 0x09
//
// Error Source structure flags.
//
#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)
#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)
///
/// IA-32 Architecture Machine Check Exception Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT64 GlobalCapabilityInitData;
UINT64 GlobalControlInitData;
UINT8 NumberOfHardwareBanks;
UINT8 Reserved1[7];
} EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
///
/// IA-32 Architecture Machine Check Bank Structure Definition
///
typedef struct {
UINT8 BankNumber;
UINT8 ClearStatusOnInitialization;
UINT8 StatusDataFormat;
UINT8 Reserved0;
UINT32 ControlRegisterMsrAddress;
UINT64 ControlInitData;
UINT32 StatusRegisterMsrAddress;
UINT32 AddressRegisterMsrAddress;
UINT32 MiscRegisterMsrAddress;
} EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
///
/// IA-32 Architecture Machine Check Bank Structure MCA data format
///
#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00
#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01
#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02
//
// Hardware Error Notification types. All other values are reserved
//
#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00
#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01
#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02
#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03
#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04
///
/// Hardware Error Notification Configuration Write Enable Structure Definition
///
typedef struct {
UINT16 Type:1;
UINT16 PollInterval:1;
UINT16 SwitchToPollingThresholdValue:1;
UINT16 SwitchToPollingThresholdWindow:1;
UINT16 ErrorThresholdValue:1;
UINT16 ErrorThresholdWindow:1;
UINT16 Reserved:10;
} EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
///
/// Hardware Error Notification Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;
UINT32 PollInterval;
UINT32 Vector;
UINT32 SwitchToPollingThresholdValue;
UINT32 SwitchToPollingThresholdWindow;
UINT32 ErrorThresholdValue;
UINT32 ErrorThresholdWindow;
} EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
///
/// IA-32 Architecture Corrected Machine Check Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
UINT8 NumberOfHardwareBanks;
UINT8 Reserved1[3];
} EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
///
/// IA-32 Architecture NMI Error Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 MaxRawDataLength;
} EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
///
/// PCI Express Root Port AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
UINT32 RootErrorCommand;
} EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
///
/// PCI Express Device AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
} EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
///
/// PCI Express Bridge AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
UINT32 SecondaryUncorrectableErrorMask;
UINT32 SecondaryUncorrectableErrorSeverity;
UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;
} EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
///
/// Generic Hardware Error Source Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT16 RelatedSourceId;
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 MaxRawDataLength;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;
EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
UINT32 ErrorStatusBlockLength;
} EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
///
/// Generic Error Status Definition
///
typedef struct {
EFI_ACPI_4_0_ERROR_BLOCK_STATUS BlockStatus;
UINT32 RawDataOffset;
UINT32 RawDataLength;
UINT32 DataLength;
UINT32 ErrorSeverity;
} EFI_ACPI_4_0_GENERIC_ERROR_STATUS_STRUCTURE;
///
/// ERST - Error Record Serialization Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 SerializationHeaderSize;
UINT8 Reserved0[4];
UINT32 InstructionEntryCount;
} EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
///
/// ERST Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
///
/// ERST Serialization Actions
///
#define EFI_ACPI_4_0_ERST_BEGIN_WRITE_OPERATION 0x00
#define EFI_ACPI_4_0_ERST_BEGIN_READ_OPERATION 0x01
#define EFI_ACPI_4_0_ERST_BEGIN_CLEAR_OPERATION 0x02
#define EFI_ACPI_4_0_ERST_END_OPERATION 0x03
#define EFI_ACPI_4_0_ERST_SET_RECORD_OFFSET 0x04
#define EFI_ACPI_4_0_ERST_EXECUTE_OPERATION 0x05
#define EFI_ACPI_4_0_ERST_CHECK_BUSY_STATUS 0x06
#define EFI_ACPI_4_0_ERST_GET_COMMAND_STATUS 0x07
#define EFI_ACPI_4_0_ERST_GET_RECORD_IDENTIFIER 0x08
#define EFI_ACPI_4_0_ERST_SET_RECORD_IDENTIFIER 0x09
#define EFI_ACPI_4_0_ERST_GET_RECORD_COUNT 0x0A
#define EFI_ACPI_4_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B
#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D
#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E
#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F
///
/// ERST Action Command Status
///
#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS 0x00
#define EFI_ACPI_4_0_EINJ_STATUS_NOT_ENOUGH_SPACE 0x01
#define EFI_ACPI_4_0_EINJ_STATUS_HARDWARE_NOT_AVAILABLE 0x02
#define EFI_ACPI_4_0_EINJ_STATUS_FAILED 0x03
#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_STORE_EMPTY 0x04
#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_NOT_FOUND 0x05
///
/// ERST Serialization Instructions
///
#define EFI_ACPI_4_0_ERST_READ_REGISTER 0x00
#define EFI_ACPI_4_0_ERST_READ_REGISTER_VALUE 0x01
#define EFI_ACPI_4_0_ERST_WRITE_REGISTER 0x02
#define EFI_ACPI_4_0_ERST_WRITE_REGISTER_VALUE 0x03
#define EFI_ACPI_4_0_ERST_NOOP 0x04
#define EFI_ACPI_4_0_ERST_LOAD_VAR1 0x05
#define EFI_ACPI_4_0_ERST_LOAD_VAR2 0x06
#define EFI_ACPI_4_0_ERST_STORE_VAR1 0x07
#define EFI_ACPI_4_0_ERST_ADD 0x08
#define EFI_ACPI_4_0_ERST_SUBTRACT 0x09
#define EFI_ACPI_4_0_ERST_ADD_VALUE 0x0A
#define EFI_ACPI_4_0_ERST_SUBTRACT_VALUE 0x0B
#define EFI_ACPI_4_0_ERST_STALL 0x0C
#define EFI_ACPI_4_0_ERST_STALL_WHILE_TRUE 0x0D
#define EFI_ACPI_4_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E
#define EFI_ACPI_4_0_ERST_GOTO 0x0F
#define EFI_ACPI_4_0_ERST_SET_SRC_ADDRESS_BASE 0x10
#define EFI_ACPI_4_0_ERST_SET_DST_ADDRESS_BASE 0x11
#define EFI_ACPI_4_0_ERST_MOVE_DATA 0x12
///
/// ERST Instruction Flags
///
#define EFI_ACPI_4_0_ERST_PRESERVE_REGISTER 0x01
///
/// ERST Serialization Instruction Entry
///
typedef struct {
UINT8 SerializationAction;
UINT8 Instruction;
UINT8 Flags;
UINT8 Reserved0;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
UINT64 Value;
UINT64 Mask;
} EFI_ACPI_4_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
///
/// EINJ - Error Injection Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 InjectionHeaderSize;
UINT8 InjectionFlags;
UINT8 Reserved0[3];
UINT32 InjectionEntryCount;
} EFI_ACPI_4_0_ERROR_INJECTION_TABLE_HEADER;
///
/// EINJ Version (as defined in ACPI 4.0 spec.)
///
#define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_REVISION 0x01
///
/// EINJ Error Injection Actions
///
#define EFI_ACPI_4_0_EINJ_BEGIN_INJECTION_OPERATION 0x00
#define EFI_ACPI_4_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01
#define EFI_ACPI_4_0_EINJ_SET_ERROR_TYPE 0x02
#define EFI_ACPI_4_0_EINJ_GET_ERROR_TYPE 0x03
#define EFI_ACPI_4_0_EINJ_END_OPERATION 0x04
#define EFI_ACPI_4_0_EINJ_EXECUTE_OPERATION 0x05
#define EFI_ACPI_4_0_EINJ_CHECK_BUSY_STATUS 0x06
#define EFI_ACPI_4_0_EINJ_GET_COMMAND_STATUS 0x07
#define EFI_ACPI_4_0_EINJ_TRIGGER_ERROR 0xFF
///
/// EINJ Action Command Status
///
#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS 0x00
#define EFI_ACPI_4_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01
#define EFI_ACPI_4_0_EINJ_STATUS_INVALID_ACCESS 0x02
///
/// EINJ Error Type Definition
///
#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)
#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)
#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)
#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)
#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)
#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)
#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)
#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)
#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)
#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)
#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)
#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)
///
/// EINJ Injection Instructions
///
#define EFI_ACPI_4_0_EINJ_READ_REGISTER 0x00
#define EFI_ACPI_4_0_EINJ_READ_REGISTER_VALUE 0x01
#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER 0x02
#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER_VALUE 0x03
#define EFI_ACPI_4_0_EINJ_NOOP 0x04
///
/// EINJ Instruction Flags
///
#define EFI_ACPI_4_0_EINJ_PRESERVE_REGISTER 0x01
///
/// EINJ Injection Instruction Entry
///
typedef struct {
UINT8 InjectionAction;
UINT8 Instruction;
UINT8 Flags;
UINT8 Reserved0;
EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
UINT64 Value;
UINT64 Mask;
} EFI_ACPI_4_0_EINJ_INJECTION_INSTRUCTION_ENTRY;
///
/// EINJ Trigger Action Table
///
typedef struct {
UINT32 HeaderSize;
UINT32 Revision;
UINT32 TableSize;
UINT32 EntryCount;
} EFI_ACPI_4_0_EINJ_TRIGGER_ACTION_TABLE;
//
// Known table signatures
//
///
/// "RSD PTR " Root System Description Pointer
///
-#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
+#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
///
/// "APIC" Multiple APIC Description Table
///
#define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
///
/// "BERT" Boot Error Record Table
///
#define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')
///
/// "CPEP" Corrected Platform Error Polling Table
///
#define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
///
/// "DSDT" Differentiated System Description Table
///
#define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
///
/// "ECDT" Embedded Controller Boot Resources Table
///
#define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
///
/// "EINJ" Error Injection Table
///
#define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')
///
/// "ERST" Error Record Serialization Table
///
#define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')
///
/// "FACP" Fixed ACPI Description Table
///
#define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
///
/// "FACS" Firmware ACPI Control Structure
///
#define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
///
/// "HEST" Hardware Error Source Table
///
#define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')
///
/// "MSCT" Maximum System Characteristics Table
///
#define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')
///
/// "PSDT" Persistent System Description Table
///
#define EFI_ACPI_4_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
///
/// "RSDT" Root System Description Table
///
#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
///
/// "SBST" Smart Battery Specification Table
///
#define EFI_ACPI_4_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
///
/// "SLIT" System Locality Information Table
///
#define EFI_ACPI_4_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
///
/// "SRAT" System Resource Affinity Table
///
#define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
///
/// "SSDT" Secondary System Description Table
///
#define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
///
/// "XSDT" Extended System Description Table
///
#define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
///
/// "BOOT" MS Simple Boot Spec
///
#define EFI_ACPI_4_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
///
/// "DBGP" MS Debug Port Spec
///
#define EFI_ACPI_4_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
///
/// "DMAR" DMA Remapping Table
///
#define EFI_ACPI_4_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')
///
/// "ETDT" Event Timer Description Table
///
#define EFI_ACPI_4_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
///
/// "HPET" IA-PC High Precision Event Timer Table
///
#define EFI_ACPI_4_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')
///
/// "iBFT" iSCSI Boot Firmware Table
///
#define EFI_ACPI_4_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')
///
/// "IVRS" I/O Virtualization Reporting Structure
///
#define EFI_ACPI_4_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')
///
/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
///
#define EFI_ACPI_4_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
///
/// "MCHI" Management Controller Host Interface Table
///
#define EFI_ACPI_4_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')
///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
///
#define EFI_ACPI_4_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
///
/// "SPMI" Server Platform Management Interface Table
///
#define EFI_ACPI_4_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
///
/// "TCPA" Trusted Computing Platform Alliance Capabilities Table
///
#define EFI_ACPI_4_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
///
/// "UEFI" UEFI ACPI Data Table
///
#define EFI_ACPI_4_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')
///
/// "WAET" Windows ACPI Enlightenment Table
///
#define EFI_ACPI_4_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')
///
/// "WDAT" Watchdog Action Table
///
#define EFI_ACPI_4_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')
///
/// "WDRT" Watchdog Resource Table
///
#define EFI_ACPI_4_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')
#pragma pack()
#endif
Property changes on: head/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r262185-262527
Merged /projects/fuse2/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r344558-350621,350944,350955
Merged /projects/pf/head/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r263908
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r303985-305318
Merged /projects/elftoolchain/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/bectl/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r336666-337662
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r301868
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r295193
Merged /projects/clang1000-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r356848-358850
Merged /projects/quota64/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r184125-207707
Merged /projects/vnet/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r295220
Merged /projects/openssl111/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r339079
Merged /projects/random_number_generator/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r286179-290100
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r319973-326168
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r303380
Merged /projects/head_mfi/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r233621
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/release-pkg/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r274131-298104
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/zfsd/head/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r266519,269993
Merged /projects/clang-trunk/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r312125-313435
Merged /projects/clang700-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r351317-353352
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r230929-231848
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r262258-262612
Merged /projects/clang400-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r326936-327339,327341-327933
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r291227-291228,292618
Merged /projects/clang350-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r287506-288928
Merged /projects/collation/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r286424-290491
Merged /projects/clang380-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r285199-285661
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r289470-289489
Merged /projects/clang390-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r309166-310192
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/make_check/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r291879-295379
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r298865-299093
Merged /projects/release-arm64/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r281786,281788,281792
Merged /projects/release-embedded/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r221273-222812,222815-223757
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/IndustryStandard/Acpi40.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/IndustryStandard/Acpi40.h:r361765
Index: head/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h
===================================================================
--- head/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h (revision 361801)
+++ head/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h (revision 361802)
@@ -1,2119 +1,2119 @@
-/** @file
+/** @file
ACPI 5.0 definitions from the ACPI Specification Revision 5.0a November 13, 2013.
Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
- Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.
- 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.
+ Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
+ Copyright (c) 2020, ARM Ltd. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _ACPI_5_0_H_
#define _ACPI_5_0_H_
#include
//
-// Define for Desriptor
+// Define for Descriptor
//
#define ACPI_SMALL_FIXED_DMA_DESCRIPTOR_NAME 0x0A
#define ACPI_LARGE_GPIO_CONNECTION_DESCRIPTOR_NAME 0x0C
#define ACPI_LARGE_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR_NAME 0x0E
#define ACPI_FIXED_DMA_DESCRIPTOR 0x55
#define ACPI_GPIO_CONNECTION_DESCRIPTOR 0x8C
#define ACPI_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR 0x8E
#pragma pack(1)
///
/// Generic DMA Descriptor.
///
typedef PACKED struct {
ACPI_SMALL_RESOURCE_HEADER Header;
UINT16 DmaRequestLine;
UINT16 DmaChannel;
UINT8 DmaTransferWidth;
} EFI_ACPI_FIXED_DMA_DESCRIPTOR;
///
/// GPIO Connection Descriptor
///
typedef PACKED struct {
ACPI_LARGE_RESOURCE_HEADER Header;
UINT8 RevisionId;
UINT8 ConnectionType;
UINT16 GeneralFlags;
UINT16 InterruptFlags;
UINT8 PinConfiguration;
UINT16 OutputDriveStrength;
UINT16 DebounceTimeout;
UINT16 PinTableOffset;
UINT8 ResourceSourceIndex;
UINT16 ResourceSourceNameOffset;
UINT16 VendorDataOffset;
UINT16 VendorDataLength;
} EFI_ACPI_GPIO_CONNECTION_DESCRIPTOR;
#define EFI_ACPI_GPIO_CONNECTION_TYPE_INTERRUPT 0x0
#define EFI_ACPI_GPIO_CONNECTION_TYPE_IO 0x1
///
/// Serial Bus Resource Descriptor (Generic)
///
typedef PACKED struct {
ACPI_LARGE_RESOURCE_HEADER Header;
UINT8 RevisionId;
UINT8 ResourceSourceIndex;
UINT8 SerialBusType;
UINT8 GeneralFlags;
UINT16 TypeSpecificFlags;
UINT8 TypeSpecificRevisionId;
UINT16 TypeDataLength;
// Type specific data
} EFI_ACPI_SERIAL_BUS_RESOURCE_DESCRIPTOR;
#define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_I2C 0x1
#define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_SPI 0x2
#define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_UART 0x3
///
/// Serial Bus Resource Descriptor (I2C)
///
typedef PACKED struct {
ACPI_LARGE_RESOURCE_HEADER Header;
UINT8 RevisionId;
UINT8 ResourceSourceIndex;
UINT8 SerialBusType;
UINT8 GeneralFlags;
UINT16 TypeSpecificFlags;
UINT8 TypeSpecificRevisionId;
UINT16 TypeDataLength;
UINT32 ConnectionSpeed;
UINT16 SlaveAddress;
} EFI_ACPI_SERIAL_BUS_RESOURCE_I2C_DESCRIPTOR;
///
/// Serial Bus Resource Descriptor (SPI)
///
typedef PACKED struct {
ACPI_LARGE_RESOURCE_HEADER Header;
UINT8 RevisionId;
UINT8 ResourceSourceIndex;
UINT8 SerialBusType;
UINT8 GeneralFlags;
UINT16 TypeSpecificFlags;
UINT8 TypeSpecificRevisionId;
UINT16 TypeDataLength;
UINT32 ConnectionSpeed;
UINT8 DataBitLength;
UINT8 Phase;
UINT8 Polarity;
UINT16 DeviceSelection;
} EFI_ACPI_SERIAL_BUS_RESOURCE_SPI_DESCRIPTOR;
///
/// Serial Bus Resource Descriptor (UART)
///
typedef PACKED struct {
ACPI_LARGE_RESOURCE_HEADER Header;
UINT8 RevisionId;
UINT8 ResourceSourceIndex;
UINT8 SerialBusType;
UINT8 GeneralFlags;
UINT16 TypeSpecificFlags;
UINT8 TypeSpecificRevisionId;
UINT16 TypeDataLength;
UINT32 DefaultBaudRate;
UINT16 RxFIFO;
UINT16 TxFIFO;
UINT8 Parity;
UINT8 SerialLinesEnabled;
} EFI_ACPI_SERIAL_BUS_RESOURCE_UART_DESCRIPTOR;
#pragma pack()
//
// Ensure proper structure formats
//
#pragma pack(1)
///
/// ACPI 5.0 Generic Address Space definition
///
typedef struct {
UINT8 AddressSpaceId;
UINT8 RegisterBitWidth;
UINT8 RegisterBitOffset;
UINT8 AccessSize;
UINT64 Address;
} EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE;
//
// Generic Address Space Address IDs
//
#define EFI_ACPI_5_0_SYSTEM_MEMORY 0
#define EFI_ACPI_5_0_SYSTEM_IO 1
#define EFI_ACPI_5_0_PCI_CONFIGURATION_SPACE 2
#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER 3
#define EFI_ACPI_5_0_SMBUS 4
#define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL 0x0A
#define EFI_ACPI_5_0_FUNCTIONAL_FIXED_HARDWARE 0x7F
//
// Generic Address Space Access Sizes
//
#define EFI_ACPI_5_0_UNDEFINED 0
#define EFI_ACPI_5_0_BYTE 1
#define EFI_ACPI_5_0_WORD 2
#define EFI_ACPI_5_0_DWORD 3
#define EFI_ACPI_5_0_QWORD 4
//
// ACPI 5.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_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
///
/// RSD_PTR Revision (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 5.0) 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_5_0_COMMON_HEADER;
//
// Root System Description Table
-// No definition needed as it is a common description table header, the same with
+// 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 5.0 spec.)
///
#define EFI_ACPI_5_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
+// 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 5.0 spec.)
///
#define EFI_ACPI_5_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_5_0_GENERIC_ADDRESS_STRUCTURE ResetReg;
UINT8 ResetValue;
UINT8 Reserved2[3];
UINT64 XFirmwareCtrl;
UINT64 XDsdt;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg;
} EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE;
///
/// FADT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x05
//
// Fixed ACPI Description Table Preferred Power Management Profile
//
#define EFI_ACPI_5_0_PM_PROFILE_UNSPECIFIED 0
#define EFI_ACPI_5_0_PM_PROFILE_DESKTOP 1
#define EFI_ACPI_5_0_PM_PROFILE_MOBILE 2
#define EFI_ACPI_5_0_PM_PROFILE_WORKSTATION 3
#define EFI_ACPI_5_0_PM_PROFILE_ENTERPRISE_SERVER 4
#define EFI_ACPI_5_0_PM_PROFILE_SOHO_SERVER 5
#define EFI_ACPI_5_0_PM_PROFILE_APPLIANCE_PC 6
#define EFI_ACPI_5_0_PM_PROFILE_PERFORMANCE_SERVER 7
#define EFI_ACPI_5_0_PM_PROFILE_TABLET 8
//
// Fixed ACPI Description Table Boot Architecture Flags
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_5_0_LEGACY_DEVICES BIT0
#define EFI_ACPI_5_0_8042 BIT1
#define EFI_ACPI_5_0_VGA_NOT_PRESENT BIT2
#define EFI_ACPI_5_0_MSI_NOT_SUPPORTED BIT3
#define EFI_ACPI_5_0_PCIE_ASPM_CONTROLS BIT4
#define EFI_ACPI_5_0_CMOS_RTC_NOT_PRESENT BIT5
//
// Fixed ACPI Description Table Fixed Feature Flags
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_5_0_WBINVD BIT0
#define EFI_ACPI_5_0_WBINVD_FLUSH BIT1
#define EFI_ACPI_5_0_PROC_C1 BIT2
#define EFI_ACPI_5_0_P_LVL2_UP BIT3
#define EFI_ACPI_5_0_PWR_BUTTON BIT4
#define EFI_ACPI_5_0_SLP_BUTTON BIT5
#define EFI_ACPI_5_0_FIX_RTC BIT6
#define EFI_ACPI_5_0_RTC_S4 BIT7
#define EFI_ACPI_5_0_TMR_VAL_EXT BIT8
#define EFI_ACPI_5_0_DCK_CAP BIT9
#define EFI_ACPI_5_0_RESET_REG_SUP BIT10
#define EFI_ACPI_5_0_SEALED_CASE BIT11
#define EFI_ACPI_5_0_HEADLESS BIT12
#define EFI_ACPI_5_0_CPU_SW_SLP BIT13
#define EFI_ACPI_5_0_PCI_EXP_WAK BIT14
#define EFI_ACPI_5_0_USE_PLATFORM_CLOCK BIT15
#define EFI_ACPI_5_0_S4_RTC_STS_VALID BIT16
#define EFI_ACPI_5_0_REMOTE_POWER_ON_CAPABLE BIT17
#define EFI_ACPI_5_0_FORCE_APIC_CLUSTER_MODEL BIT18
#define EFI_ACPI_5_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19
#define EFI_ACPI_5_0_HW_REDUCED_ACPI BIT20
#define EFI_ACPI_5_0_LOW_POWER_S0_IDLE_CAPABLE BIT21
///
/// Firmware ACPI Control Structure
///
typedef struct {
UINT32 Signature;
UINT32 Length;
UINT32 HardwareSignature;
UINT32 FirmwareWakingVector;
UINT32 GlobalLock;
UINT32 Flags;
UINT64 XFirmwareWakingVector;
UINT8 Version;
UINT8 Reserved0[3];
UINT32 OspmFlags;
UINT8 Reserved1[24];
} EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
///
/// FACS Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02
///
/// Firmware Control Structure Feature Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_5_0_S4BIOS_F BIT0
#define EFI_ACPI_5_0_64BIT_WAKE_SUPPORTED_F BIT1
///
/// OSPM Enabled Firmware Control Structure Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_5_0_OSPM_64BIT_WAKE_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_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
#define EFI_ACPI_5_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_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
///
/// MADT Revision (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
///
/// Multiple APIC Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_5_0_PCAT_COMPAT BIT0
//
// Multiple APIC Description Table APIC structure types
// All other values between 0x0D and 0x7F are reserved and
// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
//
#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC 0x00
#define EFI_ACPI_5_0_IO_APIC 0x01
#define EFI_ACPI_5_0_INTERRUPT_SOURCE_OVERRIDE 0x02
#define EFI_ACPI_5_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
#define EFI_ACPI_5_0_LOCAL_APIC_NMI 0x04
#define EFI_ACPI_5_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
#define EFI_ACPI_5_0_IO_SAPIC 0x06
#define EFI_ACPI_5_0_LOCAL_SAPIC 0x07
#define EFI_ACPI_5_0_PLATFORM_INTERRUPT_SOURCES 0x08
#define EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC 0x09
#define EFI_ACPI_5_0_LOCAL_X2APIC_NMI 0x0A
#define EFI_ACPI_5_0_GIC 0x0B
#define EFI_ACPI_5_0_GICD 0x0C
//
// APIC Structure Definitions
//
///
/// Processor Local APIC Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 AcpiProcessorId;
UINT8 ApicId;
UINT32 Flags;
} EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
///
/// Local APIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_0_LOCAL_APIC_ENABLED BIT0
///
/// IO APIC Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 IoApicId;
UINT8 Reserved;
UINT32 IoApicAddress;
UINT32 GlobalSystemInterruptBase;
} EFI_ACPI_5_0_IO_APIC_STRUCTURE;
///
/// Interrupt Source Override Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Bus;
UINT8 Source;
UINT32 GlobalSystemInterrupt;
UINT16 Flags;
} EFI_ACPI_5_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_5_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
//
// MPS INTI flags.
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_5_0_POLARITY (3 << 0)
#define EFI_ACPI_5_0_TRIGGER_MODE (3 << 2)
///
/// Non-Maskable Interrupt Source Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Flags;
UINT32 GlobalSystemInterrupt;
} EFI_ACPI_5_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
///
/// Local APIC NMI Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 AcpiProcessorId;
UINT16 Flags;
UINT8 LocalApicLint;
} EFI_ACPI_5_0_LOCAL_APIC_NMI_STRUCTURE;
///
/// Local APIC Address Override Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT64 LocalApicAddress;
} EFI_ACPI_5_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_5_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_5_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_5_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
///
/// Platform Interrupt Source Flags.
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_5_0_CPEI_PROCESSOR_OVERRIDE BIT0
///
/// Processor Local x2APIC Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved[2];
UINT32 X2ApicId;
UINT32 Flags;
UINT32 AcpiProcessorUid;
} EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
///
/// Local x2APIC NMI Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Flags;
UINT32 AcpiProcessorUid;
UINT8 LocalX2ApicLint;
UINT8 Reserved[3];
} EFI_ACPI_5_0_LOCAL_X2APIC_NMI_STRUCTURE;
///
/// GIC Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT32 GicId;
UINT32 AcpiProcessorUid;
UINT32 Flags;
UINT32 ParkingProtocolVersion;
UINT32 PerformanceInterruptGsiv;
UINT64 ParkedAddress;
UINT64 PhysicalBaseAddress;
} EFI_ACPI_5_0_GIC_STRUCTURE;
///
/// GIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_0_GIC_ENABLED BIT0
#define EFI_ACPI_5_0_PERFORMANCE_INTERRUPT_MODEL BIT1
///
/// GIC Distributor Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved1;
UINT32 GicId;
UINT64 PhysicalBaseAddress;
UINT32 SystemVectorBase;
UINT32 Reserved2;
} EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE;
///
/// Smart Battery Description Table (SBST)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 WarningEnergyLevel;
UINT32 LowEnergyLevel;
UINT32 CriticalEnergyLevel;
} EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE;
///
/// SBST Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_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_5_0_GENERIC_ADDRESS_STRUCTURE EcControl;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE EcData;
UINT32 Uid;
UINT8 GpeBit;
} EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
///
/// ECDT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_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_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
///
/// SRAT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03
//
// SRAT structure types.
// All other values between 0x03 an 0xFF are reserved and
// will be ignored by OSPM.
//
#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
#define EFI_ACPI_5_0_MEMORY_AFFINITY 0x01
#define EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02
///
/// Processor Local APIC/SAPIC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 ProximityDomain7To0;
UINT8 ApicId;
UINT32 Flags;
UINT8 LocalSapicEid;
UINT8 ProximityDomain31To8[3];
UINT32 ClockDomain;
} EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
///
/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_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_5_0_MEMORY_AFFINITY_STRUCTURE;
//
// Memory Flags. All other bits are reserved and must be 0.
//
#define EFI_ACPI_5_0_MEMORY_ENABLED (1 << 0)
#define EFI_ACPI_5_0_MEMORY_HOT_PLUGGABLE (1 << 1)
#define EFI_ACPI_5_0_MEMORY_NONVOLATILE (1 << 2)
///
/// Processor Local x2APIC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved1[2];
UINT32 ProximityDomain;
UINT32 X2ApicId;
UINT32 Flags;
UINT32 ClockDomain;
UINT8 Reserved2[4];
} EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
///
/// 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_5_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
///
/// SLIT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01
///
/// Corrected Platform Error Polling Table (CPEP)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 Reserved[8];
} EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
///
/// CPEP Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
//
// CPEP processor structure types.
//
#define EFI_ACPI_5_0_CPEP_PROCESSOR_APIC_SAPIC 0x00
///
/// Corrected Platform Error Polling Processor Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 ProcessorId;
UINT8 ProcessorEid;
UINT32 PollingInterval;
} EFI_ACPI_5_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
///
/// Maximum System Characteristics Table (MSCT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 OffsetProxDomInfo;
UINT32 MaximumNumberOfProximityDomains;
UINT32 MaximumNumberOfClockDomains;
UINT64 MaximumPhysicalAddress;
} EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
///
/// MSCT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
///
/// Maximum Proximity Domain Information Structure Definition
///
typedef struct {
UINT8 Revision;
UINT8 Length;
UINT32 ProximityDomainRangeLow;
UINT32 ProximityDomainRangeHigh;
UINT32 MaximumProcessorCapacity;
UINT64 MaximumMemoryCapacity;
} EFI_ACPI_5_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
///
/// ACPI RAS Feature Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 PlatformCommunicationChannelIdentifier[12];
} EFI_ACPI_5_0_RAS_FEATURE_TABLE;
///
/// RASF Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_RAS_FEATURE_TABLE_REVISION 0x01
///
/// ACPI RASF Platform Communication Channel Shared Memory Region definition.
///
typedef struct {
UINT32 Signature;
UINT16 Command;
UINT16 Status;
UINT16 Version;
UINT8 RASCapabilities[16];
UINT8 SetRASCapabilities[16];
UINT16 NumberOfRASFParameterBlocks;
UINT32 SetRASCapabilitiesStatus;
} EFI_ACPI_5_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
///
/// ACPI RASF PCC command code
///
#define EFI_ACPI_5_0_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01
///
/// ACPI RASF Platform RAS Capabilities
///
#define EFI_ACPI_5_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01
#define EFI_ACPI_5_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02
///
/// ACPI RASF Parameter Block structure for PATROL_SCRUB
///
typedef struct {
UINT16 Type;
UINT16 Version;
UINT16 Length;
UINT16 PatrolScrubCommand;
UINT64 RequestedAddressRange[2];
UINT64 ActualAddressRange[2];
UINT16 Flags;
UINT8 RequestedSpeed;
} EFI_ACPI_5_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
///
/// ACPI RASF Patrol Scrub command
///
#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01
#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02
#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03
///
/// Memory Power State Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 PlatformCommunicationChannelIdentifier;
UINT8 Reserved[3];
// Memory Power Node Structure
// Memory Power State Characteristics
} EFI_ACPI_5_0_MEMORY_POWER_STATUS_TABLE;
///
/// MPST Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01
///
/// MPST Platform Communication Channel Shared Memory Region definition.
///
typedef struct {
UINT32 Signature;
UINT16 Command;
UINT16 Status;
UINT32 MemoryPowerCommandRegister;
UINT32 MemoryPowerStatusRegister;
UINT32 PowerStateId;
UINT32 MemoryPowerNodeId;
UINT64 MemoryEnergyConsumed;
UINT64 ExpectedAveragePowerComsuned;
} EFI_ACPI_5_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
///
/// ACPI MPST PCC command code
///
#define EFI_ACPI_5_0_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03
///
/// ACPI MPST Memory Power command
///
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04
///
/// MPST Memory Power Node Table
///
typedef struct {
UINT8 PowerStateValue;
UINT8 PowerStateInformationIndex;
} EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE;
typedef struct {
UINT8 Flag;
UINT8 Reserved;
UINT16 MemoryPowerNodeId;
UINT32 Length;
UINT64 AddressBase;
UINT64 AddressLength;
UINT32 NumberOfPowerStates;
UINT32 NumberOfPhysicalComponents;
//EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates];
//UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents];
} EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE;
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04
typedef struct {
UINT16 MemoryPowerNodeCount;
UINT8 Reserved[2];
} EFI_ACPI_5_0_MPST_MEMORY_POWER_NODE_TABLE;
///
/// MPST Memory Power State Characteristics Table
///
typedef struct {
UINT8 PowerStateStructureID;
UINT8 Flag;
UINT16 Reserved;
UINT32 AveragePowerConsumedInMPS0;
UINT32 RelativePowerSavingToMPS0;
UINT64 ExitLatencyToMPS0;
} EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02
#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04
typedef struct {
UINT16 MemoryPowerStateCharacteristicsCount;
UINT8 Reserved[2];
} EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
///
/// Memory Topology Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 Reserved;
} EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE;
///
/// PMTT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
///
/// Common Memory Aggregator Device Structure.
///
typedef struct {
UINT8 Type;
UINT8 Reserved;
UINT16 Length;
UINT16 Flags;
UINT16 Reserved1;
} EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// Memory Aggregator Device Type
///
#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x1
#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x3
///
/// Socket Memory Aggregator Device Structure.
///
typedef struct {
EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
UINT16 SocketIdentifier;
UINT16 Reserved;
//EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[];
} EFI_ACPI_5_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// MemoryController Memory Aggregator Device Structure.
///
typedef struct {
EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
UINT32 ReadLatency;
UINT32 WriteLatency;
UINT32 ReadBandwidth;
UINT32 WriteBandwidth;
UINT16 OptimalAccessUnit;
UINT16 OptimalAccessAlignment;
UINT16 Reserved;
UINT16 NumberOfProximityDomains;
//UINT32 ProximityDomain[NumberOfProximityDomains];
//EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[];
} EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// DIMM Memory Aggregator Device Structure.
///
typedef struct {
EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
UINT16 PhysicalComponentIdentifier;
UINT16 Reserved;
UINT32 SizeOfDimm;
UINT32 SmbiosHandle;
} EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// Boot Graphics Resource Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
///
/// 2-bytes (16 bit) version ID. This value must be 1.
///
UINT16 Version;
///
/// 1-byte status field indicating current status about the table.
/// Bits[7:1] = Reserved (must be zero)
/// Bit [0] = Valid. A one indicates the boot image graphic is valid.
///
UINT8 Status;
///
/// 1-byte enumerated type field indicating format of the image.
/// 0 = Bitmap
/// 1 - 255 Reserved (for future use)
///
UINT8 ImageType;
///
/// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
/// of the image bitmap.
///
UINT64 ImageAddress;
///
/// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
/// (X, Y) display offset of the top left corner of the boot image.
/// The top left corner of the display is at offset (0, 0).
///
UINT32 ImageOffsetX;
///
/// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
/// (X, Y) display offset of the top left corner of the boot image.
/// The top left corner of the display is at offset (0, 0).
///
UINT32 ImageOffsetY;
} EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE;
///
/// BGRT Revision
///
#define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
///
/// BGRT Version
///
#define EFI_ACPI_5_0_BGRT_VERSION 0x01
///
/// BGRT Status
///
#define EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED 0x00
#define EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED 0x01
#define EFI_ACPI_5_0_BGRT_STATUS_INVALID EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED
#define EFI_ACPI_5_0_BGRT_STATUS_VALID EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED
///
/// BGRT Image Type
///
#define EFI_ACPI_5_0_BGRT_IMAGE_TYPE_BMP 0x00
///
/// FPDT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
///
/// FPDT Performance Record Types
///
#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000
#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001
///
/// FPDT Performance Record Revision
///
#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01
#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
///
/// FPDT Runtime Performance Record Types
///
#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000
#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001
#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002
///
/// FPDT Runtime Performance Record Revision
///
#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01
#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01
#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02
///
/// FPDT Performance Record header
///
typedef struct {
UINT16 Type;
UINT8 Length;
UINT8 Revision;
} EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER;
///
/// FPDT Performance Table header
///
typedef struct {
UINT32 Signature;
UINT32 Length;
} EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER;
///
/// FPDT Firmware Basic Boot Performance Pointer Record Structure
///
typedef struct {
EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
UINT32 Reserved;
///
/// 64-bit processor-relative physical address of the Basic Boot Performance Table.
///
UINT64 BootPerformanceTablePointer;
} EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
///
/// FPDT S3 Performance Table Pointer Record Structure
///
typedef struct {
EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
UINT32 Reserved;
///
/// 64-bit processor-relative physical address of the S3 Performance Table.
///
UINT64 S3PerformanceTablePointer;
} EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
///
/// FPDT Firmware Basic Boot Performance Record Structure
///
typedef struct {
EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
UINT32 Reserved;
///
/// Timer value logged at the beginning of firmware image execution.
/// This may not always be zero or near zero.
///
UINT64 ResetEnd;
///
/// Timer value logged just prior to loading the OS boot loader into memory.
/// For non-UEFI compatible boots, this field must be zero.
///
UINT64 OsLoaderLoadImageStart;
///
/// Timer value logged just prior to launching the previously loaded OS boot loader image.
/// For non-UEFI compatible boots, the timer value logged will be just prior
/// to the INT 19h handler invocation.
///
UINT64 OsLoaderStartImageStart;
///
/// Timer value logged at the point when the OS loader calls the
/// ExitBootServices function for UEFI compatible firmware.
/// For non-UEFI compatible boots, this field must be zero.
///
UINT64 ExitBootServicesEntry;
///
- /// Timer value logged at the point just prior towhen the OS loader gaining
+ /// Timer value logged at the point just prior to when the OS loader gaining
/// control back from calls the ExitBootServices function for UEFI compatible firmware.
/// For non-UEFI compatible boots, this field must be zero.
///
UINT64 ExitBootServicesExit;
} EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
///
/// FPDT Firmware Basic Boot Performance Table signature
///
#define EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T')
//
// FPDT Firmware Basic Boot Performance Table
//
typedef struct {
EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER Header;
//
// one or more Performance Records.
//
} EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_TABLE;
///
/// FPDT "S3PT" S3 Performance Table
///
#define EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T')
//
// FPDT Firmware S3 Boot Performance Table
//
typedef struct {
EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER Header;
//
// one or more Performance Records.
//
} EFI_ACPI_5_0_FPDT_FIRMWARE_S3_BOOT_TABLE;
///
/// FPDT Basic S3 Resume Performance Record
///
typedef struct {
EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
///
/// A count of the number of S3 resume cycles since the last full boot sequence.
///
UINT32 ResumeCount;
///
/// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
/// OS waking vector. Only the most recent resume cycle's time is retained.
///
UINT64 FullResume;
///
/// Average timer value of all resume cycles logged since the last full boot
/// sequence, including the most recent resume. Note that the entire log of
/// timer values does not need to be retained in order to calculate this average.
///
UINT64 AverageResume;
} EFI_ACPI_5_0_FPDT_S3_RESUME_RECORD;
///
/// FPDT Basic S3 Suspend Performance Record
///
typedef struct {
EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
///
/// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
/// Only the most recent suspend cycle's timer value is retained.
///
UINT64 SuspendStart;
///
/// Timer value recorded at the final firmware write to SLP_TYP (or other
/// mechanism) used to trigger hardware entry to S3.
/// Only the most recent suspend cycle's timer value is retained.
///
UINT64 SuspendEnd;
} EFI_ACPI_5_0_FPDT_S3_SUSPEND_RECORD;
///
/// Firmware Performance Record Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
} EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_RECORD_TABLE;
///
/// Generic Timer Description Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT64 PhysicalAddress;
UINT32 GlobalFlags;
UINT32 SecurePL1TimerGSIV;
UINT32 SecurePL1TimerFlags;
UINT32 NonSecurePL1TimerGSIV;
UINT32 NonSecurePL1TimerFlags;
UINT32 VirtualTimerGSIV;
UINT32 VirtualTimerFlags;
UINT32 NonSecurePL2TimerGSIV;
UINT32 NonSecurePL2TimerFlags;
} EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE;
///
/// GTDT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x01
///
/// Global Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_MEMORY_MAPPED_BLOCK_PRESENT BIT0
#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_INTERRUPT_MODE BIT1
///
/// Timer Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
///
/// Boot Error Record Table (BERT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 BootErrorRegionLength;
UINT64 BootErrorRegion;
} EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_HEADER;
///
/// BERT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
///
/// Boot Error Region Block Status Definition
///
typedef struct {
UINT32 UncorrectableErrorValid:1;
UINT32 CorrectableErrorValid:1;
UINT32 MultipleUncorrectableErrors:1;
UINT32 MultipleCorrectableErrors:1;
UINT32 ErrorDataEntryCount:10;
UINT32 Reserved:18;
} EFI_ACPI_5_0_ERROR_BLOCK_STATUS;
///
/// Boot Error Region Definition
///
typedef struct {
EFI_ACPI_5_0_ERROR_BLOCK_STATUS BlockStatus;
UINT32 RawDataOffset;
UINT32 RawDataLength;
UINT32 DataLength;
UINT32 ErrorSeverity;
} EFI_ACPI_5_0_BOOT_ERROR_REGION_STRUCTURE;
//
// Boot Error Severity types
//
#define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTABLE 0x00
#define EFI_ACPI_5_0_ERROR_SEVERITY_FATAL 0x01
#define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTED 0x02
#define EFI_ACPI_5_0_ERROR_SEVERITY_NONE 0x03
///
/// Generic Error Data Entry Definition
///
typedef struct {
UINT8 SectionType[16];
UINT32 ErrorSeverity;
UINT16 Revision;
UINT8 ValidationBits;
UINT8 Flags;
UINT32 ErrorDataLength;
UINT8 FruId[16];
UINT8 FruText[20];
} EFI_ACPI_5_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
///
/// Generic Error Data Entry Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201
///
/// HEST - Hardware Error Source Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 ErrorSourceCount;
} EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
///
/// HEST Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
//
// Error Source structure types.
//
#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00
#define EFI_ACPI_5_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01
#define EFI_ACPI_5_0_IA32_ARCHITECTURE_NMI_ERROR 0x02
#define EFI_ACPI_5_0_PCI_EXPRESS_ROOT_PORT_AER 0x06
#define EFI_ACPI_5_0_PCI_EXPRESS_DEVICE_AER 0x07
#define EFI_ACPI_5_0_PCI_EXPRESS_BRIDGE_AER 0x08
#define EFI_ACPI_5_0_GENERIC_HARDWARE_ERROR 0x09
//
// Error Source structure flags.
//
#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)
#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)
///
/// IA-32 Architecture Machine Check Exception Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT64 GlobalCapabilityInitData;
UINT64 GlobalControlInitData;
UINT8 NumberOfHardwareBanks;
UINT8 Reserved1[7];
} EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
///
/// IA-32 Architecture Machine Check Bank Structure Definition
///
typedef struct {
UINT8 BankNumber;
UINT8 ClearStatusOnInitialization;
UINT8 StatusDataFormat;
UINT8 Reserved0;
UINT32 ControlRegisterMsrAddress;
UINT64 ControlInitData;
UINT32 StatusRegisterMsrAddress;
UINT32 AddressRegisterMsrAddress;
UINT32 MiscRegisterMsrAddress;
} EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
///
/// IA-32 Architecture Machine Check Bank Structure MCA data format
///
#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00
#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01
#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02
//
// Hardware Error Notification types. All other values are reserved
//
#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00
#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01
#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02
#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03
#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04
///
/// Hardware Error Notification Configuration Write Enable Structure Definition
///
typedef struct {
UINT16 Type:1;
UINT16 PollInterval:1;
UINT16 SwitchToPollingThresholdValue:1;
UINT16 SwitchToPollingThresholdWindow:1;
UINT16 ErrorThresholdValue:1;
UINT16 ErrorThresholdWindow:1;
UINT16 Reserved:10;
} EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
///
/// Hardware Error Notification Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;
UINT32 PollInterval;
UINT32 Vector;
UINT32 SwitchToPollingThresholdValue;
UINT32 SwitchToPollingThresholdWindow;
UINT32 ErrorThresholdValue;
UINT32 ErrorThresholdWindow;
} EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
///
/// IA-32 Architecture Corrected Machine Check Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
UINT8 NumberOfHardwareBanks;
UINT8 Reserved1[3];
} EFI_ACPI_5_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
///
/// IA-32 Architecture NMI Error Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 MaxRawDataLength;
} EFI_ACPI_5_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
///
/// PCI Express Root Port AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
UINT32 RootErrorCommand;
} EFI_ACPI_5_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
///
/// PCI Express Device AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
} EFI_ACPI_5_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
///
/// PCI Express Bridge AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
UINT32 SecondaryUncorrectableErrorMask;
UINT32 SecondaryUncorrectableErrorSeverity;
UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;
} EFI_ACPI_5_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
///
/// Generic Hardware Error Source Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT16 RelatedSourceId;
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 MaxRawDataLength;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;
EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
UINT32 ErrorStatusBlockLength;
} EFI_ACPI_5_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
///
/// Generic Error Status Definition
///
typedef struct {
EFI_ACPI_5_0_ERROR_BLOCK_STATUS BlockStatus;
UINT32 RawDataOffset;
UINT32 RawDataLength;
UINT32 DataLength;
UINT32 ErrorSeverity;
} EFI_ACPI_5_0_GENERIC_ERROR_STATUS_STRUCTURE;
///
/// ERST - Error Record Serialization Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 SerializationHeaderSize;
UINT8 Reserved0[4];
UINT32 InstructionEntryCount;
} EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
///
/// ERST Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
///
/// ERST Serialization Actions
///
#define EFI_ACPI_5_0_ERST_BEGIN_WRITE_OPERATION 0x00
#define EFI_ACPI_5_0_ERST_BEGIN_READ_OPERATION 0x01
#define EFI_ACPI_5_0_ERST_BEGIN_CLEAR_OPERATION 0x02
#define EFI_ACPI_5_0_ERST_END_OPERATION 0x03
#define EFI_ACPI_5_0_ERST_SET_RECORD_OFFSET 0x04
#define EFI_ACPI_5_0_ERST_EXECUTE_OPERATION 0x05
#define EFI_ACPI_5_0_ERST_CHECK_BUSY_STATUS 0x06
#define EFI_ACPI_5_0_ERST_GET_COMMAND_STATUS 0x07
#define EFI_ACPI_5_0_ERST_GET_RECORD_IDENTIFIER 0x08
#define EFI_ACPI_5_0_ERST_SET_RECORD_IDENTIFIER 0x09
#define EFI_ACPI_5_0_ERST_GET_RECORD_COUNT 0x0A
#define EFI_ACPI_5_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B
#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D
#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E
#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F
///
/// ERST Action Command Status
///
#define EFI_ACPI_5_0_ERST_STATUS_SUCCESS 0x00
#define EFI_ACPI_5_0_ERST_STATUS_NOT_ENOUGH_SPACE 0x01
#define EFI_ACPI_5_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02
#define EFI_ACPI_5_0_ERST_STATUS_FAILED 0x03
#define EFI_ACPI_5_0_ERST_STATUS_RECORD_STORE_EMPTY 0x04
#define EFI_ACPI_5_0_ERST_STATUS_RECORD_NOT_FOUND 0x05
///
/// ERST Serialization Instructions
///
#define EFI_ACPI_5_0_ERST_READ_REGISTER 0x00
#define EFI_ACPI_5_0_ERST_READ_REGISTER_VALUE 0x01
#define EFI_ACPI_5_0_ERST_WRITE_REGISTER 0x02
#define EFI_ACPI_5_0_ERST_WRITE_REGISTER_VALUE 0x03
#define EFI_ACPI_5_0_ERST_NOOP 0x04
#define EFI_ACPI_5_0_ERST_LOAD_VAR1 0x05
#define EFI_ACPI_5_0_ERST_LOAD_VAR2 0x06
#define EFI_ACPI_5_0_ERST_STORE_VAR1 0x07
#define EFI_ACPI_5_0_ERST_ADD 0x08
#define EFI_ACPI_5_0_ERST_SUBTRACT 0x09
#define EFI_ACPI_5_0_ERST_ADD_VALUE 0x0A
#define EFI_ACPI_5_0_ERST_SUBTRACT_VALUE 0x0B
#define EFI_ACPI_5_0_ERST_STALL 0x0C
#define EFI_ACPI_5_0_ERST_STALL_WHILE_TRUE 0x0D
#define EFI_ACPI_5_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E
#define EFI_ACPI_5_0_ERST_GOTO 0x0F
#define EFI_ACPI_5_0_ERST_SET_SRC_ADDRESS_BASE 0x10
#define EFI_ACPI_5_0_ERST_SET_DST_ADDRESS_BASE 0x11
#define EFI_ACPI_5_0_ERST_MOVE_DATA 0x12
///
/// ERST Instruction Flags
///
#define EFI_ACPI_5_0_ERST_PRESERVE_REGISTER 0x01
///
/// ERST Serialization Instruction Entry
///
typedef struct {
UINT8 SerializationAction;
UINT8 Instruction;
UINT8 Flags;
UINT8 Reserved0;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
UINT64 Value;
UINT64 Mask;
} EFI_ACPI_5_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
///
/// EINJ - Error Injection Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 InjectionHeaderSize;
UINT8 InjectionFlags;
UINT8 Reserved0[3];
UINT32 InjectionEntryCount;
} EFI_ACPI_5_0_ERROR_INJECTION_TABLE_HEADER;
///
/// EINJ Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_REVISION 0x01
///
/// EINJ Error Injection Actions
///
#define EFI_ACPI_5_0_EINJ_BEGIN_INJECTION_OPERATION 0x00
#define EFI_ACPI_5_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01
#define EFI_ACPI_5_0_EINJ_SET_ERROR_TYPE 0x02
#define EFI_ACPI_5_0_EINJ_GET_ERROR_TYPE 0x03
#define EFI_ACPI_5_0_EINJ_END_OPERATION 0x04
#define EFI_ACPI_5_0_EINJ_EXECUTE_OPERATION 0x05
#define EFI_ACPI_5_0_EINJ_CHECK_BUSY_STATUS 0x06
#define EFI_ACPI_5_0_EINJ_GET_COMMAND_STATUS 0x07
#define EFI_ACPI_5_0_EINJ_TRIGGER_ERROR 0xFF
///
/// EINJ Action Command Status
///
#define EFI_ACPI_5_0_EINJ_STATUS_SUCCESS 0x00
#define EFI_ACPI_5_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01
#define EFI_ACPI_5_0_EINJ_STATUS_INVALID_ACCESS 0x02
///
/// EINJ Error Type Definition
///
#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)
#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)
#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)
#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)
#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)
#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)
#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)
#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)
#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)
#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)
#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)
#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)
///
/// EINJ Injection Instructions
///
#define EFI_ACPI_5_0_EINJ_READ_REGISTER 0x00
#define EFI_ACPI_5_0_EINJ_READ_REGISTER_VALUE 0x01
#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER 0x02
#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER_VALUE 0x03
#define EFI_ACPI_5_0_EINJ_NOOP 0x04
///
/// EINJ Instruction Flags
///
#define EFI_ACPI_5_0_EINJ_PRESERVE_REGISTER 0x01
///
/// EINJ Injection Instruction Entry
///
typedef struct {
UINT8 InjectionAction;
UINT8 Instruction;
UINT8 Flags;
UINT8 Reserved0;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
UINT64 Value;
UINT64 Mask;
} EFI_ACPI_5_0_EINJ_INJECTION_INSTRUCTION_ENTRY;
///
/// EINJ Trigger Action Table
///
typedef struct {
UINT32 HeaderSize;
UINT32 Revision;
UINT32 TableSize;
UINT32 EntryCount;
} EFI_ACPI_5_0_EINJ_TRIGGER_ACTION_TABLE;
///
/// Platform Communications Channel Table (PCCT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 Flags;
UINT64 Reserved;
} EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
///
/// PCCT Version (as defined in ACPI 5.0 spec.)
///
#define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
///
/// PCCT Global Flags
///
#define EFI_ACPI_5_0_PCCT_FLAGS_SCI_DOORBELL BIT0
//
// PCCT Subspace type
//
#define EFI_ACPI_5_0_PCCT_SUBSPACE_TYPE_GENERIC 0x00
///
/// PCC Subspace Structure Header
///
typedef struct {
UINT8 Type;
UINT8 Length;
} EFI_ACPI_5_0_PCCT_SUBSPACE_HEADER;
///
/// Generic Communications Subspace Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved[6];
UINT64 BaseAddress;
UINT64 AddressLength;
EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
UINT64 DoorbellPreserve;
UINT64 DoorbellWrite;
UINT32 NominalLatency;
UINT32 MaximumPeriodicAccessRate;
UINT16 MinimumRequestTurnaroundTime;
} EFI_ACPI_5_0_PCCT_SUBSPACE_GENERIC;
///
/// Generic Communications Channel Shared Memory Region
///
typedef struct {
UINT8 Command;
UINT8 Reserved:7;
UINT8 GenerateSci:1;
} EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
typedef struct {
UINT8 CommandComplete:1;
UINT8 SciDoorbell:1;
UINT8 Error:1;
UINT8 PlatformNotification:1;
UINT8 Reserved:4;
UINT8 Reserved1;
} EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
typedef struct {
UINT32 Signature;
EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command;
EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status;
} EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;
//
// Known table signatures
//
///
/// "RSD PTR " Root System Description Pointer
///
-#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
+#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
///
/// "APIC" Multiple APIC Description Table
///
#define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
///
/// "BERT" Boot Error Record Table
///
#define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')
///
/// "BGRT" Boot Graphics Resource Table
///
#define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T')
///
/// "CPEP" Corrected Platform Error Polling Table
///
#define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
///
/// "DSDT" Differentiated System Description Table
///
#define EFI_ACPI_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
///
/// "ECDT" Embedded Controller Boot Resources Table
///
#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
///
/// "EINJ" Error Injection Table
///
#define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')
///
/// "ERST" Error Record Serialization Table
///
#define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')
///
/// "FACP" Fixed ACPI Description Table
///
#define EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
///
/// "FACS" Firmware ACPI Control Structure
///
#define EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
///
/// "FPDT" Firmware Performance Data Table
///
#define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T')
///
/// "GTDT" Generic Timer Description Table
///
#define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T')
///
/// "HEST" Hardware Error Source Table
///
#define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')
///
/// "MPST" Memory Power State Table
///
#define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T')
///
/// "MSCT" Maximum System Characteristics Table
///
#define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')
///
/// "PMTT" Platform Memory Topology Table
///
#define EFI_ACPI_5_0_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T')
///
/// "PSDT" Persistent System Description Table
///
#define EFI_ACPI_5_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
///
/// "RASF" ACPI RAS Feature Table
///
#define EFI_ACPI_5_0_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F')
///
/// "RSDT" Root System Description Table
///
#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
///
/// "SBST" Smart Battery Specification Table
///
#define EFI_ACPI_5_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
///
/// "SLIT" System Locality Information Table
///
#define EFI_ACPI_5_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
///
/// "SRAT" System Resource Affinity Table
///
#define EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
///
/// "SSDT" Secondary System Description Table
///
#define EFI_ACPI_5_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
///
/// "XSDT" Extended System Description Table
///
#define EFI_ACPI_5_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
///
/// "BOOT" MS Simple Boot Spec
///
#define EFI_ACPI_5_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
///
/// "CSRT" MS Core System Resource Table
///
#define EFI_ACPI_5_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T')
///
/// "DBG2" MS Debug Port 2 Spec
///
#define EFI_ACPI_5_0_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2')
///
/// "DBGP" MS Debug Port Spec
///
#define EFI_ACPI_5_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
///
/// "DMAR" DMA Remapping Table
///
#define EFI_ACPI_5_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')
///
/// "DRTM" Dynamic Root of Trust for Measurement Table
///
#define EFI_ACPI_5_0_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M')
///
/// "ETDT" Event Timer Description Table
///
#define EFI_ACPI_5_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
///
/// "HPET" IA-PC High Precision Event Timer Table
///
#define EFI_ACPI_5_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')
///
/// "iBFT" iSCSI Boot Firmware Table
///
#define EFI_ACPI_5_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')
///
/// "IVRS" I/O Virtualization Reporting Structure
///
#define EFI_ACPI_5_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')
///
/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
///
#define EFI_ACPI_5_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
///
/// "MCHI" Management Controller Host Interface Table
///
#define EFI_ACPI_5_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')
///
/// "MSDM" MS Data Management Table
///
#define EFI_ACPI_5_0_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M')
///
+/// "PCCT" Platform Communications Channel Table
+///
+#define EFI_ACPI_5_0_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T')
+
+///
/// "SLIC" MS Software Licensing Table Specification
///
#define EFI_ACPI_5_0_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C')
///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
///
#define EFI_ACPI_5_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
///
/// "SPMI" Server Platform Management Interface Table
///
#define EFI_ACPI_5_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
///
/// "TCPA" Trusted Computing Platform Alliance Capabilities Table
///
#define EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
///
/// "TPM2" Trusted Computing Platform 1 Table
///
#define EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2')
///
/// "UEFI" UEFI ACPI Data Table
///
#define EFI_ACPI_5_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')
///
/// "WAET" Windows ACPI Emulated Devices Table
///
#define EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')
#define EFI_ACPI_5_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE
///
/// "WDAT" Watchdog Action Table
///
#define EFI_ACPI_5_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')
///
/// "WDRT" Watchdog Resource Table
///
#define EFI_ACPI_5_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')
///
/// "WPBT" MS Platform Binary Table
///
#define EFI_ACPI_5_0_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T')
#pragma pack()
#endif
Property changes on: head/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r262185-262527
Merged /projects/fuse2/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r344558-350621,350944,350955
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r303985-305318
Merged /projects/pf/head/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r263908
Merged /projects/elftoolchain/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/bectl/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r336666-337662
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r295193
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r301868
Merged /projects/clang1000-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r295220
Merged /projects/quota64/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r184125-207707
Merged /projects/openssl111/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r339079
Merged /projects/random_number_generator/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r286179-290100
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r319973-326168
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r303380
Merged /projects/head_mfi/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r233621
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/release-pkg/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r274131-298104
Merged /projects/zfsd/head/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r266519,269993
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r283596-287505
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r312125-313435
Merged /projects/building-blocks/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r262258-262612
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r230929-231848
Merged /projects/clang800-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r351317-353352
Merged /projects/clang700-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r326936-327339,327341-327933
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r291227-291228,292618
Merged /projects/clang350-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r277327-280030
Merged /projects/collation/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r286424-290491
Merged /projects/clang370-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r287506-288928
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r289470-289489
Merged /projects/clang380-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r309166-310192
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r298865-299093
Merged /projects/release-arm64/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r281786,281788,281792
Merged /user/ngie/make_check/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r291879-295379
Merged /projects/release-embedded/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r221273-222812,222815-223757
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/IndustryStandard/Acpi50.h:r361765
Index: head/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h
===================================================================
--- head/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h (revision 361801)
+++ head/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h (revision 361802)
@@ -1,2139 +1,2139 @@
-/** @file
+/** @file
ACPI 5.1 definitions from the ACPI Specification Revision 5.1 Errata B January, 2016.
Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
- Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.
(C) Copyright 2015 Hewlett Packard Enterprise Development LP
- 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.
+ Copyright (c) 2020, ARM Ltd. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _ACPI_5_1_H_
#define _ACPI_5_1_H_
#include
//
// Ensure proper structure formats
//
#pragma pack(1)
///
/// ACPI 5.1 Generic Address Space definition
///
typedef struct {
UINT8 AddressSpaceId;
UINT8 RegisterBitWidth;
UINT8 RegisterBitOffset;
UINT8 AccessSize;
UINT64 Address;
} EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE;
//
// Generic Address Space Address IDs
//
#define EFI_ACPI_5_1_SYSTEM_MEMORY 0
#define EFI_ACPI_5_1_SYSTEM_IO 1
#define EFI_ACPI_5_1_PCI_CONFIGURATION_SPACE 2
#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER 3
#define EFI_ACPI_5_1_SMBUS 4
#define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL 0x0A
#define EFI_ACPI_5_1_FUNCTIONAL_FIXED_HARDWARE 0x7F
//
// Generic Address Space Access Sizes
//
#define EFI_ACPI_5_1_UNDEFINED 0
#define EFI_ACPI_5_1_BYTE 1
#define EFI_ACPI_5_1_WORD 2
#define EFI_ACPI_5_1_DWORD 3
#define EFI_ACPI_5_1_QWORD 4
//
// ACPI 5.1 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_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER;
///
/// RSD_PTR Revision (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 5.1) 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_5_1_COMMON_HEADER;
//
// Root System Description Table
-// No definition needed as it is a common description table header, the same with
+// 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 5.1 spec.)
///
#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
//
// Extended System Description Table
-// No definition needed as it is a common description table header, the same with
+// 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 5.1 spec.)
///
#define EFI_ACPI_5_1_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_5_1_GENERIC_ADDRESS_STRUCTURE ResetReg;
UINT8 ResetValue;
UINT16 ArmBootArch;
UINT8 MinorVersion;
UINT64 XFirmwareCtrl;
UINT64 XDsdt;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepControlReg;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepStatusReg;
} EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE;
///
/// FADT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x05
#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x01
//
// Fixed ACPI Description Table Preferred Power Management Profile
//
#define EFI_ACPI_5_1_PM_PROFILE_UNSPECIFIED 0
#define EFI_ACPI_5_1_PM_PROFILE_DESKTOP 1
#define EFI_ACPI_5_1_PM_PROFILE_MOBILE 2
#define EFI_ACPI_5_1_PM_PROFILE_WORKSTATION 3
#define EFI_ACPI_5_1_PM_PROFILE_ENTERPRISE_SERVER 4
#define EFI_ACPI_5_1_PM_PROFILE_SOHO_SERVER 5
#define EFI_ACPI_5_1_PM_PROFILE_APPLIANCE_PC 6
#define EFI_ACPI_5_1_PM_PROFILE_PERFORMANCE_SERVER 7
#define EFI_ACPI_5_1_PM_PROFILE_TABLET 8
//
// Fixed ACPI Description Table Boot Architecture Flags
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_5_1_LEGACY_DEVICES BIT0
#define EFI_ACPI_5_1_8042 BIT1
#define EFI_ACPI_5_1_VGA_NOT_PRESENT BIT2
#define EFI_ACPI_5_1_MSI_NOT_SUPPORTED BIT3
#define EFI_ACPI_5_1_PCIE_ASPM_CONTROLS BIT4
#define EFI_ACPI_5_1_CMOS_RTC_NOT_PRESENT BIT5
//
// Fixed ACPI Description Table Arm Boot Architecture Flags
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_5_1_ARM_PSCI_COMPLIANT BIT0
#define EFI_ACPI_5_1_ARM_PSCI_USE_HVC BIT1
//
// Fixed ACPI Description Table Fixed Feature Flags
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_5_1_WBINVD BIT0
#define EFI_ACPI_5_1_WBINVD_FLUSH BIT1
#define EFI_ACPI_5_1_PROC_C1 BIT2
#define EFI_ACPI_5_1_P_LVL2_UP BIT3
#define EFI_ACPI_5_1_PWR_BUTTON BIT4
#define EFI_ACPI_5_1_SLP_BUTTON BIT5
#define EFI_ACPI_5_1_FIX_RTC BIT6
#define EFI_ACPI_5_1_RTC_S4 BIT7
#define EFI_ACPI_5_1_TMR_VAL_EXT BIT8
#define EFI_ACPI_5_1_DCK_CAP BIT9
#define EFI_ACPI_5_1_RESET_REG_SUP BIT10
#define EFI_ACPI_5_1_SEALED_CASE BIT11
#define EFI_ACPI_5_1_HEADLESS BIT12
#define EFI_ACPI_5_1_CPU_SW_SLP BIT13
#define EFI_ACPI_5_1_PCI_EXP_WAK BIT14
#define EFI_ACPI_5_1_USE_PLATFORM_CLOCK BIT15
#define EFI_ACPI_5_1_S4_RTC_STS_VALID BIT16
#define EFI_ACPI_5_1_REMOTE_POWER_ON_CAPABLE BIT17
#define EFI_ACPI_5_1_FORCE_APIC_CLUSTER_MODEL BIT18
#define EFI_ACPI_5_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19
#define EFI_ACPI_5_1_HW_REDUCED_ACPI BIT20
#define EFI_ACPI_5_1_LOW_POWER_S0_IDLE_CAPABLE BIT21
///
/// Firmware ACPI Control Structure
///
typedef struct {
UINT32 Signature;
UINT32 Length;
UINT32 HardwareSignature;
UINT32 FirmwareWakingVector;
UINT32 GlobalLock;
UINT32 Flags;
UINT64 XFirmwareWakingVector;
UINT8 Version;
UINT8 Reserved0[3];
UINT32 OspmFlags;
UINT8 Reserved1[24];
} EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE;
///
/// FACS Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02
///
/// Firmware Control Structure Feature Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_5_1_S4BIOS_F BIT0
#define EFI_ACPI_5_1_64BIT_WAKE_SUPPORTED_F BIT1
///
/// OSPM Enabled Firmware Control Structure Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_5_1_OSPM_64BIT_WAKE_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_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
#define EFI_ACPI_5_1_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_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
///
/// MADT Revision (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
///
/// Multiple APIC Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_5_1_PCAT_COMPAT BIT0
//
// Multiple APIC Description Table APIC structure types
// All other values between 0x0D and 0x7F are reserved and
// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
//
#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC 0x00
#define EFI_ACPI_5_1_IO_APIC 0x01
#define EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE 0x02
#define EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE 0x03
#define EFI_ACPI_5_1_LOCAL_APIC_NMI 0x04
#define EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
#define EFI_ACPI_5_1_IO_SAPIC 0x06
#define EFI_ACPI_5_1_LOCAL_SAPIC 0x07
#define EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES 0x08
#define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC 0x09
#define EFI_ACPI_5_1_LOCAL_X2APIC_NMI 0x0A
#define EFI_ACPI_5_1_GIC 0x0B
#define EFI_ACPI_5_1_GICD 0x0C
#define EFI_ACPI_5_1_GIC_MSI_FRAME 0x0D
#define EFI_ACPI_5_1_GICR 0x0E
//
// APIC Structure Definitions
//
///
/// Processor Local APIC Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 AcpiProcessorId;
UINT8 ApicId;
UINT32 Flags;
} EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_STRUCTURE;
///
/// Local APIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_1_LOCAL_APIC_ENABLED BIT0
///
/// IO APIC Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 IoApicId;
UINT8 Reserved;
UINT32 IoApicAddress;
UINT32 GlobalSystemInterruptBase;
} EFI_ACPI_5_1_IO_APIC_STRUCTURE;
///
/// Interrupt Source Override Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Bus;
UINT8 Source;
UINT32 GlobalSystemInterrupt;
UINT16 Flags;
} EFI_ACPI_5_1_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_5_1_PLATFORM_INTERRUPT_APIC_STRUCTURE;
//
// MPS INTI flags.
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_5_1_POLARITY (3 << 0)
#define EFI_ACPI_5_1_TRIGGER_MODE (3 << 2)
///
/// Non-Maskable Interrupt Source Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Flags;
UINT32 GlobalSystemInterrupt;
} EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
///
/// Local APIC NMI Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 AcpiProcessorId;
UINT16 Flags;
UINT8 LocalApicLint;
} EFI_ACPI_5_1_LOCAL_APIC_NMI_STRUCTURE;
///
/// Local APIC Address Override Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT64 LocalApicAddress;
} EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
///
/// IO SAPIC Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 IoApicId;
UINT8 Reserved;
UINT32 GlobalSystemInterruptBase;
UINT64 IoSapicAddress;
} EFI_ACPI_5_1_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_5_1_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_5_1_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
///
/// Platform Interrupt Source Flags.
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_5_1_CPEI_PROCESSOR_OVERRIDE BIT0
///
/// Processor Local x2APIC Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved[2];
UINT32 X2ApicId;
UINT32 Flags;
UINT32 AcpiProcessorUid;
} EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
///
/// Local x2APIC NMI Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Flags;
UINT32 AcpiProcessorUid;
UINT8 LocalX2ApicLint;
UINT8 Reserved[3];
} EFI_ACPI_5_1_LOCAL_X2APIC_NMI_STRUCTURE;
///
/// GIC Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT32 CPUInterfaceNumber;
UINT32 AcpiProcessorUid;
UINT32 Flags;
UINT32 ParkingProtocolVersion;
UINT32 PerformanceInterruptGsiv;
UINT64 ParkedAddress;
UINT64 PhysicalBaseAddress;
UINT64 GICV;
UINT64 GICH;
UINT32 VGICMaintenanceInterrupt;
UINT64 GICRBaseAddress;
UINT64 MPIDR;
} EFI_ACPI_5_1_GIC_STRUCTURE;
///
/// GIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_1_GIC_ENABLED BIT0
#define EFI_ACPI_5_1_PERFORMANCE_INTERRUPT_MODEL BIT1
#define EFI_ACPI_5_1_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2
///
/// GIC Distributor Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved1;
UINT32 GicId;
UINT64 PhysicalBaseAddress;
UINT32 SystemVectorBase;
UINT8 GicVersion;
UINT8 Reserved2[3];
} EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE;
///
/// GIC Version
///
#define EFI_ACPI_5_1_GIC_V1 0x01
#define EFI_ACPI_5_1_GIC_V2 0x02
#define EFI_ACPI_5_1_GIC_V3 0x03
#define EFI_ACPI_5_1_GIC_V4 0x04
///
/// GIC MSI Frame Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved1;
UINT32 GicMsiFrameId;
UINT64 PhysicalBaseAddress;
UINT32 Flags;
UINT16 SPICount;
UINT16 SPIBase;
} EFI_ACPI_5_1_GIC_MSI_FRAME_STRUCTURE;
///
/// GIC MSI Frame Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_1_SPI_COUNT_BASE_SELECT BIT0
///
/// GICR Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT64 DiscoveryRangeBaseAddress;
UINT32 DiscoveryRangeLength;
} EFI_ACPI_5_1_GICR_STRUCTURE;
///
/// Smart Battery Description Table (SBST)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 WarningEnergyLevel;
UINT32 LowEnergyLevel;
UINT32 CriticalEnergyLevel;
} EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE;
///
/// SBST Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_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_5_1_GENERIC_ADDRESS_STRUCTURE EcControl;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE EcData;
UINT32 Uid;
UINT8 GpeBit;
} EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
///
/// ECDT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_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_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
///
/// SRAT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03
//
// SRAT structure types.
// All other values between 0x04 an 0xFF are reserved and
// will be ignored by OSPM.
//
#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
#define EFI_ACPI_5_1_MEMORY_AFFINITY 0x01
#define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02
#define EFI_ACPI_5_1_GICC_AFFINITY 0x03
///
/// Processor Local APIC/SAPIC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 ProximityDomain7To0;
UINT8 ApicId;
UINT32 Flags;
UINT8 LocalSapicEid;
UINT8 ProximityDomain31To8[3];
UINT32 ClockDomain;
} EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
///
/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_1_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_5_1_MEMORY_AFFINITY_STRUCTURE;
//
// Memory Flags. All other bits are reserved and must be 0.
//
#define EFI_ACPI_5_1_MEMORY_ENABLED (1 << 0)
#define EFI_ACPI_5_1_MEMORY_HOT_PLUGGABLE (1 << 1)
#define EFI_ACPI_5_1_MEMORY_NONVOLATILE (1 << 2)
///
/// Processor Local x2APIC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved1[2];
UINT32 ProximityDomain;
UINT32 X2ApicId;
UINT32 Flags;
UINT32 ClockDomain;
UINT8 Reserved2[4];
} EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
///
/// GICC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT32 ProximityDomain;
UINT32 AcpiProcessorUid;
UINT32 Flags;
UINT32 ClockDomain;
} EFI_ACPI_5_1_GICC_AFFINITY_STRUCTURE;
///
/// GICC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_1_GICC_ENABLED (1 << 0)
///
/// 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_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
///
/// SLIT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01
///
/// Corrected Platform Error Polling Table (CPEP)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 Reserved[8];
} EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
///
/// CPEP Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
//
// CPEP processor structure types.
//
#define EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC 0x00
///
/// Corrected Platform Error Polling Processor Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 ProcessorId;
UINT8 ProcessorEid;
UINT32 PollingInterval;
} EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
///
/// Maximum System Characteristics Table (MSCT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 OffsetProxDomInfo;
UINT32 MaximumNumberOfProximityDomains;
UINT32 MaximumNumberOfClockDomains;
UINT64 MaximumPhysicalAddress;
} EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
///
/// MSCT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
///
/// Maximum Proximity Domain Information Structure Definition
///
typedef struct {
UINT8 Revision;
UINT8 Length;
UINT32 ProximityDomainRangeLow;
UINT32 ProximityDomainRangeHigh;
UINT32 MaximumProcessorCapacity;
UINT64 MaximumMemoryCapacity;
} EFI_ACPI_5_1_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
///
/// ACPI RAS Feature Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 PlatformCommunicationChannelIdentifier[12];
} EFI_ACPI_5_1_RAS_FEATURE_TABLE;
///
/// RASF Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_RAS_FEATURE_TABLE_REVISION 0x01
///
/// ACPI RASF Platform Communication Channel Shared Memory Region definition.
///
typedef struct {
UINT32 Signature;
UINT16 Command;
UINT16 Status;
UINT16 Version;
UINT8 RASCapabilities[16];
UINT8 SetRASCapabilities[16];
UINT16 NumberOfRASFParameterBlocks;
UINT32 SetRASCapabilitiesStatus;
} EFI_ACPI_5_1_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
///
/// ACPI RASF PCC command code
///
#define EFI_ACPI_5_1_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01
///
/// ACPI RASF Platform RAS Capabilities
///
#define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01
#define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02
///
/// ACPI RASF Parameter Block structure for PATROL_SCRUB
///
typedef struct {
UINT16 Type;
UINT16 Version;
UINT16 Length;
UINT16 PatrolScrubCommand;
UINT64 RequestedAddressRange[2];
UINT64 ActualAddressRange[2];
UINT16 Flags;
UINT8 RequestedSpeed;
} EFI_ACPI_5_1_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
///
/// ACPI RASF Patrol Scrub command
///
#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01
#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02
#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03
///
/// Memory Power State Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 PlatformCommunicationChannelIdentifier;
UINT8 Reserved[3];
// Memory Power Node Structure
// Memory Power State Characteristics
} EFI_ACPI_5_1_MEMORY_POWER_STATUS_TABLE;
///
/// MPST Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_REVISION 0x01
///
/// MPST Platform Communication Channel Shared Memory Region definition.
///
typedef struct {
UINT32 Signature;
UINT16 Command;
UINT16 Status;
UINT32 MemoryPowerCommandRegister;
UINT32 MemoryPowerStatusRegister;
UINT32 PowerStateId;
UINT32 MemoryPowerNodeId;
UINT64 MemoryEnergyConsumed;
UINT64 ExpectedAveragePowerComsuned;
} EFI_ACPI_5_1_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
///
/// ACPI MPST PCC command code
///
#define EFI_ACPI_5_1_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03
///
/// ACPI MPST Memory Power command
///
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04
///
/// MPST Memory Power Node Table
///
typedef struct {
UINT8 PowerStateValue;
UINT8 PowerStateInformationIndex;
} EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE;
typedef struct {
UINT8 Flag;
UINT8 Reserved;
UINT16 MemoryPowerNodeId;
UINT32 Length;
UINT64 AddressBase;
UINT64 AddressLength;
UINT32 NumberOfPowerStates;
UINT32 NumberOfPhysicalComponents;
//EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates];
//UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents];
} EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE;
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04
typedef struct {
UINT16 MemoryPowerNodeCount;
UINT8 Reserved[2];
} EFI_ACPI_5_1_MPST_MEMORY_POWER_NODE_TABLE;
///
/// MPST Memory Power State Characteristics Table
///
typedef struct {
UINT8 PowerStateStructureID;
UINT8 Flag;
UINT16 Reserved;
UINT32 AveragePowerConsumedInMPS0;
UINT32 RelativePowerSavingToMPS0;
UINT64 ExitLatencyToMPS0;
} EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02
#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04
typedef struct {
UINT16 MemoryPowerStateCharacteristicsCount;
UINT8 Reserved[2];
} EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
///
/// Memory Topology Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 Reserved;
} EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE;
///
/// PMTT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
///
/// Common Memory Aggregator Device Structure.
///
typedef struct {
UINT8 Type;
UINT8 Reserved;
UINT16 Length;
UINT16 Flags;
UINT16 Reserved1;
} EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// Memory Aggregator Device Type
///
#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x1
#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x3
///
/// Socket Memory Aggregator Device Structure.
///
typedef struct {
EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
UINT16 SocketIdentifier;
UINT16 Reserved;
//EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[];
} EFI_ACPI_5_1_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// MemoryController Memory Aggregator Device Structure.
///
typedef struct {
EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
UINT32 ReadLatency;
UINT32 WriteLatency;
UINT32 ReadBandwidth;
UINT32 WriteBandwidth;
UINT16 OptimalAccessUnit;
UINT16 OptimalAccessAlignment;
UINT16 Reserved;
UINT16 NumberOfProximityDomains;
//UINT32 ProximityDomain[NumberOfProximityDomains];
//EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[];
} EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// DIMM Memory Aggregator Device Structure.
///
typedef struct {
EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
UINT16 PhysicalComponentIdentifier;
UINT16 Reserved;
UINT32 SizeOfDimm;
UINT32 SmbiosHandle;
} EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// Boot Graphics Resource Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
///
/// 2-bytes (16 bit) version ID. This value must be 1.
///
UINT16 Version;
///
/// 1-byte status field indicating current status about the table.
/// Bits[7:1] = Reserved (must be zero)
/// Bit [0] = Valid. A one indicates the boot image graphic is valid.
///
UINT8 Status;
///
/// 1-byte enumerated type field indicating format of the image.
/// 0 = Bitmap
/// 1 - 255 Reserved (for future use)
///
UINT8 ImageType;
///
/// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
/// of the image bitmap.
///
UINT64 ImageAddress;
///
/// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
/// (X, Y) display offset of the top left corner of the boot image.
/// The top left corner of the display is at offset (0, 0).
///
UINT32 ImageOffsetX;
///
/// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
/// (X, Y) display offset of the top left corner of the boot image.
/// The top left corner of the display is at offset (0, 0).
///
UINT32 ImageOffsetY;
} EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE;
///
/// BGRT Revision
///
#define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
///
/// BGRT Version
///
#define EFI_ACPI_5_1_BGRT_VERSION 0x01
///
/// BGRT Status
///
#define EFI_ACPI_5_1_BGRT_STATUS_NOT_DISPLAYED 0x00
#define EFI_ACPI_5_1_BGRT_STATUS_DISPLAYED 0x01
///
/// BGRT Image Type
///
#define EFI_ACPI_5_1_BGRT_IMAGE_TYPE_BMP 0x00
///
/// FPDT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
///
/// FPDT Performance Record Types
///
#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000
#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001
///
/// FPDT Performance Record Revision
///
#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01
#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
///
/// FPDT Runtime Performance Record Types
///
#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000
#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001
#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002
///
/// FPDT Runtime Performance Record Revision
///
#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01
#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01
#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02
///
/// FPDT Performance Record header
///
typedef struct {
UINT16 Type;
UINT8 Length;
UINT8 Revision;
} EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER;
///
/// FPDT Performance Table header
///
typedef struct {
UINT32 Signature;
UINT32 Length;
} EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER;
///
/// FPDT Firmware Basic Boot Performance Pointer Record Structure
///
typedef struct {
EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;
UINT32 Reserved;
///
/// 64-bit processor-relative physical address of the Basic Boot Performance Table.
///
UINT64 BootPerformanceTablePointer;
} EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
///
/// FPDT S3 Performance Table Pointer Record Structure
///
typedef struct {
EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;
UINT32 Reserved;
///
/// 64-bit processor-relative physical address of the S3 Performance Table.
///
UINT64 S3PerformanceTablePointer;
} EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
///
/// FPDT Firmware Basic Boot Performance Record Structure
///
typedef struct {
EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;
UINT32 Reserved;
///
/// Timer value logged at the beginning of firmware image execution.
/// This may not always be zero or near zero.
///
UINT64 ResetEnd;
///
/// Timer value logged just prior to loading the OS boot loader into memory.
/// For non-UEFI compatible boots, this field must be zero.
///
UINT64 OsLoaderLoadImageStart;
///
/// Timer value logged just prior to launching the previously loaded OS boot loader image.
/// For non-UEFI compatible boots, the timer value logged will be just prior
/// to the INT 19h handler invocation.
///
UINT64 OsLoaderStartImageStart;
///
/// Timer value logged at the point when the OS loader calls the
/// ExitBootServices function for UEFI compatible firmware.
/// For non-UEFI compatible boots, this field must be zero.
///
UINT64 ExitBootServicesEntry;
///
- /// Timer value logged at the point just prior towhen the OS loader gaining
+ /// Timer value logged at the point just prior to when the OS loader gaining
/// control back from calls the ExitBootServices function for UEFI compatible firmware.
/// For non-UEFI compatible boots, this field must be zero.
///
UINT64 ExitBootServicesExit;
} EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
///
/// FPDT Firmware Basic Boot Performance Table signature
///
#define EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T')
//
// FPDT Firmware Basic Boot Performance Table
//
typedef struct {
EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER Header;
//
// one or more Performance Records.
//
} EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_TABLE;
///
/// FPDT "S3PT" S3 Performance Table
///
#define EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T')
//
// FPDT Firmware S3 Boot Performance Table
//
typedef struct {
EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER Header;
//
// one or more Performance Records.
//
} EFI_ACPI_5_1_FPDT_FIRMWARE_S3_BOOT_TABLE;
///
/// FPDT Basic S3 Resume Performance Record
///
typedef struct {
EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;
///
/// A count of the number of S3 resume cycles since the last full boot sequence.
///
UINT32 ResumeCount;
///
/// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
/// OS waking vector. Only the most recent resume cycle's time is retained.
///
UINT64 FullResume;
///
/// Average timer value of all resume cycles logged since the last full boot
/// sequence, including the most recent resume. Note that the entire log of
/// timer values does not need to be retained in order to calculate this average.
///
UINT64 AverageResume;
} EFI_ACPI_5_1_FPDT_S3_RESUME_RECORD;
///
/// FPDT Basic S3 Suspend Performance Record
///
typedef struct {
EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;
///
/// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
/// Only the most recent suspend cycle's timer value is retained.
///
UINT64 SuspendStart;
///
/// Timer value recorded at the final firmware write to SLP_TYP (or other
/// mechanism) used to trigger hardware entry to S3.
/// Only the most recent suspend cycle's timer value is retained.
///
UINT64 SuspendEnd;
} EFI_ACPI_5_1_FPDT_S3_SUSPEND_RECORD;
///
/// Firmware Performance Record Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
} EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_RECORD_TABLE;
///
/// Generic Timer Description Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT64 CntControlBasePhysicalAddress;
UINT32 Reserved;
UINT32 SecurePL1TimerGSIV;
UINT32 SecurePL1TimerFlags;
UINT32 NonSecurePL1TimerGSIV;
UINT32 NonSecurePL1TimerFlags;
UINT32 VirtualTimerGSIV;
UINT32 VirtualTimerFlags;
UINT32 NonSecurePL2TimerGSIV;
UINT32 NonSecurePL2TimerFlags;
UINT64 CntReadBasePhysicalAddress;
UINT32 PlatformTimerCount;
UINT32 PlatformTimerOffset;
} EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE;
///
/// GTDT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02
///
/// Timer Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT2
///
/// Platform Timer Type
///
#define EFI_ACPI_5_1_GTDT_GT_BLOCK 0
#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG 1
///
/// GT Block Structure
///
typedef struct {
UINT8 Type;
UINT16 Length;
UINT8 Reserved;
UINT64 CntCtlBase;
UINT32 GTBlockTimerCount;
UINT32 GTBlockTimerOffset;
} EFI_ACPI_5_1_GTDT_GT_BLOCK_STRUCTURE;
///
/// GT Block Timer Structure
///
typedef struct {
UINT8 GTFrameNumber;
UINT8 Reserved[3];
UINT64 CntBaseX;
UINT64 CntEL0BaseX;
UINT32 GTxPhysicalTimerGSIV;
UINT32 GTxPhysicalTimerFlags;
UINT32 GTxVirtualTimerGSIV;
UINT32 GTxVirtualTimerFlags;
UINT32 GTxCommonFlags;
} EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_STRUCTURE;
///
/// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
///
/// Common Flags Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0
#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT1
///
/// SBSA Generic Watchdog Structure
///
typedef struct {
UINT8 Type;
UINT16 Length;
UINT8 Reserved;
UINT64 RefreshFramePhysicalAddress;
UINT64 WatchdogControlFramePhysicalAddress;
UINT32 WatchdogTimerGSIV;
UINT32 WatchdogTimerFlags;
} EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE;
///
/// SBSA Generic Watchdog Timer Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0
#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1
#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT2
///
/// Boot Error Record Table (BERT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 BootErrorRegionLength;
UINT64 BootErrorRegion;
} EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_HEADER;
///
/// BERT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
///
/// Boot Error Region Block Status Definition
///
typedef struct {
UINT32 UncorrectableErrorValid:1;
UINT32 CorrectableErrorValid:1;
UINT32 MultipleUncorrectableErrors:1;
UINT32 MultipleCorrectableErrors:1;
UINT32 ErrorDataEntryCount:10;
UINT32 Reserved:18;
} EFI_ACPI_5_1_ERROR_BLOCK_STATUS;
///
/// Boot Error Region Definition
///
typedef struct {
EFI_ACPI_5_1_ERROR_BLOCK_STATUS BlockStatus;
UINT32 RawDataOffset;
UINT32 RawDataLength;
UINT32 DataLength;
UINT32 ErrorSeverity;
} EFI_ACPI_5_1_BOOT_ERROR_REGION_STRUCTURE;
//
// Boot Error Severity types
//
#define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTABLE 0x00
#define EFI_ACPI_5_1_ERROR_SEVERITY_FATAL 0x01
#define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTED 0x02
#define EFI_ACPI_5_1_ERROR_SEVERITY_NONE 0x03
///
/// Generic Error Data Entry Definition
///
typedef struct {
UINT8 SectionType[16];
UINT32 ErrorSeverity;
UINT16 Revision;
UINT8 ValidationBits;
UINT8 Flags;
UINT32 ErrorDataLength;
UINT8 FruId[16];
UINT8 FruText[20];
} EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
///
/// Generic Error Data Entry Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201
///
/// HEST - Hardware Error Source Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 ErrorSourceCount;
} EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
///
/// HEST Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
//
// Error Source structure types.
//
#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00
#define EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01
#define EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR 0x02
#define EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER 0x06
#define EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER 0x07
#define EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER 0x08
#define EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR 0x09
//
// Error Source structure flags.
//
#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)
#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)
///
/// IA-32 Architecture Machine Check Exception Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT64 GlobalCapabilityInitData;
UINT64 GlobalControlInitData;
UINT8 NumberOfHardwareBanks;
UINT8 Reserved1[7];
} EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
///
/// IA-32 Architecture Machine Check Bank Structure Definition
///
typedef struct {
UINT8 BankNumber;
UINT8 ClearStatusOnInitialization;
UINT8 StatusDataFormat;
UINT8 Reserved0;
UINT32 ControlRegisterMsrAddress;
UINT64 ControlInitData;
UINT32 StatusRegisterMsrAddress;
UINT32 AddressRegisterMsrAddress;
UINT32 MiscRegisterMsrAddress;
} EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
///
/// IA-32 Architecture Machine Check Bank Structure MCA data format
///
#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00
#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01
#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02
//
// Hardware Error Notification types. All other values are reserved
//
#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00
#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01
#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02
#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_SCI 0x03
#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_NMI 0x04
///
/// Hardware Error Notification Configuration Write Enable Structure Definition
///
typedef struct {
UINT16 Type:1;
UINT16 PollInterval:1;
UINT16 SwitchToPollingThresholdValue:1;
UINT16 SwitchToPollingThresholdWindow:1;
UINT16 ErrorThresholdValue:1;
UINT16 ErrorThresholdWindow:1;
UINT16 Reserved:10;
} EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
///
/// Hardware Error Notification Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;
UINT32 PollInterval;
UINT32 Vector;
UINT32 SwitchToPollingThresholdValue;
UINT32 SwitchToPollingThresholdWindow;
UINT32 ErrorThresholdValue;
UINT32 ErrorThresholdWindow;
} EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
///
/// IA-32 Architecture Corrected Machine Check Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
UINT8 NumberOfHardwareBanks;
UINT8 Reserved1[3];
} EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
///
/// IA-32 Architecture NMI Error Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 MaxRawDataLength;
} EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
///
/// PCI Express Root Port AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
UINT32 RootErrorCommand;
} EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
///
/// PCI Express Device AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
} EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
///
/// PCI Express Bridge AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
UINT32 SecondaryUncorrectableErrorMask;
UINT32 SecondaryUncorrectableErrorSeverity;
UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;
} EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
///
/// Generic Hardware Error Source Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT16 RelatedSourceId;
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 MaxRawDataLength;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;
EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
UINT32 ErrorStatusBlockLength;
} EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
///
/// Generic Error Status Definition
///
typedef struct {
EFI_ACPI_5_1_ERROR_BLOCK_STATUS BlockStatus;
UINT32 RawDataOffset;
UINT32 RawDataLength;
UINT32 DataLength;
UINT32 ErrorSeverity;
} EFI_ACPI_5_1_GENERIC_ERROR_STATUS_STRUCTURE;
///
/// ERST - Error Record Serialization Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 SerializationHeaderSize;
UINT8 Reserved0[4];
UINT32 InstructionEntryCount;
} EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
///
/// ERST Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
///
/// ERST Serialization Actions
///
#define EFI_ACPI_5_1_ERST_BEGIN_WRITE_OPERATION 0x00
#define EFI_ACPI_5_1_ERST_BEGIN_READ_OPERATION 0x01
#define EFI_ACPI_5_1_ERST_BEGIN_CLEAR_OPERATION 0x02
#define EFI_ACPI_5_1_ERST_END_OPERATION 0x03
#define EFI_ACPI_5_1_ERST_SET_RECORD_OFFSET 0x04
#define EFI_ACPI_5_1_ERST_EXECUTE_OPERATION 0x05
#define EFI_ACPI_5_1_ERST_CHECK_BUSY_STATUS 0x06
#define EFI_ACPI_5_1_ERST_GET_COMMAND_STATUS 0x07
#define EFI_ACPI_5_1_ERST_GET_RECORD_IDENTIFIER 0x08
#define EFI_ACPI_5_1_ERST_SET_RECORD_IDENTIFIER 0x09
#define EFI_ACPI_5_1_ERST_GET_RECORD_COUNT 0x0A
#define EFI_ACPI_5_1_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B
#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D
#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E
#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F
///
/// ERST Action Command Status
///
#define EFI_ACPI_5_1_ERST_STATUS_SUCCESS 0x00
#define EFI_ACPI_5_1_ERST_STATUS_NOT_ENOUGH_SPACE 0x01
#define EFI_ACPI_5_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02
#define EFI_ACPI_5_1_ERST_STATUS_FAILED 0x03
#define EFI_ACPI_5_1_ERST_STATUS_RECORD_STORE_EMPTY 0x04
#define EFI_ACPI_5_1_ERST_STATUS_RECORD_NOT_FOUND 0x05
///
/// ERST Serialization Instructions
///
#define EFI_ACPI_5_1_ERST_READ_REGISTER 0x00
#define EFI_ACPI_5_1_ERST_READ_REGISTER_VALUE 0x01
#define EFI_ACPI_5_1_ERST_WRITE_REGISTER 0x02
#define EFI_ACPI_5_1_ERST_WRITE_REGISTER_VALUE 0x03
#define EFI_ACPI_5_1_ERST_NOOP 0x04
#define EFI_ACPI_5_1_ERST_LOAD_VAR1 0x05
#define EFI_ACPI_5_1_ERST_LOAD_VAR2 0x06
#define EFI_ACPI_5_1_ERST_STORE_VAR1 0x07
#define EFI_ACPI_5_1_ERST_ADD 0x08
#define EFI_ACPI_5_1_ERST_SUBTRACT 0x09
#define EFI_ACPI_5_1_ERST_ADD_VALUE 0x0A
#define EFI_ACPI_5_1_ERST_SUBTRACT_VALUE 0x0B
#define EFI_ACPI_5_1_ERST_STALL 0x0C
#define EFI_ACPI_5_1_ERST_STALL_WHILE_TRUE 0x0D
#define EFI_ACPI_5_1_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E
#define EFI_ACPI_5_1_ERST_GOTO 0x0F
#define EFI_ACPI_5_1_ERST_SET_SRC_ADDRESS_BASE 0x10
#define EFI_ACPI_5_1_ERST_SET_DST_ADDRESS_BASE 0x11
#define EFI_ACPI_5_1_ERST_MOVE_DATA 0x12
///
/// ERST Instruction Flags
///
#define EFI_ACPI_5_1_ERST_PRESERVE_REGISTER 0x01
///
/// ERST Serialization Instruction Entry
///
typedef struct {
UINT8 SerializationAction;
UINT8 Instruction;
UINT8 Flags;
UINT8 Reserved0;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
UINT64 Value;
UINT64 Mask;
} EFI_ACPI_5_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
///
/// EINJ - Error Injection Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 InjectionHeaderSize;
UINT8 InjectionFlags;
UINT8 Reserved0[3];
UINT32 InjectionEntryCount;
} EFI_ACPI_5_1_ERROR_INJECTION_TABLE_HEADER;
///
/// EINJ Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_REVISION 0x01
///
/// EINJ Error Injection Actions
///
#define EFI_ACPI_5_1_EINJ_BEGIN_INJECTION_OPERATION 0x00
#define EFI_ACPI_5_1_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01
#define EFI_ACPI_5_1_EINJ_SET_ERROR_TYPE 0x02
#define EFI_ACPI_5_1_EINJ_GET_ERROR_TYPE 0x03
#define EFI_ACPI_5_1_EINJ_END_OPERATION 0x04
#define EFI_ACPI_5_1_EINJ_EXECUTE_OPERATION 0x05
#define EFI_ACPI_5_1_EINJ_CHECK_BUSY_STATUS 0x06
#define EFI_ACPI_5_1_EINJ_GET_COMMAND_STATUS 0x07
#define EFI_ACPI_5_1_EINJ_TRIGGER_ERROR 0xFF
///
/// EINJ Action Command Status
///
#define EFI_ACPI_5_1_EINJ_STATUS_SUCCESS 0x00
#define EFI_ACPI_5_1_EINJ_STATUS_UNKNOWN_FAILURE 0x01
#define EFI_ACPI_5_1_EINJ_STATUS_INVALID_ACCESS 0x02
///
/// EINJ Error Type Definition
///
#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)
#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)
#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)
#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)
#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)
#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)
#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)
#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)
#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)
#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)
#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)
#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)
///
/// EINJ Injection Instructions
///
#define EFI_ACPI_5_1_EINJ_READ_REGISTER 0x00
#define EFI_ACPI_5_1_EINJ_READ_REGISTER_VALUE 0x01
#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER 0x02
#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER_VALUE 0x03
#define EFI_ACPI_5_1_EINJ_NOOP 0x04
///
/// EINJ Instruction Flags
///
#define EFI_ACPI_5_1_EINJ_PRESERVE_REGISTER 0x01
///
/// EINJ Injection Instruction Entry
///
typedef struct {
UINT8 InjectionAction;
UINT8 Instruction;
UINT8 Flags;
UINT8 Reserved0;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
UINT64 Value;
UINT64 Mask;
} EFI_ACPI_5_1_EINJ_INJECTION_INSTRUCTION_ENTRY;
///
/// EINJ Trigger Action Table
///
typedef struct {
UINT32 HeaderSize;
UINT32 Revision;
UINT32 TableSize;
UINT32 EntryCount;
} EFI_ACPI_5_1_EINJ_TRIGGER_ACTION_TABLE;
///
/// Platform Communications Channel Table (PCCT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 Flags;
UINT64 Reserved;
} EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
///
/// PCCT Version (as defined in ACPI 5.1 spec.)
///
#define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
///
/// PCCT Global Flags
///
#define EFI_ACPI_5_1_PCCT_FLAGS_SCI_DOORBELL BIT0
//
// PCCT Subspace type
//
#define EFI_ACPI_5_1_PCCT_SUBSPACE_TYPE_GENERIC 0x00
///
/// PCC Subspace Structure Header
///
typedef struct {
UINT8 Type;
UINT8 Length;
} EFI_ACPI_5_1_PCCT_SUBSPACE_HEADER;
///
/// Generic Communications Subspace Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved[6];
UINT64 BaseAddress;
UINT64 AddressLength;
EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
UINT64 DoorbellPreserve;
UINT64 DoorbellWrite;
UINT32 NominalLatency;
UINT32 MaximumPeriodicAccessRate;
UINT16 MinimumRequestTurnaroundTime;
} EFI_ACPI_5_1_PCCT_SUBSPACE_GENERIC;
///
/// Generic Communications Channel Shared Memory Region
///
typedef struct {
UINT8 Command;
UINT8 Reserved:7;
UINT8 GenerateSci:1;
} EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
typedef struct {
UINT8 CommandComplete:1;
UINT8 SciDoorbell:1;
UINT8 Error:1;
- UINT8 PlatformNotification:1;
+ UINT8 PlatformNotification:1;
UINT8 Reserved:4;
UINT8 Reserved1;
} EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
typedef struct {
UINT32 Signature;
EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command;
EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status;
} EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;
//
// Known table signatures
//
///
/// "RSD PTR " Root System Description Pointer
///
-#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
+#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
///
/// "APIC" Multiple APIC Description Table
///
#define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
///
/// "BERT" Boot Error Record Table
///
#define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')
///
/// "BGRT" Boot Graphics Resource Table
///
#define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T')
///
/// "CPEP" Corrected Platform Error Polling Table
///
#define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
///
/// "DSDT" Differentiated System Description Table
///
#define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
///
/// "ECDT" Embedded Controller Boot Resources Table
///
#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
///
/// "EINJ" Error Injection Table
///
#define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')
///
/// "ERST" Error Record Serialization Table
///
#define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')
///
/// "FACP" Fixed ACPI Description Table
///
#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
///
/// "FACS" Firmware ACPI Control Structure
///
#define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
///
/// "FPDT" Firmware Performance Data Table
///
#define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T')
///
/// "GTDT" Generic Timer Description Table
///
#define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T')
///
/// "HEST" Hardware Error Source Table
///
#define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')
///
/// "MPST" Memory Power State Table
///
#define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T')
///
/// "MSCT" Maximum System Characteristics Table
///
#define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')
///
/// "PMTT" Platform Memory Topology Table
///
#define EFI_ACPI_5_1_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T')
///
/// "PSDT" Persistent System Description Table
///
#define EFI_ACPI_5_1_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
///
/// "RASF" ACPI RAS Feature Table
///
#define EFI_ACPI_5_1_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F')
///
/// "RSDT" Root System Description Table
///
#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
///
/// "SBST" Smart Battery Specification Table
///
#define EFI_ACPI_5_1_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
///
/// "SLIT" System Locality Information Table
///
#define EFI_ACPI_5_1_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
///
/// "SRAT" System Resource Affinity Table
///
#define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
///
/// "SSDT" Secondary System Description Table
///
#define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
///
/// "XSDT" Extended System Description Table
///
#define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
///
/// "BOOT" MS Simple Boot Spec
///
#define EFI_ACPI_5_1_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
///
/// "CSRT" MS Core System Resource Table
///
#define EFI_ACPI_5_1_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T')
///
/// "DBG2" MS Debug Port 2 Spec
///
#define EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2')
///
/// "DBGP" MS Debug Port Spec
///
#define EFI_ACPI_5_1_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
///
/// "DMAR" DMA Remapping Table
///
#define EFI_ACPI_5_1_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')
///
/// "DRTM" Dynamic Root of Trust for Measurement Table
///
#define EFI_ACPI_5_1_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M')
///
/// "ETDT" Event Timer Description Table
///
#define EFI_ACPI_5_1_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
///
/// "HPET" IA-PC High Precision Event Timer Table
///
#define EFI_ACPI_5_1_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')
///
/// "iBFT" iSCSI Boot Firmware Table
///
#define EFI_ACPI_5_1_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')
///
/// "IVRS" I/O Virtualization Reporting Structure
///
#define EFI_ACPI_5_1_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')
///
/// "LPIT" Low Power Idle Table
///
#define EFI_ACPI_5_1_IO_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T')
///
/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
///
#define EFI_ACPI_5_1_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
///
/// "MCHI" Management Controller Host Interface Table
///
#define EFI_ACPI_5_1_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')
///
/// "MSDM" MS Data Management Table
///
#define EFI_ACPI_5_1_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M')
///
+/// "PCCT" Platform Communications Channel Table
+///
+#define EFI_ACPI_5_1_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T')
+
+///
/// "SLIC" MS Software Licensing Table Specification
///
#define EFI_ACPI_5_1_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C')
///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
///
#define EFI_ACPI_5_1_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
///
/// "SPMI" Server Platform Management Interface Table
///
#define EFI_ACPI_5_1_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
///
/// "TCPA" Trusted Computing Platform Alliance Capabilities Table
///
#define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
///
/// "TPM2" Trusted Computing Platform 1 Table
///
#define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2')
///
/// "UEFI" UEFI ACPI Data Table
///
#define EFI_ACPI_5_1_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')
///
/// "WAET" Windows ACPI Emulated Devices Table
///
#define EFI_ACPI_5_1_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')
///
/// "WDAT" Watchdog Action Table
///
#define EFI_ACPI_5_1_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')
///
/// "WDRT" Watchdog Resource Table
///
#define EFI_ACPI_5_1_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')
///
/// "WPBT" MS Platform Binary Table
///
#define EFI_ACPI_5_1_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T')
#pragma pack()
#endif
Property changes on: head/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r262185-262527
Merged /projects/fuse2/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r344558-350621,350944,350955
Merged /projects/pf/head/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r263908
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r303985-305318
Merged /projects/elftoolchain/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/bectl/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r336666-337662
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r301868
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r295193
Merged /projects/clang1000-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r295220
Merged /projects/quota64/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r184125-207707
Merged /projects/openssl111/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r339079
Merged /projects/random_number_generator/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r286179-290100
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r233621
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r303380
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/release-pkg/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r274131-298104
Merged /projects/zfsd/head/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r266519,269993
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r283596-287505
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r312125-313435
Merged /projects/building-blocks/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r262258-262612
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r230929-231848
Merged /projects/clang800-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r351317-353352
Merged /projects/clang700-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r326936-327339,327341-327933
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r291227-291228,292618
Merged /projects/clang350-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r277327-280030
Merged /projects/collation/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r286424-290491
Merged /projects/clang370-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r285199-285661
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r289470-289489
Merged /projects/clang390-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r309166-310192
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r281786,281788,281792
Merged /user/ngie/make_check/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r291879-295379
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r298865-299093
Merged /projects/release-embedded/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r221273-222812,222815-223757
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/IndustryStandard/Acpi51.h:r361765
Index: head/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h
===================================================================
--- head/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h (revision 361801)
+++ head/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h (revision 361802)
@@ -1,2346 +1,2392 @@
-/** @file
+/** @file
ACPI 6.0 definitions from the ACPI Specification Revision 6.0 Errata A January, 2016.
- Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.
+ Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
- 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.
+ Copyright (c) 2020, ARM Ltd. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _ACPI_6_0_H_
#define _ACPI_6_0_H_
#include
//
// Ensure proper structure formats
//
#pragma pack(1)
///
/// ACPI 6.0 Generic Address Space definition
///
typedef struct {
UINT8 AddressSpaceId;
UINT8 RegisterBitWidth;
UINT8 RegisterBitOffset;
UINT8 AccessSize;
UINT64 Address;
} EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE;
//
// Generic Address Space Address IDs
//
#define EFI_ACPI_6_0_SYSTEM_MEMORY 0
#define EFI_ACPI_6_0_SYSTEM_IO 1
#define EFI_ACPI_6_0_PCI_CONFIGURATION_SPACE 2
#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER 3
#define EFI_ACPI_6_0_SMBUS 4
#define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL 0x0A
#define EFI_ACPI_6_0_FUNCTIONAL_FIXED_HARDWARE 0x7F
//
// Generic Address Space Access Sizes
//
#define EFI_ACPI_6_0_UNDEFINED 0
#define EFI_ACPI_6_0_BYTE 1
#define EFI_ACPI_6_0_WORD 2
#define EFI_ACPI_6_0_DWORD 3
#define EFI_ACPI_6_0_QWORD 4
//
// ACPI 6.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_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
///
/// RSD_PTR Revision (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 6.0) 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_6_0_COMMON_HEADER;
//
// Root System Description Table
-// No definition needed as it is a common description table header, the same with
+// 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 6.0 spec.)
///
#define EFI_ACPI_6_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
+// 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 6.0 spec.)
///
#define EFI_ACPI_6_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_6_0_GENERIC_ADDRESS_STRUCTURE ResetReg;
UINT8 ResetValue;
UINT16 ArmBootArch;
UINT8 MinorVersion;
UINT64 XFirmwareCtrl;
UINT64 XDsdt;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg;
UINT64 HypervisorVendorIdentity;
} EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE;
///
/// FADT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x06
#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x00
//
// Fixed ACPI Description Table Preferred Power Management Profile
//
#define EFI_ACPI_6_0_PM_PROFILE_UNSPECIFIED 0
#define EFI_ACPI_6_0_PM_PROFILE_DESKTOP 1
#define EFI_ACPI_6_0_PM_PROFILE_MOBILE 2
#define EFI_ACPI_6_0_PM_PROFILE_WORKSTATION 3
#define EFI_ACPI_6_0_PM_PROFILE_ENTERPRISE_SERVER 4
#define EFI_ACPI_6_0_PM_PROFILE_SOHO_SERVER 5
#define EFI_ACPI_6_0_PM_PROFILE_APPLIANCE_PC 6
#define EFI_ACPI_6_0_PM_PROFILE_PERFORMANCE_SERVER 7
#define EFI_ACPI_6_0_PM_PROFILE_TABLET 8
//
// Fixed ACPI Description Table Boot Architecture Flags
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_6_0_LEGACY_DEVICES BIT0
#define EFI_ACPI_6_0_8042 BIT1
#define EFI_ACPI_6_0_VGA_NOT_PRESENT BIT2
#define EFI_ACPI_6_0_MSI_NOT_SUPPORTED BIT3
#define EFI_ACPI_6_0_PCIE_ASPM_CONTROLS BIT4
#define EFI_ACPI_6_0_CMOS_RTC_NOT_PRESENT BIT5
//
// Fixed ACPI Description Table Arm Boot Architecture Flags
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_6_0_ARM_PSCI_COMPLIANT BIT0
#define EFI_ACPI_6_0_ARM_PSCI_USE_HVC BIT1
//
// Fixed ACPI Description Table Fixed Feature Flags
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_6_0_WBINVD BIT0
#define EFI_ACPI_6_0_WBINVD_FLUSH BIT1
#define EFI_ACPI_6_0_PROC_C1 BIT2
#define EFI_ACPI_6_0_P_LVL2_UP BIT3
#define EFI_ACPI_6_0_PWR_BUTTON BIT4
#define EFI_ACPI_6_0_SLP_BUTTON BIT5
#define EFI_ACPI_6_0_FIX_RTC BIT6
#define EFI_ACPI_6_0_RTC_S4 BIT7
#define EFI_ACPI_6_0_TMR_VAL_EXT BIT8
#define EFI_ACPI_6_0_DCK_CAP BIT9
#define EFI_ACPI_6_0_RESET_REG_SUP BIT10
#define EFI_ACPI_6_0_SEALED_CASE BIT11
#define EFI_ACPI_6_0_HEADLESS BIT12
#define EFI_ACPI_6_0_CPU_SW_SLP BIT13
#define EFI_ACPI_6_0_PCI_EXP_WAK BIT14
#define EFI_ACPI_6_0_USE_PLATFORM_CLOCK BIT15
#define EFI_ACPI_6_0_S4_RTC_STS_VALID BIT16
#define EFI_ACPI_6_0_REMOTE_POWER_ON_CAPABLE BIT17
#define EFI_ACPI_6_0_FORCE_APIC_CLUSTER_MODEL BIT18
#define EFI_ACPI_6_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19
#define EFI_ACPI_6_0_HW_REDUCED_ACPI BIT20
#define EFI_ACPI_6_0_LOW_POWER_S0_IDLE_CAPABLE BIT21
///
/// Firmware ACPI Control Structure
///
typedef struct {
UINT32 Signature;
UINT32 Length;
UINT32 HardwareSignature;
UINT32 FirmwareWakingVector;
UINT32 GlobalLock;
UINT32 Flags;
UINT64 XFirmwareWakingVector;
UINT8 Version;
UINT8 Reserved0[3];
UINT32 OspmFlags;
UINT8 Reserved1[24];
} EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
///
/// FACS Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02
///
/// Firmware Control Structure Feature Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_6_0_S4BIOS_F BIT0
#define EFI_ACPI_6_0_64BIT_WAKE_SUPPORTED_F BIT1
///
/// OSPM Enabled Firmware Control Structure Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_6_0_OSPM_64BIT_WAKE_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_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02
#define EFI_ACPI_6_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_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
///
/// MADT Revision (as defined in ACPI 6.0 Errata A spec.)
///
#define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x04
///
/// Multiple APIC Flags
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_6_0_PCAT_COMPAT BIT0
//
// Multiple APIC Description Table APIC structure types
// All other values between 0x0D and 0x7F are reserved and
// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
//
#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC 0x00
#define EFI_ACPI_6_0_IO_APIC 0x01
#define EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE 0x02
#define EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
#define EFI_ACPI_6_0_LOCAL_APIC_NMI 0x04
#define EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
#define EFI_ACPI_6_0_IO_SAPIC 0x06
#define EFI_ACPI_6_0_LOCAL_SAPIC 0x07
#define EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES 0x08
#define EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC 0x09
#define EFI_ACPI_6_0_LOCAL_X2APIC_NMI 0x0A
#define EFI_ACPI_6_0_GIC 0x0B
#define EFI_ACPI_6_0_GICD 0x0C
#define EFI_ACPI_6_0_GIC_MSI_FRAME 0x0D
#define EFI_ACPI_6_0_GICR 0x0E
#define EFI_ACPI_6_0_GIC_ITS 0x0F
//
// APIC Structure Definitions
//
///
/// Processor Local APIC Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 AcpiProcessorUid;
UINT8 ApicId;
UINT32 Flags;
} EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
///
/// Local APIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_6_0_LOCAL_APIC_ENABLED BIT0
///
/// IO APIC Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 IoApicId;
UINT8 Reserved;
UINT32 IoApicAddress;
UINT32 GlobalSystemInterruptBase;
} EFI_ACPI_6_0_IO_APIC_STRUCTURE;
///
/// Interrupt Source Override Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Bus;
UINT8 Source;
UINT32 GlobalSystemInterrupt;
UINT16 Flags;
} EFI_ACPI_6_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_6_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
//
// MPS INTI flags.
// All other bits are reserved and must be set to 0.
//
#define EFI_ACPI_6_0_POLARITY (3 << 0)
#define EFI_ACPI_6_0_TRIGGER_MODE (3 << 2)
///
/// Non-Maskable Interrupt Source Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Flags;
UINT32 GlobalSystemInterrupt;
} EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
///
/// Local APIC NMI Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 AcpiProcessorUid;
UINT16 Flags;
UINT8 LocalApicLint;
} EFI_ACPI_6_0_LOCAL_APIC_NMI_STRUCTURE;
///
/// Local APIC Address Override Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT64 LocalApicAddress;
} EFI_ACPI_6_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_6_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_6_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_6_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
///
/// Platform Interrupt Source Flags.
/// All other bits are reserved and must be set to 0.
///
#define EFI_ACPI_6_0_CPEI_PROCESSOR_OVERRIDE BIT0
///
/// Processor Local x2APIC Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved[2];
UINT32 X2ApicId;
UINT32 Flags;
UINT32 AcpiProcessorUid;
} EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
///
/// Local x2APIC NMI Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Flags;
UINT32 AcpiProcessorUid;
UINT8 LocalX2ApicLint;
UINT8 Reserved[3];
} EFI_ACPI_6_0_LOCAL_X2APIC_NMI_STRUCTURE;
///
/// GIC Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT32 CPUInterfaceNumber;
UINT32 AcpiProcessorUid;
UINT32 Flags;
UINT32 ParkingProtocolVersion;
UINT32 PerformanceInterruptGsiv;
UINT64 ParkedAddress;
UINT64 PhysicalBaseAddress;
UINT64 GICV;
UINT64 GICH;
UINT32 VGICMaintenanceInterrupt;
UINT64 GICRBaseAddress;
UINT64 MPIDR;
UINT8 ProcessorPowerEfficiencyClass;
UINT8 Reserved2[3];
} EFI_ACPI_6_0_GIC_STRUCTURE;
///
/// GIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_6_0_GIC_ENABLED BIT0
#define EFI_ACPI_6_0_PERFORMANCE_INTERRUPT_MODEL BIT1
#define EFI_ACPI_6_0_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2
///
/// GIC Distributor Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved1;
UINT32 GicId;
UINT64 PhysicalBaseAddress;
UINT32 SystemVectorBase;
UINT8 GicVersion;
UINT8 Reserved2[3];
} EFI_ACPI_6_0_GIC_DISTRIBUTOR_STRUCTURE;
///
/// GIC Version
///
#define EFI_ACPI_6_0_GIC_V1 0x01
#define EFI_ACPI_6_0_GIC_V2 0x02
#define EFI_ACPI_6_0_GIC_V3 0x03
#define EFI_ACPI_6_0_GIC_V4 0x04
///
/// GIC MSI Frame Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved1;
UINT32 GicMsiFrameId;
UINT64 PhysicalBaseAddress;
UINT32 Flags;
UINT16 SPICount;
UINT16 SPIBase;
} EFI_ACPI_6_0_GIC_MSI_FRAME_STRUCTURE;
///
/// GIC MSI Frame Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_6_0_SPI_COUNT_BASE_SELECT BIT0
///
/// GICR Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT64 DiscoveryRangeBaseAddress;
UINT32 DiscoveryRangeLength;
} EFI_ACPI_6_0_GICR_STRUCTURE;
///
/// GIC Interrupt Translation Service Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT16 Reserved;
UINT32 GicItsId;
UINT64 PhysicalBaseAddress;
UINT32 Reserved2;
} EFI_ACPI_6_0_GIC_ITS_STRUCTURE;
///
/// Smart Battery Description Table (SBST)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 WarningEnergyLevel;
UINT32 LowEnergyLevel;
UINT32 CriticalEnergyLevel;
} EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE;
///
/// SBST Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_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_6_0_GENERIC_ADDRESS_STRUCTURE EcControl;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE EcData;
UINT32 Uid;
UINT8 GpeBit;
} EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
///
/// ECDT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_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_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
///
/// SRAT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03
//
// SRAT structure types.
// All other values between 0x04 an 0xFF are reserved and
// will be ignored by OSPM.
//
#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00
#define EFI_ACPI_6_0_MEMORY_AFFINITY 0x01
#define EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02
#define EFI_ACPI_6_0_GICC_AFFINITY 0x03
///
/// Processor Local APIC/SAPIC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 ProximityDomain7To0;
UINT8 ApicId;
UINT32 Flags;
UINT8 LocalSapicEid;
UINT8 ProximityDomain31To8[3];
UINT32 ClockDomain;
} EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
///
/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_6_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_6_0_MEMORY_AFFINITY_STRUCTURE;
//
// Memory Flags. All other bits are reserved and must be 0.
//
#define EFI_ACPI_6_0_MEMORY_ENABLED (1 << 0)
#define EFI_ACPI_6_0_MEMORY_HOT_PLUGGABLE (1 << 1)
#define EFI_ACPI_6_0_MEMORY_NONVOLATILE (1 << 2)
///
/// Processor Local x2APIC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved1[2];
UINT32 ProximityDomain;
UINT32 X2ApicId;
UINT32 Flags;
UINT32 ClockDomain;
UINT8 Reserved2[4];
} EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
///
/// GICC Affinity Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT32 ProximityDomain;
UINT32 AcpiProcessorUid;
UINT32 Flags;
UINT32 ClockDomain;
} EFI_ACPI_6_0_GICC_AFFINITY_STRUCTURE;
///
/// GICC Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_6_0_GICC_ENABLED (1 << 0)
///
/// 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_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
///
/// SLIT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01
///
/// Corrected Platform Error Polling Table (CPEP)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 Reserved[8];
} EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
///
/// CPEP Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
//
// CPEP processor structure types.
//
#define EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC 0x00
///
/// Corrected Platform Error Polling Processor Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 ProcessorId;
UINT8 ProcessorEid;
UINT32 PollingInterval;
} EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
///
/// Maximum System Characteristics Table (MSCT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 OffsetProxDomInfo;
UINT32 MaximumNumberOfProximityDomains;
UINT32 MaximumNumberOfClockDomains;
UINT64 MaximumPhysicalAddress;
} EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
///
/// MSCT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
///
/// Maximum Proximity Domain Information Structure Definition
///
typedef struct {
UINT8 Revision;
UINT8 Length;
UINT32 ProximityDomainRangeLow;
UINT32 ProximityDomainRangeHigh;
UINT32 MaximumProcessorCapacity;
UINT64 MaximumMemoryCapacity;
} EFI_ACPI_6_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
///
/// ACPI RAS Feature Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 PlatformCommunicationChannelIdentifier[12];
} EFI_ACPI_6_0_RAS_FEATURE_TABLE;
///
/// RASF Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_RAS_FEATURE_TABLE_REVISION 0x01
///
/// ACPI RASF Platform Communication Channel Shared Memory Region definition.
///
typedef struct {
UINT32 Signature;
UINT16 Command;
UINT16 Status;
UINT16 Version;
UINT8 RASCapabilities[16];
UINT8 SetRASCapabilities[16];
UINT16 NumberOfRASFParameterBlocks;
UINT32 SetRASCapabilitiesStatus;
} EFI_ACPI_6_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
///
/// ACPI RASF PCC command code
///
#define EFI_ACPI_6_0_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01
///
/// ACPI RASF Platform RAS Capabilities
///
#define EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01
#define EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02
///
/// ACPI RASF Parameter Block structure for PATROL_SCRUB
///
typedef struct {
UINT16 Type;
UINT16 Version;
UINT16 Length;
UINT16 PatrolScrubCommand;
UINT64 RequestedAddressRange[2];
UINT64 ActualAddressRange[2];
UINT16 Flags;
UINT8 RequestedSpeed;
} EFI_ACPI_6_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
///
/// ACPI RASF Patrol Scrub command
///
#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01
#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02
#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03
///
/// Memory Power State Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT8 PlatformCommunicationChannelIdentifier;
UINT8 Reserved[3];
// Memory Power Node Structure
// Memory Power State Characteristics
} EFI_ACPI_6_0_MEMORY_POWER_STATUS_TABLE;
///
/// MPST Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01
///
/// MPST Platform Communication Channel Shared Memory Region definition.
///
typedef struct {
UINT32 Signature;
UINT16 Command;
UINT16 Status;
UINT32 MemoryPowerCommandRegister;
UINT32 MemoryPowerStatusRegister;
UINT32 PowerStateId;
UINT32 MemoryPowerNodeId;
UINT64 MemoryEnergyConsumed;
UINT64 ExpectedAveragePowerComsuned;
} EFI_ACPI_6_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
///
/// ACPI MPST PCC command code
///
#define EFI_ACPI_6_0_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03
///
/// ACPI MPST Memory Power command
///
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04
///
/// MPST Memory Power Node Table
///
typedef struct {
UINT8 PowerStateValue;
UINT8 PowerStateInformationIndex;
} EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE;
typedef struct {
UINT8 Flag;
UINT8 Reserved;
UINT16 MemoryPowerNodeId;
UINT32 Length;
UINT64 AddressBase;
UINT64 AddressLength;
UINT32 NumberOfPowerStates;
UINT32 NumberOfPhysicalComponents;
//EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates];
//UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents];
} EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE;
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04
typedef struct {
UINT16 MemoryPowerNodeCount;
UINT8 Reserved[2];
} EFI_ACPI_6_0_MPST_MEMORY_POWER_NODE_TABLE;
///
/// MPST Memory Power State Characteristics Table
///
typedef struct {
UINT8 PowerStateStructureID;
UINT8 Flag;
UINT16 Reserved;
UINT32 AveragePowerConsumedInMPS0;
UINT32 RelativePowerSavingToMPS0;
UINT64 ExitLatencyToMPS0;
} EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02
#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04
typedef struct {
UINT16 MemoryPowerStateCharacteristicsCount;
UINT8 Reserved[2];
} EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
///
/// Memory Topology Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 Reserved;
} EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE;
///
/// PMTT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
///
/// Common Memory Aggregator Device Structure.
///
typedef struct {
UINT8 Type;
UINT8 Reserved;
UINT16 Length;
UINT16 Flags;
UINT16 Reserved1;
} EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// Memory Aggregator Device Type
///
#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x1
#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x3
///
/// Socket Memory Aggregator Device Structure.
///
typedef struct {
EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
UINT16 SocketIdentifier;
UINT16 Reserved;
//EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[];
} EFI_ACPI_6_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// MemoryController Memory Aggregator Device Structure.
///
typedef struct {
EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
UINT32 ReadLatency;
UINT32 WriteLatency;
UINT32 ReadBandwidth;
UINT32 WriteBandwidth;
UINT16 OptimalAccessUnit;
UINT16 OptimalAccessAlignment;
UINT16 Reserved;
UINT16 NumberOfProximityDomains;
//UINT32 ProximityDomain[NumberOfProximityDomains];
//EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[];
} EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// DIMM Memory Aggregator Device Structure.
///
typedef struct {
EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;
UINT16 PhysicalComponentIdentifier;
UINT16 Reserved;
UINT32 SizeOfDimm;
UINT32 SmbiosHandle;
} EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
///
/// Boot Graphics Resource Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
///
/// 2-bytes (16 bit) version ID. This value must be 1.
///
UINT16 Version;
///
/// 1-byte status field indicating current status about the table.
/// Bits[7:1] = Reserved (must be zero)
/// Bit [0] = Valid. A one indicates the boot image graphic is valid.
///
UINT8 Status;
///
/// 1-byte enumerated type field indicating format of the image.
/// 0 = Bitmap
/// 1 - 255 Reserved (for future use)
///
UINT8 ImageType;
///
/// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
/// of the image bitmap.
///
UINT64 ImageAddress;
///
/// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
/// (X, Y) display offset of the top left corner of the boot image.
/// The top left corner of the display is at offset (0, 0).
///
UINT32 ImageOffsetX;
///
/// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
/// (X, Y) display offset of the top left corner of the boot image.
/// The top left corner of the display is at offset (0, 0).
///
UINT32 ImageOffsetY;
} EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE;
///
/// BGRT Revision
///
#define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
///
/// BGRT Version
///
#define EFI_ACPI_6_0_BGRT_VERSION 0x01
///
/// BGRT Status
///
#define EFI_ACPI_6_0_BGRT_STATUS_NOT_DISPLAYED 0x00
#define EFI_ACPI_6_0_BGRT_STATUS_DISPLAYED 0x01
///
/// BGRT Image Type
///
#define EFI_ACPI_6_0_BGRT_IMAGE_TYPE_BMP 0x00
///
/// FPDT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
///
/// FPDT Performance Record Types
///
#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000
#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001
///
/// FPDT Performance Record Revision
///
#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01
#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
///
/// FPDT Runtime Performance Record Types
///
#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000
#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001
#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002
///
/// FPDT Runtime Performance Record Revision
///
#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01
#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01
#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02
///
/// FPDT Performance Record header
///
typedef struct {
UINT16 Type;
UINT8 Length;
UINT8 Revision;
} EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER;
///
/// FPDT Performance Table header
///
typedef struct {
UINT32 Signature;
UINT32 Length;
} EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER;
///
/// FPDT Firmware Basic Boot Performance Pointer Record Structure
///
typedef struct {
EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
UINT32 Reserved;
///
/// 64-bit processor-relative physical address of the Basic Boot Performance Table.
///
UINT64 BootPerformanceTablePointer;
} EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
///
/// FPDT S3 Performance Table Pointer Record Structure
///
typedef struct {
EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
UINT32 Reserved;
///
/// 64-bit processor-relative physical address of the S3 Performance Table.
///
UINT64 S3PerformanceTablePointer;
} EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
///
/// FPDT Firmware Basic Boot Performance Record Structure
///
typedef struct {
EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
UINT32 Reserved;
///
/// Timer value logged at the beginning of firmware image execution.
/// This may not always be zero or near zero.
///
UINT64 ResetEnd;
///
/// Timer value logged just prior to loading the OS boot loader into memory.
/// For non-UEFI compatible boots, this field must be zero.
///
UINT64 OsLoaderLoadImageStart;
///
/// Timer value logged just prior to launching the previously loaded OS boot loader image.
/// For non-UEFI compatible boots, the timer value logged will be just prior
/// to the INT 19h handler invocation.
///
UINT64 OsLoaderStartImageStart;
///
/// Timer value logged at the point when the OS loader calls the
/// ExitBootServices function for UEFI compatible firmware.
/// For non-UEFI compatible boots, this field must be zero.
///
UINT64 ExitBootServicesEntry;
///
- /// Timer value logged at the point just prior towhen the OS loader gaining
+ /// Timer value logged at the point just prior to when the OS loader gaining
/// control back from calls the ExitBootServices function for UEFI compatible firmware.
/// For non-UEFI compatible boots, this field must be zero.
///
UINT64 ExitBootServicesExit;
} EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
///
/// FPDT Firmware Basic Boot Performance Table signature
///
#define EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T')
//
// FPDT Firmware Basic Boot Performance Table
//
typedef struct {
EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER Header;
//
// one or more Performance Records.
//
} EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_TABLE;
///
/// FPDT "S3PT" S3 Performance Table
///
#define EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T')
//
// FPDT Firmware S3 Boot Performance Table
//
typedef struct {
EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER Header;
//
// one or more Performance Records.
//
} EFI_ACPI_6_0_FPDT_FIRMWARE_S3_BOOT_TABLE;
///
/// FPDT Basic S3 Resume Performance Record
///
typedef struct {
EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
///
/// A count of the number of S3 resume cycles since the last full boot sequence.
///
UINT32 ResumeCount;
///
/// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
/// OS waking vector. Only the most recent resume cycle's time is retained.
///
UINT64 FullResume;
///
/// Average timer value of all resume cycles logged since the last full boot
/// sequence, including the most recent resume. Note that the entire log of
/// timer values does not need to be retained in order to calculate this average.
///
UINT64 AverageResume;
} EFI_ACPI_6_0_FPDT_S3_RESUME_RECORD;
///
/// FPDT Basic S3 Suspend Performance Record
///
typedef struct {
EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header;
///
/// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
/// Only the most recent suspend cycle's timer value is retained.
///
UINT64 SuspendStart;
///
/// Timer value recorded at the final firmware write to SLP_TYP (or other
/// mechanism) used to trigger hardware entry to S3.
/// Only the most recent suspend cycle's timer value is retained.
///
UINT64 SuspendEnd;
} EFI_ACPI_6_0_FPDT_S3_SUSPEND_RECORD;
///
/// Firmware Performance Record Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
} EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_RECORD_TABLE;
///
/// Generic Timer Description Table definition.
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT64 CntControlBasePhysicalAddress;
UINT32 Reserved;
UINT32 SecurePL1TimerGSIV;
UINT32 SecurePL1TimerFlags;
UINT32 NonSecurePL1TimerGSIV;
UINT32 NonSecurePL1TimerFlags;
UINT32 VirtualTimerGSIV;
UINT32 VirtualTimerFlags;
UINT32 NonSecurePL2TimerGSIV;
UINT32 NonSecurePL2TimerFlags;
UINT64 CntReadBasePhysicalAddress;
UINT32 PlatformTimerCount;
UINT32 PlatformTimerOffset;
} EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE;
///
/// GTDT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02
///
/// Timer Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT2
///
/// Platform Timer Type
///
#define EFI_ACPI_6_0_GTDT_GT_BLOCK 0
#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG 1
///
/// GT Block Structure
///
typedef struct {
UINT8 Type;
UINT16 Length;
UINT8 Reserved;
UINT64 CntCtlBase;
UINT32 GTBlockTimerCount;
UINT32 GTBlockTimerOffset;
} EFI_ACPI_6_0_GTDT_GT_BLOCK_STRUCTURE;
///
/// GT Block Timer Structure
///
typedef struct {
UINT8 GTFrameNumber;
UINT8 Reserved[3];
UINT64 CntBaseX;
UINT64 CntEL0BaseX;
UINT32 GTxPhysicalTimerGSIV;
UINT32 GTxPhysicalTimerFlags;
UINT32 GTxVirtualTimerGSIV;
UINT32 GTxVirtualTimerFlags;
UINT32 GTxCommonFlags;
} EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_STRUCTURE;
///
/// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0
#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1
///
/// Common Flags Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0
#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT1
///
/// SBSA Generic Watchdog Structure
///
typedef struct {
UINT8 Type;
UINT16 Length;
UINT8 Reserved;
UINT64 RefreshFramePhysicalAddress;
UINT64 WatchdogControlFramePhysicalAddress;
UINT32 WatchdogTimerGSIV;
UINT32 WatchdogTimerFlags;
} EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE;
///
/// SBSA Generic Watchdog Timer Flags. All other bits are reserved and must be 0.
///
#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0
#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1
#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT2
//
// NVDIMM Firmware Interface Table definition.
//
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 Reserved;
} EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE;
//
// NFIT Version (as defined in ACPI 6.0 spec.)
//
#define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION 0x1
//
// Definition for NFIT Table Structure Types
//
#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE 0
#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE_TYPE 1
#define EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE_TYPE 2
#define EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE_TYPE 3
#define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE_TYPE 4
#define EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE_TYPE 5
#define EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE_TYPE 6
//
// Definition for NFIT Structure Header
//
typedef struct {
UINT16 Type;
UINT16 Length;
} EFI_ACPI_6_0_NFIT_STRUCTURE_HEADER;
//
// Definition for System Physical Address Range Structure
//
#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT BIT0
#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID BIT1
#define EFI_ACPI_6_0_NFIT_GUID_VOLATILE_MEMORY_REGION { 0x7305944F, 0xFDDA, 0x44E3, { 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }}
#define EFI_ACPI_6_0_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION { 0x66F0D379, 0xB4F3, 0x4074, { 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB }}
#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_CONTROL_REGION { 0x92F701F6, 0x13B4, 0x405D, { 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }}
#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION { 0x91AF0530, 0x5D86, 0x470E, { 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49 }}
#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE { 0x77AB535A, 0x45FC, 0x624B, { 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E }}
#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE { 0x3D5ABD30, 0x4175, 0x87CE, { 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }}
#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT { 0x5CEA02C9, 0x4D07, 0x69D3, { 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }}
#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT { 0x08018188, 0x42CD, 0xBB48, { 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }}
typedef struct {
UINT16 Type;
UINT16 Length;
UINT16 SPARangeStructureIndex;
UINT16 Flags;
UINT32 Reserved_8;
UINT32 ProximityDomain;
GUID AddressRangeTypeGUID;
UINT64 SystemPhysicalAddressRangeBase;
UINT64 SystemPhysicalAddressRangeLength;
UINT64 AddressRangeMemoryMappingAttribute;
} EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE;
//
// Definition for Memory Device to System Physical Address Range Mapping Structure
//
typedef struct {
UINT32 DIMMNumber:4;
UINT32 MemoryChannelNumber:4;
UINT32 MemoryControllerID:4;
UINT32 SocketID:4;
UINT32 NodeControllerID:12;
UINT32 Reserved_28:4;
} EFI_ACPI_6_0_NFIT_DEVICE_HANDLE;
#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL BIT0
#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_LAST_RESTORE_FAIL BIT1
#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PLATFORM_FLUSH_FAIL BIT2
#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_NOT_ARMED_PRIOR_TO_OSPM_HAND_OFF BIT3
#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF BIT4
#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS BIT5
typedef struct {
UINT16 Type;
UINT16 Length;
EFI_ACPI_6_0_NFIT_DEVICE_HANDLE NFITDeviceHandle;
UINT16 MemoryDevicePhysicalID;
UINT16 MemoryDeviceRegionID;
UINT16 SPARangeStructureIndex ;
UINT16 NVDIMMControlRegionStructureIndex;
UINT64 MemoryDeviceRegionSize;
UINT64 RegionOffset;
UINT64 MemoryDevicePhysicalAddressRegionBase;
UINT16 InterleaveStructureIndex;
UINT16 InterleaveWays;
UINT16 MemoryDeviceStateFlags;
UINT16 Reserved_46;
} EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE;
//
// Definition for Interleave Structure
//
typedef struct {
UINT16 Type;
UINT16 Length;
UINT16 InterleaveStructureIndex;
UINT16 Reserved_6;
UINT32 NumberOfLines;
UINT32 LineSize;
//UINT32 LineOffset[NumberOfLines];
} EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE;
//
// Definition for SMBIOS Management Information Structure
//
typedef struct {
UINT16 Type;
UINT16 Length;
UINT32 Reserved_4;
//UINT8 Data[];
} EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE;
//
// Definition for NVDIMM Control Region Structure
//
#define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED BIT0
typedef struct {
UINT16 Type;
UINT16 Length;
UINT16 NVDIMMControlRegionStructureIndex;
UINT16 VendorID;
UINT16 DeviceID;
UINT16 RevisionID;
UINT16 SubsystemVendorID;
UINT16 SubsystemDeviceID;
UINT16 SubsystemRevisionID;
UINT8 Reserved_18[6];
UINT32 SerialNumber;
UINT16 RegionFormatInterfaceCode;
UINT16 NumberOfBlockControlWindows;
UINT64 SizeOfBlockControlWindow;
UINT64 CommandRegisterOffsetInBlockControlWindow;
UINT64 SizeOfCommandRegisterInBlockControlWindows;
UINT64 StatusRegisterOffsetInBlockControlWindow;
UINT64 SizeOfStatusRegisterInBlockControlWindows;
UINT16 NVDIMMControlRegionFlag;
UINT8 Reserved_74[6];
} EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE;
//
// Definition for NVDIMM Block Data Window Region Structure
//
typedef struct {
UINT16 Type;
UINT16 Length;
UINT16 NVDIMMControlRegionStructureIndex;
UINT16 NumberOfBlockDataWindows;
UINT64 BlockDataWindowStartOffset;
UINT64 SizeOfBlockDataWindow;
UINT64 BlockAccessibleMemoryCapacity;
UINT64 BeginningAddressOfFirstBlockInBlockAccessibleMemory;
} EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE;
//
// Definition for Flush Hint Address Structure
//
typedef struct {
UINT16 Type;
UINT16 Length;
EFI_ACPI_6_0_NFIT_DEVICE_HANDLE NFITDeviceHandle;
UINT16 NumberOfFlushHintAddresses;
UINT8 Reserved_10[6];
//UINT64 FlushHintAddress[NumberOfFlushHintAddresses];
} EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE;
///
/// Boot Error Record Table (BERT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 BootErrorRegionLength;
UINT64 BootErrorRegion;
} EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER;
///
/// BERT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
///
/// Boot Error Region Block Status Definition
///
typedef struct {
UINT32 UncorrectableErrorValid:1;
UINT32 CorrectableErrorValid:1;
UINT32 MultipleUncorrectableErrors:1;
UINT32 MultipleCorrectableErrors:1;
UINT32 ErrorDataEntryCount:10;
UINT32 Reserved:18;
} EFI_ACPI_6_0_ERROR_BLOCK_STATUS;
///
/// Boot Error Region Definition
///
typedef struct {
EFI_ACPI_6_0_ERROR_BLOCK_STATUS BlockStatus;
UINT32 RawDataOffset;
UINT32 RawDataLength;
UINT32 DataLength;
UINT32 ErrorSeverity;
} EFI_ACPI_6_0_BOOT_ERROR_REGION_STRUCTURE;
//
// Boot Error Severity types
//
#define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTABLE 0x00
#define EFI_ACPI_6_0_ERROR_SEVERITY_FATAL 0x01
#define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTED 0x02
#define EFI_ACPI_6_0_ERROR_SEVERITY_NONE 0x03
///
/// Generic Error Data Entry Definition
///
typedef struct {
UINT8 SectionType[16];
UINT32 ErrorSeverity;
UINT16 Revision;
UINT8 ValidationBits;
UINT8 Flags;
UINT32 ErrorDataLength;
UINT8 FruId[16];
UINT8 FruText[20];
} EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
///
/// Generic Error Data Entry Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201
///
/// HEST - Hardware Error Source Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 ErrorSourceCount;
} EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
///
/// HEST Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
//
// Error Source structure types.
//
#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00
#define EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01
#define EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR 0x02
#define EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER 0x06
#define EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER 0x07
#define EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER 0x08
#define EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR 0x09
//
// Error Source structure flags.
//
#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)
#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)
///
/// IA-32 Architecture Machine Check Exception Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT64 GlobalCapabilityInitData;
UINT64 GlobalControlInitData;
UINT8 NumberOfHardwareBanks;
UINT8 Reserved1[7];
} EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
///
/// IA-32 Architecture Machine Check Bank Structure Definition
///
typedef struct {
UINT8 BankNumber;
UINT8 ClearStatusOnInitialization;
UINT8 StatusDataFormat;
UINT8 Reserved0;
UINT32 ControlRegisterMsrAddress;
UINT64 ControlInitData;
UINT32 StatusRegisterMsrAddress;
UINT32 AddressRegisterMsrAddress;
UINT32 MiscRegisterMsrAddress;
} EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
///
/// IA-32 Architecture Machine Check Bank Structure MCA data format
///
#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00
#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01
#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02
//
// Hardware Error Notification types. All other values are reserved
//
#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00
#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01
#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02
#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03
#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04
#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CMCI 0x05
#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_MCE 0x06
#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_GPIO_SIGNAL 0x07
///
/// Hardware Error Notification Configuration Write Enable Structure Definition
///
typedef struct {
UINT16 Type:1;
UINT16 PollInterval:1;
UINT16 SwitchToPollingThresholdValue:1;
UINT16 SwitchToPollingThresholdWindow:1;
UINT16 ErrorThresholdValue:1;
UINT16 ErrorThresholdWindow:1;
UINT16 Reserved:10;
} EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
///
/// Hardware Error Notification Structure Definition
///
typedef struct {
UINT8 Type;
UINT8 Length;
EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;
UINT32 PollInterval;
UINT32 Vector;
UINT32 SwitchToPollingThresholdValue;
UINT32 SwitchToPollingThresholdWindow;
UINT32 ErrorThresholdValue;
UINT32 ErrorThresholdWindow;
} EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
///
/// IA-32 Architecture Corrected Machine Check Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
UINT8 NumberOfHardwareBanks;
UINT8 Reserved1[3];
} EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
///
/// IA-32 Architecture NMI Error Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 MaxRawDataLength;
} EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
///
/// PCI Express Root Port AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
UINT32 RootErrorCommand;
} EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
///
/// PCI Express Device AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
} EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
///
/// PCI Express Bridge AER Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT8 Reserved0[2];
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 Bus;
UINT16 Device;
UINT16 Function;
UINT16 DeviceControl;
UINT8 Reserved1[2];
UINT32 UncorrectableErrorMask;
UINT32 UncorrectableErrorSeverity;
UINT32 CorrectableErrorMask;
UINT32 AdvancedErrorCapabilitiesAndControl;
UINT32 SecondaryUncorrectableErrorMask;
UINT32 SecondaryUncorrectableErrorSeverity;
UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;
} EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
///
/// Generic Hardware Error Source Structure Definition
///
typedef struct {
UINT16 Type;
UINT16 SourceId;
UINT16 RelatedSourceId;
UINT8 Flags;
UINT8 Enabled;
UINT32 NumberOfRecordsToPreAllocate;
UINT32 MaxSectionsPerRecord;
UINT32 MaxRawDataLength;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;
EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;
UINT32 ErrorStatusBlockLength;
} EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
///
/// Generic Error Status Definition
///
typedef struct {
EFI_ACPI_6_0_ERROR_BLOCK_STATUS BlockStatus;
UINT32 RawDataOffset;
UINT32 RawDataLength;
UINT32 DataLength;
UINT32 ErrorSeverity;
} EFI_ACPI_6_0_GENERIC_ERROR_STATUS_STRUCTURE;
///
/// ERST - Error Record Serialization Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 SerializationHeaderSize;
UINT8 Reserved0[4];
UINT32 InstructionEntryCount;
} EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
///
/// ERST Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
///
/// ERST Serialization Actions
///
#define EFI_ACPI_6_0_ERST_BEGIN_WRITE_OPERATION 0x00
#define EFI_ACPI_6_0_ERST_BEGIN_READ_OPERATION 0x01
#define EFI_ACPI_6_0_ERST_BEGIN_CLEAR_OPERATION 0x02
#define EFI_ACPI_6_0_ERST_END_OPERATION 0x03
#define EFI_ACPI_6_0_ERST_SET_RECORD_OFFSET 0x04
#define EFI_ACPI_6_0_ERST_EXECUTE_OPERATION 0x05
#define EFI_ACPI_6_0_ERST_CHECK_BUSY_STATUS 0x06
#define EFI_ACPI_6_0_ERST_GET_COMMAND_STATUS 0x07
#define EFI_ACPI_6_0_ERST_GET_RECORD_IDENTIFIER 0x08
#define EFI_ACPI_6_0_ERST_SET_RECORD_IDENTIFIER 0x09
#define EFI_ACPI_6_0_ERST_GET_RECORD_COUNT 0x0A
#define EFI_ACPI_6_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B
#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D
#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E
#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F
///
/// ERST Action Command Status
///
#define EFI_ACPI_6_0_ERST_STATUS_SUCCESS 0x00
#define EFI_ACPI_6_0_ERST_STATUS_NOT_ENOUGH_SPACE 0x01
#define EFI_ACPI_6_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02
#define EFI_ACPI_6_0_ERST_STATUS_FAILED 0x03
#define EFI_ACPI_6_0_ERST_STATUS_RECORD_STORE_EMPTY 0x04
#define EFI_ACPI_6_0_ERST_STATUS_RECORD_NOT_FOUND 0x05
///
/// ERST Serialization Instructions
///
#define EFI_ACPI_6_0_ERST_READ_REGISTER 0x00
#define EFI_ACPI_6_0_ERST_READ_REGISTER_VALUE 0x01
#define EFI_ACPI_6_0_ERST_WRITE_REGISTER 0x02
#define EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE 0x03
#define EFI_ACPI_6_0_ERST_NOOP 0x04
#define EFI_ACPI_6_0_ERST_LOAD_VAR1 0x05
#define EFI_ACPI_6_0_ERST_LOAD_VAR2 0x06
#define EFI_ACPI_6_0_ERST_STORE_VAR1 0x07
#define EFI_ACPI_6_0_ERST_ADD 0x08
#define EFI_ACPI_6_0_ERST_SUBTRACT 0x09
#define EFI_ACPI_6_0_ERST_ADD_VALUE 0x0A
#define EFI_ACPI_6_0_ERST_SUBTRACT_VALUE 0x0B
#define EFI_ACPI_6_0_ERST_STALL 0x0C
#define EFI_ACPI_6_0_ERST_STALL_WHILE_TRUE 0x0D
#define EFI_ACPI_6_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E
#define EFI_ACPI_6_0_ERST_GOTO 0x0F
#define EFI_ACPI_6_0_ERST_SET_SRC_ADDRESS_BASE 0x10
#define EFI_ACPI_6_0_ERST_SET_DST_ADDRESS_BASE 0x11
#define EFI_ACPI_6_0_ERST_MOVE_DATA 0x12
///
/// ERST Instruction Flags
///
#define EFI_ACPI_6_0_ERST_PRESERVE_REGISTER 0x01
///
/// ERST Serialization Instruction Entry
///
typedef struct {
UINT8 SerializationAction;
UINT8 Instruction;
UINT8 Flags;
UINT8 Reserved0;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
UINT64 Value;
UINT64 Mask;
} EFI_ACPI_6_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
///
/// EINJ - Error Injection Table
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 InjectionHeaderSize;
UINT8 InjectionFlags;
UINT8 Reserved0[3];
UINT32 InjectionEntryCount;
} EFI_ACPI_6_0_ERROR_INJECTION_TABLE_HEADER;
///
/// EINJ Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_REVISION 0x01
///
/// EINJ Error Injection Actions
///
#define EFI_ACPI_6_0_EINJ_BEGIN_INJECTION_OPERATION 0x00
#define EFI_ACPI_6_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01
#define EFI_ACPI_6_0_EINJ_SET_ERROR_TYPE 0x02
#define EFI_ACPI_6_0_EINJ_GET_ERROR_TYPE 0x03
#define EFI_ACPI_6_0_EINJ_END_OPERATION 0x04
#define EFI_ACPI_6_0_EINJ_EXECUTE_OPERATION 0x05
#define EFI_ACPI_6_0_EINJ_CHECK_BUSY_STATUS 0x06
#define EFI_ACPI_6_0_EINJ_GET_COMMAND_STATUS 0x07
#define EFI_ACPI_6_0_EINJ_TRIGGER_ERROR 0xFF
///
/// EINJ Action Command Status
///
#define EFI_ACPI_6_0_EINJ_STATUS_SUCCESS 0x00
#define EFI_ACPI_6_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01
#define EFI_ACPI_6_0_EINJ_STATUS_INVALID_ACCESS 0x02
///
/// EINJ Error Type Definition
///
#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)
#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)
#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)
#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)
#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)
#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)
#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)
#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)
#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)
#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)
#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)
#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)
///
/// EINJ Injection Instructions
///
#define EFI_ACPI_6_0_EINJ_READ_REGISTER 0x00
#define EFI_ACPI_6_0_EINJ_READ_REGISTER_VALUE 0x01
#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER 0x02
#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE 0x03
#define EFI_ACPI_6_0_EINJ_NOOP 0x04
///
/// EINJ Instruction Flags
///
#define EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER 0x01
///
/// EINJ Injection Instruction Entry
///
typedef struct {
UINT8 InjectionAction;
UINT8 Instruction;
UINT8 Flags;
UINT8 Reserved0;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;
UINT64 Value;
UINT64 Mask;
} EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY;
///
/// EINJ Trigger Action Table
///
typedef struct {
UINT32 HeaderSize;
UINT32 Revision;
UINT32 TableSize;
UINT32 EntryCount;
} EFI_ACPI_6_0_EINJ_TRIGGER_ACTION_TABLE;
///
/// Platform Communications Channel Table (PCCT)
///
typedef struct {
EFI_ACPI_DESCRIPTION_HEADER Header;
UINT32 Flags;
UINT64 Reserved;
} EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
///
/// PCCT Version (as defined in ACPI 6.0 spec.)
///
#define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
///
/// PCCT Global Flags
///
#define EFI_ACPI_6_0_PCCT_FLAGS_SCI_DOORBELL BIT0
//
// PCCT Subspace type
//
-#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_GENERIC 0x00
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_GENERIC 0x00
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_1_HW_REDUCED_COMMUNICATIONS 0x01
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_2_HW_REDUCED_COMMUNICATIONS 0x02
///
/// PCC Subspace Structure Header
///
typedef struct {
UINT8 Type;
UINT8 Length;
} EFI_ACPI_6_0_PCCT_SUBSPACE_HEADER;
///
/// Generic Communications Subspace Structure
///
typedef struct {
UINT8 Type;
UINT8 Length;
UINT8 Reserved[6];
UINT64 BaseAddress;
UINT64 AddressLength;
EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
UINT64 DoorbellPreserve;
UINT64 DoorbellWrite;
UINT32 NominalLatency;
UINT32 MaximumPeriodicAccessRate;
UINT16 MinimumRequestTurnaroundTime;
} EFI_ACPI_6_0_PCCT_SUBSPACE_GENERIC;
///
/// Generic Communications Channel Shared Memory Region
///
typedef struct {
UINT8 Command;
UINT8 Reserved:7;
UINT8 GenerateSci:1;
} EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
typedef struct {
UINT8 CommandComplete:1;
UINT8 SciDoorbell:1;
UINT8 Error:1;
- UINT8 PlatformNotification:1;
+ UINT8 PlatformNotification:1;
UINT8 Reserved:4;
UINT8 Reserved1;
} EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
typedef struct {
UINT32 Signature;
EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command;
EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status;
} EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_DOORBELL_INTERRUPT_FLAGS_POLARITY BIT0
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_DOORBELL_INTERRUPT_FLAGS_MODE BIT1
+
+///
+/// Type 1 HW-Reduced Communications Subspace Structure
+///
+typedef struct {
+ UINT8 Type;
+ UINT8 Length;
+ UINT32 DoorbellInterrupt;
+ UINT8 DoorbellInterruptFlags;
+ UINT8 Reserved;
+ UINT64 BaseAddress;
+ UINT64 AddressLength;
+ EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
+ UINT64 DoorbellPreserve;
+ UINT64 DoorbellWrite;
+ UINT32 NominalLatency;
+ UINT32 MaximumPeriodicAccessRate;
+ UINT16 MinimumRequestTurnaroundTime;
+} EFI_ACPI_6_0_PCCT_SUBSPACE_1_HW_REDUCED_COMMUNICATIONS;
+
+///
+/// Type 2 HW-Reduced Communications Subspace Structure
+///
+typedef struct {
+ UINT8 Type;
+ UINT8 Length;
+ UINT32 DoorbellInterrupt;
+ UINT8 DoorbellInterruptFlags;
+ UINT8 Reserved;
+ UINT64 BaseAddress;
+ UINT64 AddressLength;
+ EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;
+ UINT64 DoorbellPreserve;
+ UINT64 DoorbellWrite;
+ UINT32 NominalLatency;
+ UINT32 MaximumPeriodicAccessRate;
+ UINT16 MinimumRequestTurnaroundTime;
+ EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellAckRegister;
+ UINT64 DoorbellAckPreserve;
+ UINT64 DoorbellAckWrite;
+} EFI_ACPI_6_0_PCCT_SUBSPACE_2_HW_REDUCED_COMMUNICATIONS;
+
//
// Known table signatures
//
///
/// "RSD PTR " Root System Description Pointer
///
-#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
+#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
///
/// "APIC" Multiple APIC Description Table
///
#define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
///
/// "BERT" Boot Error Record Table
///
#define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')
///
/// "BGRT" Boot Graphics Resource Table
///
#define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T')
///
/// "CPEP" Corrected Platform Error Polling Table
///
#define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')
///
/// "DSDT" Differentiated System Description Table
///
#define EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
///
/// "ECDT" Embedded Controller Boot Resources Table
///
#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
///
/// "EINJ" Error Injection Table
///
#define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')
///
/// "ERST" Error Record Serialization Table
///
#define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')
///
/// "FACP" Fixed ACPI Description Table
///
#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
///
/// "FACS" Firmware ACPI Control Structure
///
#define EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
///
/// "FPDT" Firmware Performance Data Table
///
#define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T')
///
/// "GTDT" Generic Timer Description Table
///
#define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T')
///
/// "HEST" Hardware Error Source Table
///
#define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')
///
/// "MPST" Memory Power State Table
///
#define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T')
///
/// "MSCT" Maximum System Characteristics Table
///
#define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')
///
/// "NFIT" NVDIMM Firmware Interface Table
///
#define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('N', 'F', 'I', 'T')
///
/// "PMTT" Platform Memory Topology Table
///
#define EFI_ACPI_6_0_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T')
///
/// "PSDT" Persistent System Description Table
///
#define EFI_ACPI_6_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
///
/// "RASF" ACPI RAS Feature Table
///
#define EFI_ACPI_6_0_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F')
///
/// "RSDT" Root System Description Table
///
#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
///
/// "SBST" Smart Battery Specification Table
///
#define EFI_ACPI_6_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
///
/// "SLIT" System Locality Information Table
///
#define EFI_ACPI_6_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
///
/// "SRAT" System Resource Affinity Table
///
#define EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
///
/// "SSDT" Secondary System Description Table
///
#define EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
///
/// "XSDT" Extended System Description Table
///
#define EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
///
/// "BOOT" MS Simple Boot Spec
///
#define EFI_ACPI_6_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
///
/// "CSRT" MS Core System Resource Table
///
#define EFI_ACPI_6_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T')
///
/// "DBG2" MS Debug Port 2 Spec
///
#define EFI_ACPI_6_0_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2')
///
/// "DBGP" MS Debug Port Spec
///
#define EFI_ACPI_6_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
///
/// "DMAR" DMA Remapping Table
///
#define EFI_ACPI_6_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')
///
/// "DRTM" Dynamic Root of Trust for Measurement Table
///
#define EFI_ACPI_6_0_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M')
///
/// "ETDT" Event Timer Description Table
///
#define EFI_ACPI_6_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
///
/// "HPET" IA-PC High Precision Event Timer Table
///
#define EFI_ACPI_6_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')
///
/// "iBFT" iSCSI Boot Firmware Table
///
#define EFI_ACPI_6_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')
///
/// "IORT" I/O Remapping Table
///
#define EFI_ACPI_6_0_IO_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('I', 'O', 'R', 'T')
///
/// "IVRS" I/O Virtualization Reporting Structure
///
#define EFI_ACPI_6_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')
///
/// "LPIT" Low Power Idle Table
///
#define EFI_ACPI_6_0_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T')
///
/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
///
#define EFI_ACPI_6_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
///
/// "MCHI" Management Controller Host Interface Table
///
#define EFI_ACPI_6_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')
///
/// "MSDM" MS Data Management Table
///
#define EFI_ACPI_6_0_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M')
///
+/// "PCCT" Platform Communications Channel Table
+///
+#define EFI_ACPI_6_0_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T')
+
+///
/// "SLIC" MS Software Licensing Table Specification
///
#define EFI_ACPI_6_0_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C')
///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
///
#define EFI_ACPI_6_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
///
/// "SPMI" Server Platform Management Interface Table
///
#define EFI_ACPI_6_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
///
/// "STAO" _STA Override Table
///
#define EFI_ACPI_6_0_STA_OVERRIDE_TABLE_SIGNATURE SIGNATURE_32('S', 'T', 'A', 'O')
///
/// "TCPA" Trusted Computing Platform Alliance Capabilities Table
///
#define EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')
///
/// "TPM2" Trusted Computing Platform 1 Table
///
#define EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2')
///
/// "UEFI" UEFI ACPI Data Table
///
#define EFI_ACPI_6_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')
///
/// "WAET" Windows ACPI Emulated Devices Table
///
#define EFI_ACPI_6_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')
///
/// "WDAT" Watchdog Action Table
///
#define EFI_ACPI_6_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')
///
/// "WDRT" Watchdog Resource Table
///
#define EFI_ACPI_6_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')
///
/// "WPBT" MS Platform Binary Table
///
#define EFI_ACPI_6_0_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T')
///
/// "XENV" Xen Project Table
///
#define EFI_ACPI_6_0_XEN_PROJECT_TABLE_SIGNATURE SIGNATURE_32('X', 'E', 'N', 'V')
#pragma pack()
#endif
Property changes on: head/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r262185-262527
Merged /projects/fuse2/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r344558-350621,350944,350955
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r303985-305318
Merged /projects/pf/head/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r263908
Merged /projects/elftoolchain/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r295193
Merged /projects/bectl/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r336666-337662
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r301868
Merged /projects/clang1000-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r295220
Merged /projects/openssl111/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r339079
Merged /projects/quota64/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r184125-207707
Merged /projects/random_number_generator/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r286179-290100
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r319973-326168
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r303380
Merged /projects/head_mfi/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r233621
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/release-pkg/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r274131-298104
Merged /projects/zfsd/head/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r266519,269993
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r283596-287505
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r312125-313435
Merged /projects/building-blocks/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r230929-231848
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r262258-262612
Merged /projects/clang800-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r351317-353352
Merged /projects/clang700-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r326936-327339,327341-327933
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r291227-291228,292618
Merged /projects/clang350-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r277327-280030
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r289470-289489
Merged /projects/collation/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r286424-290491
Merged /projects/clang370-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r309166-310192
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r298865-299093
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r281786,281788,281792
Merged /projects/release-embedded/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /user/ngie/make_check/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r291879-295379
Merged /projects/largeSMP/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r221273-222812,222815-223757
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/IndustryStandard/Acpi60.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/IndustryStandard/Acpi60.h:r361765
Index: head/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h
===================================================================
--- head/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h (revision 361801)
+++ head/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h (revision 361802)
@@ -1,175 +1,179 @@
/** @file
This file contains AML code definition in the latest ACPI spec.
Copyright (c) 2011, Intel Corporation. All rights reserved.
- 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
+ Copyright (c) 2019, ARM Limited. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
- 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_EXTERNAL_OP 0x15
#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
+
+//
+// FieldElement OpCode
+//
+#define AML_FIELD_RESERVED_OP 0x00
+#define AML_FIELD_ACCESS_OP 0x01
+#define AML_FIELD_CONNECTION_OP 0x02
+#define AML_FIELD_EXT_ACCESS_OP 0x03
#endif
Property changes on: head/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/clang900-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r326936-327339,327341-327933
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r291227-291228,292618
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r277327-280030
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r303899-303984
Merged /projects/clang380-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r285199-285661
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r319973-326168
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/random_number_generator/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r254613-256243
Merged /vendor/edk2/dist/MdePkg/Include/IndustryStandard/AcpiAml.h:r361765
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/openssl111/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r339079
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r344081-345031,345036,345038,345042,345045,345047
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r298865-299093
Merged /projects/elftoolchain/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r260687-261245
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r263908
Merged /projects/ipfw/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r267383-272837
Merged /projects/clang-trunk/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r283596-287505
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r303380
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r312125-313435
Merged /projects/building-blocks/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r262258-262612
Merged /projects/vnet/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r295220
Merged /projects/clang1000-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r356848-358850
Merged /projects/bectl/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r336666-337662
Merged /projects/clang350-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r274961-275126,275128-275133,275135-276476
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r303985-305318
Merged /projects/release-embedded/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r1540-186085
Merged /projects/collation/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r286424-290491
Merged /projects/largeSMP/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r221273-222812,222815-223757
Merged /projects/clang370-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r287506-288928
Merged /projects/quota64/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r184125-207707
Merged /projects/clang390-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r309166-310192
Merged /projects/head_mfi/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r233621
Merged /projects/release-arm64/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r281786,281788,281792
Merged /user/ngie/make_check/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r286179-290100
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r276164,276167,276170-276172
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r295193
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r262185-262527
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r289470-289489
Merged /projects/release-pkg/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r274131-298104
Merged /projects/zfsd/head/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r266519,269993
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r230929-231848
Merged /projects/fuse2/sys/contrib/edk2/Include/IndustryStandard/AcpiAml.h:r344558-350621,350944,350955
Index: head/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h
===================================================================
--- head/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h (revision 361801)
+++ head/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h (revision 361802)
@@ -1,47 +1,56 @@
/** @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.
- 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
+ Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
- 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;
+
+///
+/// BLUETOOTH_LE_ADDRESS
+///
+typedef struct {
+ ///
+ /// 48-bit Bluetooth device address
+ ///
+ UINT8 Address[6];
+ ///
+ /// 0x00 - Public Device Address
+ /// 0x01 - Random Device Address
+ ///
+ UINT8 Type;
+} BLUETOOTH_LE_ADDRESS;
#pragma pack()
#define BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE 248
#define BLUETOOTH_HCI_LINK_KEY_SIZE 16
#endif
Property changes on: head/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r319973-326168
Merged /projects/zfsd/head/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r266519,269993
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/fuse2/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r344558-350621,350944,350955
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r263908
Merged /projects/clang-trunk/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r283596-287505
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r291227-291228,292618
Merged /projects/building-blocks/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/elftoolchain/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r267383-272837
Merged /projects/clang350-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r274961-275126,275128-275133,275135-276476
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r1540-186085
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/clang370-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r287506-288928
Merged /projects/quota64/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r184125-207707
Merged /projects/openssl111/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r339079
Merged /projects/clang391-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r309166-310192
Merged /projects/clang390-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r303250-308866,308868-309123
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r298865-299093
Merged /projects/vnet/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r295220
Merged /projects/clang1000-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r356848-358850
Merged /vendor/edk2/dist/MdePkg/Include/IndustryStandard/Bluetooth.h:r361765
Merged /user/ngie/make_check/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r286179-290100
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/release-embedded/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r303380
Merged /projects/largeSMP/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r221273-222812,222815-223757
Merged /projects/head_mfi/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r233621
Merged /projects/release-pkg/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r274131-298104
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r262258-262612
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r303985-305318
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r262185-262527
Merged /projects/bectl/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r336666-337662
Merged /projects/clang900-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r326936-327339,327341-327933
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r230929-231848
Merged /projects/collation/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r286424-290491
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r295193
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r277327-280030
Merged /projects/release-arm64/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r281786,281788,281792
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r289470-289489
Merged /projects/clang380-import/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r285199-285661
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r276164,276167,276170-276172
Merged /projects/random_number_generator/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r254613-256243
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/IndustryStandard/Bluetooth.h:r303899-303984
Index: head/sys/contrib/edk2/Include/Library/BaseLib.h
===================================================================
--- head/sys/contrib/edk2/Include/Library/BaseLib.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Library/BaseLib.h (revision 361802)
@@ -1,8910 +1,7877 @@
/** @file
Provides string functions, linked list functions, math functions, synchronization
functions, file path functions, and CPU architecture-specific functions.
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
-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.
+Copyright (c) Microsoft Corporation.
+Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __BASE_LIB__
#define __BASE_LIB__
//
// Definitions for architecture-specific types
//
#if defined (MDE_CPU_IA32)
///
/// The IA-32 architecture context buffer used by SetJump() and LongJump().
///
typedef struct {
UINT32 Ebx;
UINT32 Esi;
UINT32 Edi;
UINT32 Ebp;
UINT32 Esp;
UINT32 Eip;
+ UINT32 Ssp;
} BASE_LIBRARY_JUMP_BUFFER;
#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 4
#endif // defined (MDE_CPU_IA32)
-#if defined (MDE_CPU_IPF)
-
-///
-/// The Itanium architecture context buffer used by SetJump() and LongJump().
-///
-typedef struct {
- UINT64 F2[2];
- UINT64 F3[2];
- UINT64 F4[2];
- UINT64 F5[2];
- UINT64 F16[2];
- UINT64 F17[2];
- UINT64 F18[2];
- UINT64 F19[2];
- UINT64 F20[2];
- UINT64 F21[2];
- UINT64 F22[2];
- UINT64 F23[2];
- UINT64 F24[2];
- UINT64 F25[2];
- UINT64 F26[2];
- UINT64 F27[2];
- UINT64 F28[2];
- UINT64 F29[2];
- UINT64 F30[2];
- UINT64 F31[2];
- UINT64 R4;
- UINT64 R5;
- UINT64 R6;
- UINT64 R7;
- UINT64 SP;
- UINT64 BR0;
- UINT64 BR1;
- UINT64 BR2;
- UINT64 BR3;
- UINT64 BR4;
- UINT64 BR5;
- UINT64 InitialUNAT;
- UINT64 AfterSpillUNAT;
- UINT64 PFS;
- UINT64 BSP;
- UINT64 Predicates;
- UINT64 LoopCount;
- UINT64 FPSR;
-} BASE_LIBRARY_JUMP_BUFFER;
-
-#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 0x10
-
-#endif // defined (MDE_CPU_IPF)
-
#if defined (MDE_CPU_X64)
///
/// The x64 architecture context buffer used by SetJump() and LongJump().
///
typedef struct {
UINT64 Rbx;
UINT64 Rsp;
UINT64 Rbp;
UINT64 Rdi;
UINT64 Rsi;
UINT64 R12;
UINT64 R13;
UINT64 R14;
UINT64 R15;
UINT64 Rip;
UINT64 MxCsr;
UINT8 XmmBuffer[160]; ///< XMM6-XMM15.
+ UINT64 Ssp;
} BASE_LIBRARY_JUMP_BUFFER;
#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
#endif // defined (MDE_CPU_X64)
#if defined (MDE_CPU_EBC)
///
/// The EBC context buffer used by SetJump() and LongJump().
///
typedef struct {
UINT64 R0;
UINT64 R1;
UINT64 R2;
UINT64 R3;
UINT64 IP;
} BASE_LIBRARY_JUMP_BUFFER;
#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
#endif // defined (MDE_CPU_EBC)
#if defined (MDE_CPU_ARM)
typedef struct {
UINT32 R3; ///< A copy of R13.
UINT32 R4;
UINT32 R5;
UINT32 R6;
UINT32 R7;
UINT32 R8;
UINT32 R9;
UINT32 R10;
UINT32 R11;
UINT32 R12;
UINT32 R14;
} BASE_LIBRARY_JUMP_BUFFER;
#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 4
#endif // defined (MDE_CPU_ARM)
#if defined (MDE_CPU_AARCH64)
typedef struct {
// GP regs
UINT64 X19;
UINT64 X20;
UINT64 X21;
UINT64 X22;
UINT64 X23;
UINT64 X24;
UINT64 X25;
UINT64 X26;
UINT64 X27;
UINT64 X28;
UINT64 FP;
UINT64 LR;
UINT64 IP0;
// FP regs
UINT64 D8;
UINT64 D9;
UINT64 D10;
UINT64 D11;
UINT64 D12;
UINT64 D13;
UINT64 D14;
UINT64 D15;
} BASE_LIBRARY_JUMP_BUFFER;
#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
#endif // defined (MDE_CPU_AARCH64)
+#if defined (MDE_CPU_RISCV64)
+///
+/// The RISC-V architecture context buffer used by SetJump() and LongJump().
+///
+typedef struct {
+ UINT64 RA;
+ UINT64 S0;
+ UINT64 S1;
+ UINT64 S2;
+ UINT64 S3;
+ UINT64 S4;
+ UINT64 S5;
+ UINT64 S6;
+ UINT64 S7;
+ UINT64 S8;
+ UINT64 S9;
+ UINT64 S10;
+ UINT64 S11;
+ UINT64 SP;
+} BASE_LIBRARY_JUMP_BUFFER;
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
+
+#endif // defined (MDE_CPU_RISCV64)
+
//
// String Services
//
/**
Returns the length of a Null-terminated Unicode string.
This function is similar as strlen_s defined in C11.
If String is not aligned on a 16-bit boundary, then ASSERT().
@param String A pointer to a Null-terminated Unicode string.
@param MaxSize The maximum number of Destination Unicode
char, including terminating null char.
@retval 0 If String is NULL.
@retval MaxSize If there is no null character in the first MaxSize characters of String.
@return The number of characters that percede the terminating null character.
**/
UINTN
EFIAPI
StrnLenS (
IN CONST CHAR16 *String,
IN UINTN MaxSize
);
/**
Returns the size of a Null-terminated Unicode string in bytes, including the
Null terminator.
This function returns the size of the Null-terminated Unicode string
specified by String in bytes, including the Null terminator.
If String is not aligned on a 16-bit boundary, then ASSERT().
@param String A pointer to a Null-terminated Unicode string.
@param MaxSize The maximum number of Destination Unicode
char, including the Null terminator.
@retval 0 If String is NULL.
@retval (sizeof (CHAR16) * (MaxSize + 1))
If there is no Null terminator in the first MaxSize characters of
String.
@return The size of the Null-terminated Unicode string in bytes, including
the Null terminator.
**/
UINTN
EFIAPI
StrnSizeS (
IN CONST CHAR16 *String,
IN UINTN MaxSize
);
/**
Copies the string pointed to by Source (including the terminating null char)
to the array pointed to by Destination.
This function is similar as strcpy_s defined in C11.
If Destination is not aligned on a 16-bit boundary, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
- If an error would be returned, then the function will also ASSERT().
If an error is returned, then the Destination is unmodified.
@param Destination A pointer to a Null-terminated Unicode string.
@param DestMax The maximum number of Destination Unicode
char, including terminating null char.
@param Source A pointer to a Null-terminated Unicode string.
@retval RETURN_SUCCESS String is copied.
@retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than StrLen(Source).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumUnicodeStringLength is not zero,
- and DestMax is greater than
+ and DestMax is greater than
PcdMaximumUnicodeStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
StrCpyS (
OUT CHAR16 *Destination,
IN UINTN DestMax,
IN CONST CHAR16 *Source
);
/**
Copies not more than Length successive char from the string pointed to by
Source to the array pointed to by Destination. If no null char is copied from
Source, then Destination[Length] is always set to null.
This function is similar as strncpy_s defined in C11.
If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
- If an error would be returned, then the function will also ASSERT().
If an error is returned, then the Destination is unmodified.
@param Destination A pointer to a Null-terminated Unicode string.
@param DestMax The maximum number of Destination Unicode
char, including terminating null char.
@param Source A pointer to a Null-terminated Unicode string.
@param Length The maximum number of Unicode characters to copy.
@retval RETURN_SUCCESS String is copied.
- @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
+ @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
MIN(StrLen(Source), Length).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumUnicodeStringLength is not zero,
- and DestMax is greater than
+ and DestMax is greater than
PcdMaximumUnicodeStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
StrnCpyS (
OUT CHAR16 *Destination,
IN UINTN DestMax,
IN CONST CHAR16 *Source,
IN UINTN Length
);
/**
Appends a copy of the string pointed to by Source (including the terminating
null char) to the end of the string pointed to by Destination.
This function is similar as strcat_s defined in C11.
If Destination is not aligned on a 16-bit boundary, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
- If an error would be returned, then the function will also ASSERT().
If an error is returned, then the Destination is unmodified.
@param Destination A pointer to a Null-terminated Unicode string.
@param DestMax The maximum number of Destination Unicode
char, including terminating null char.
@param Source A pointer to a Null-terminated Unicode string.
@retval RETURN_SUCCESS String is appended.
- @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
+ @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
StrLen(Destination).
@retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT
greater than StrLen(Source).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumUnicodeStringLength is not zero,
- and DestMax is greater than
+ and DestMax is greater than
PcdMaximumUnicodeStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
StrCatS (
IN OUT CHAR16 *Destination,
IN UINTN DestMax,
IN CONST CHAR16 *Source
);
/**
Appends not more than Length successive char from the string pointed to by
Source to the end of the string pointed to by Destination. If no null char is
copied from Source, then Destination[StrLen(Destination) + Length] is always
set to null.
This function is similar as strncat_s defined in C11.
If Destination is not aligned on a 16-bit boundary, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
- If an error would be returned, then the function will also ASSERT().
If an error is returned, then the Destination is unmodified.
@param Destination A pointer to a Null-terminated Unicode string.
@param DestMax The maximum number of Destination Unicode
char, including terminating null char.
@param Source A pointer to a Null-terminated Unicode string.
@param Length The maximum number of Unicode characters to copy.
@retval RETURN_SUCCESS String is appended.
@retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
StrLen(Destination).
@retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT
greater than MIN(StrLen(Source), Length).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumUnicodeStringLength is not zero,
- and DestMax is greater than
+ and DestMax is greater than
PcdMaximumUnicodeStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
StrnCatS (
IN OUT CHAR16 *Destination,
IN UINTN DestMax,
IN CONST CHAR16 *Source,
IN UINTN Length
);
/**
Convert a Null-terminated Unicode decimal string to a value of type UINTN.
This function outputs a value of type UINTN by interpreting the contents of
the Unicode string specified by String as a decimal number. The format of the
input Unicode string String is:
[spaces] [decimal digits].
The valid decimal digit character is in the range [0-9]. The function will
ignore the pad space, which includes spaces or tab characters, before
[decimal digits]. The running zero in the beginning of [decimal digits] will
be ignored. Then, the function stops at the first character that is a not a
valid decimal character or a Null-terminator, whichever one comes first.
- If String is NULL, then ASSERT().
- If Data is NULL, then ASSERT().
If String is not aligned in a 16-bit boundary, then ASSERT().
- If PcdMaximumUnicodeStringLength is not zero, and String contains more than
- PcdMaximumUnicodeStringLength Unicode characters, not including the
- Null-terminator, then ASSERT().
If String has no valid decimal digits in the above format, then 0 is stored
at the location pointed to by Data.
If the number represented by String exceeds the range defined by UINTN, then
MAX_UINTN is stored at the location pointed to by Data.
If EndPointer is not NULL, a pointer to the character that stopped the scan
is stored at the location pointed to by EndPointer. If String has no valid
decimal digits right after the optional pad spaces, the value of String is
stored at the location pointed to by EndPointer.
@param String Pointer to a Null-terminated Unicode string.
@param EndPointer Pointer to character that stops scan.
@param Data Pointer to the converted value.
@retval RETURN_SUCCESS Value is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If PcdMaximumUnicodeStringLength is not
zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode
characters, not including the
Null-terminator.
@retval RETURN_UNSUPPORTED If the number represented by String exceeds
the range defined by UINTN.
**/
RETURN_STATUS
EFIAPI
StrDecimalToUintnS (
IN CONST CHAR16 *String,
OUT CHAR16 **EndPointer, OPTIONAL
OUT UINTN *Data
);
/**
Convert a Null-terminated Unicode decimal string to a value of type UINT64.
This function outputs a value of type UINT64 by interpreting the contents of
the Unicode string specified by String as a decimal number. The format of the
input Unicode string String is:
[spaces] [decimal digits].
The valid decimal digit character is in the range [0-9]. The function will
ignore the pad space, which includes spaces or tab characters, before
[decimal digits]. The running zero in the beginning of [decimal digits] will
be ignored. Then, the function stops at the first character that is a not a
valid decimal character or a Null-terminator, whichever one comes first.
- If String is NULL, then ASSERT().
- If Data is NULL, then ASSERT().
If String is not aligned in a 16-bit boundary, then ASSERT().
- If PcdMaximumUnicodeStringLength is not zero, and String contains more than
- PcdMaximumUnicodeStringLength Unicode characters, not including the
- Null-terminator, then ASSERT().
If String has no valid decimal digits in the above format, then 0 is stored
at the location pointed to by Data.
If the number represented by String exceeds the range defined by UINT64, then
MAX_UINT64 is stored at the location pointed to by Data.
If EndPointer is not NULL, a pointer to the character that stopped the scan
is stored at the location pointed to by EndPointer. If String has no valid
decimal digits right after the optional pad spaces, the value of String is
stored at the location pointed to by EndPointer.
@param String Pointer to a Null-terminated Unicode string.
@param EndPointer Pointer to character that stops scan.
@param Data Pointer to the converted value.
@retval RETURN_SUCCESS Value is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If PcdMaximumUnicodeStringLength is not
zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode
characters, not including the
Null-terminator.
@retval RETURN_UNSUPPORTED If the number represented by String exceeds
the range defined by UINT64.
**/
RETURN_STATUS
EFIAPI
StrDecimalToUint64S (
IN CONST CHAR16 *String,
OUT CHAR16 **EndPointer, OPTIONAL
OUT UINT64 *Data
);
/**
Convert a Null-terminated Unicode hexadecimal string to a value of type
UINTN.
This function outputs a value of type UINTN by interpreting the contents of
the Unicode string specified by String as a hexadecimal number. The format of
the input Unicode string String is:
[spaces][zeros][x][hexadecimal digits].
The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix.
If "x" appears in the input string, it must be prefixed with at least one 0.
The function will ignore the pad space, which includes spaces or tab
characters, before [zeros], [x] or [hexadecimal digit]. The running zero
before [x] or [hexadecimal digit] will be ignored. Then, the decoding starts
after [x] or the first valid hexadecimal digit. Then, the function stops at
the first character that is a not a valid hexadecimal character or NULL,
whichever one comes first.
- If String is NULL, then ASSERT().
- If Data is NULL, then ASSERT().
If String is not aligned in a 16-bit boundary, then ASSERT().
- If PcdMaximumUnicodeStringLength is not zero, and String contains more than
- PcdMaximumUnicodeStringLength Unicode characters, not including the
- Null-terminator, then ASSERT().
If String has no valid hexadecimal digits in the above format, then 0 is
stored at the location pointed to by Data.
If the number represented by String exceeds the range defined by UINTN, then
MAX_UINTN is stored at the location pointed to by Data.
If EndPointer is not NULL, a pointer to the character that stopped the scan
is stored at the location pointed to by EndPointer. If String has no valid
hexadecimal digits right after the optional pad spaces, the value of String
is stored at the location pointed to by EndPointer.
@param String Pointer to a Null-terminated Unicode string.
@param EndPointer Pointer to character that stops scan.
@param Data Pointer to the converted value.
@retval RETURN_SUCCESS Value is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If PcdMaximumUnicodeStringLength is not
zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode
characters, not including the
Null-terminator.
@retval RETURN_UNSUPPORTED If the number represented by String exceeds
the range defined by UINTN.
**/
RETURN_STATUS
EFIAPI
StrHexToUintnS (
IN CONST CHAR16 *String,
OUT CHAR16 **EndPointer, OPTIONAL
OUT UINTN *Data
);
/**
Convert a Null-terminated Unicode hexadecimal string to a value of type
UINT64.
This function outputs a value of type UINT64 by interpreting the contents of
the Unicode string specified by String as a hexadecimal number. The format of
the input Unicode string String is:
[spaces][zeros][x][hexadecimal digits].
The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix.
If "x" appears in the input string, it must be prefixed with at least one 0.
The function will ignore the pad space, which includes spaces or tab
characters, before [zeros], [x] or [hexadecimal digit]. The running zero
before [x] or [hexadecimal digit] will be ignored. Then, the decoding starts
after [x] or the first valid hexadecimal digit. Then, the function stops at
the first character that is a not a valid hexadecimal character or NULL,
whichever one comes first.
- If String is NULL, then ASSERT().
- If Data is NULL, then ASSERT().
If String is not aligned in a 16-bit boundary, then ASSERT().
- If PcdMaximumUnicodeStringLength is not zero, and String contains more than
- PcdMaximumUnicodeStringLength Unicode characters, not including the
- Null-terminator, then ASSERT().
If String has no valid hexadecimal digits in the above format, then 0 is
stored at the location pointed to by Data.
If the number represented by String exceeds the range defined by UINT64, then
MAX_UINT64 is stored at the location pointed to by Data.
If EndPointer is not NULL, a pointer to the character that stopped the scan
is stored at the location pointed to by EndPointer. If String has no valid
hexadecimal digits right after the optional pad spaces, the value of String
is stored at the location pointed to by EndPointer.
@param String Pointer to a Null-terminated Unicode string.
@param EndPointer Pointer to character that stops scan.
@param Data Pointer to the converted value.
@retval RETURN_SUCCESS Value is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If PcdMaximumUnicodeStringLength is not
zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode
characters, not including the
Null-terminator.
@retval RETURN_UNSUPPORTED If the number represented by String exceeds
the range defined by UINT64.
**/
RETURN_STATUS
EFIAPI
StrHexToUint64S (
IN CONST CHAR16 *String,
OUT CHAR16 **EndPointer, OPTIONAL
OUT UINT64 *Data
);
/**
Returns the length of a Null-terminated Ascii string.
This function is similar as strlen_s defined in C11.
@param String A pointer to a Null-terminated Ascii string.
@param MaxSize The maximum number of Destination Ascii
char, including terminating null char.
@retval 0 If String is NULL.
@retval MaxSize If there is no null character in the first MaxSize characters of String.
@return The number of characters that percede the terminating null character.
**/
UINTN
EFIAPI
AsciiStrnLenS (
IN CONST CHAR8 *String,
IN UINTN MaxSize
);
/**
Returns the size of a Null-terminated Ascii string in bytes, including the
Null terminator.
This function returns the size of the Null-terminated Ascii string specified
by String in bytes, including the Null terminator.
@param String A pointer to a Null-terminated Ascii string.
@param MaxSize The maximum number of Destination Ascii
char, including the Null terminator.
@retval 0 If String is NULL.
@retval (sizeof (CHAR8) * (MaxSize + 1))
If there is no Null terminator in the first MaxSize characters of
String.
@return The size of the Null-terminated Ascii string in bytes, including the
Null terminator.
**/
UINTN
EFIAPI
AsciiStrnSizeS (
IN CONST CHAR8 *String,
IN UINTN MaxSize
);
/**
Copies the string pointed to by Source (including the terminating null char)
to the array pointed to by Destination.
This function is similar as strcpy_s defined in C11.
- If an error would be returned, then the function will also ASSERT().
-
If an error is returned, then the Destination is unmodified.
@param Destination A pointer to a Null-terminated Ascii string.
@param DestMax The maximum number of Destination Ascii
char, including terminating null char.
@param Source A pointer to a Null-terminated Ascii string.
@retval RETURN_SUCCESS String is copied.
@retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than StrLen(Source).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumAsciiStringLength is not zero,
- and DestMax is greater than
+ and DestMax is greater than
PcdMaximumAsciiStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
AsciiStrCpyS (
OUT CHAR8 *Destination,
IN UINTN DestMax,
IN CONST CHAR8 *Source
);
/**
Copies not more than Length successive char from the string pointed to by
Source to the array pointed to by Destination. If no null char is copied from
Source, then Destination[Length] is always set to null.
This function is similar as strncpy_s defined in C11.
- If an error would be returned, then the function will also ASSERT().
-
If an error is returned, then the Destination is unmodified.
@param Destination A pointer to a Null-terminated Ascii string.
@param DestMax The maximum number of Destination Ascii
char, including terminating null char.
@param Source A pointer to a Null-terminated Ascii string.
@param Length The maximum number of Ascii characters to copy.
@retval RETURN_SUCCESS String is copied.
- @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
+ @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
MIN(StrLen(Source), Length).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumAsciiStringLength is not zero,
- and DestMax is greater than
+ and DestMax is greater than
PcdMaximumAsciiStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
AsciiStrnCpyS (
OUT CHAR8 *Destination,
IN UINTN DestMax,
IN CONST CHAR8 *Source,
IN UINTN Length
);
/**
Appends a copy of the string pointed to by Source (including the terminating
null char) to the end of the string pointed to by Destination.
This function is similar as strcat_s defined in C11.
- If an error would be returned, then the function will also ASSERT().
-
If an error is returned, then the Destination is unmodified.
@param Destination A pointer to a Null-terminated Ascii string.
@param DestMax The maximum number of Destination Ascii
char, including terminating null char.
@param Source A pointer to a Null-terminated Ascii string.
@retval RETURN_SUCCESS String is appended.
- @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
+ @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
StrLen(Destination).
@retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT
greater than StrLen(Source).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumAsciiStringLength is not zero,
- and DestMax is greater than
+ and DestMax is greater than
PcdMaximumAsciiStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
AsciiStrCatS (
IN OUT CHAR8 *Destination,
IN UINTN DestMax,
IN CONST CHAR8 *Source
);
/**
Appends not more than Length successive char from the string pointed to by
Source to the end of the string pointed to by Destination. If no null char is
copied from Source, then Destination[StrLen(Destination) + Length] is always
set to null.
This function is similar as strncat_s defined in C11.
- If an error would be returned, then the function will also ASSERT().
-
If an error is returned, then the Destination is unmodified.
@param Destination A pointer to a Null-terminated Ascii string.
@param DestMax The maximum number of Destination Ascii
char, including terminating null char.
@param Source A pointer to a Null-terminated Ascii string.
@param Length The maximum number of Ascii characters to copy.
@retval RETURN_SUCCESS String is appended.
@retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
StrLen(Destination).
@retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is NOT
greater than MIN(StrLen(Source), Length).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumAsciiStringLength is not zero,
- and DestMax is greater than
+ and DestMax is greater than
PcdMaximumAsciiStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
AsciiStrnCatS (
IN OUT CHAR8 *Destination,
IN UINTN DestMax,
IN CONST CHAR8 *Source,
IN UINTN Length
);
/**
Convert a Null-terminated Ascii decimal string to a value of type UINTN.
This function outputs a value of type UINTN by interpreting the contents of
the Ascii string specified by String as a decimal number. The format of the
input Ascii string String is:
[spaces] [decimal digits].
The valid decimal digit character is in the range [0-9]. The function will
ignore the pad space, which includes spaces or tab characters, before
[decimal digits]. The running zero in the beginning of [decimal digits] will
be ignored. Then, the function stops at the first character that is a not a
valid decimal character or a Null-terminator, whichever one comes first.
- If String is NULL, then ASSERT().
- If Data is NULL, then ASSERT().
- If PcdMaximumAsciiStringLength is not zero, and String contains more than
- PcdMaximumAsciiStringLength Ascii characters, not including the
- Null-terminator, then ASSERT().
-
If String has no valid decimal digits in the above format, then 0 is stored
at the location pointed to by Data.
If the number represented by String exceeds the range defined by UINTN, then
MAX_UINTN is stored at the location pointed to by Data.
If EndPointer is not NULL, a pointer to the character that stopped the scan
is stored at the location pointed to by EndPointer. If String has no valid
decimal digits right after the optional pad spaces, the value of String is
stored at the location pointed to by EndPointer.
@param String Pointer to a Null-terminated Ascii string.
@param EndPointer Pointer to character that stops scan.
@param Data Pointer to the converted value.
@retval RETURN_SUCCESS Value is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If PcdMaximumAsciiStringLength is not zero,
and String contains more than
PcdMaximumAsciiStringLength Ascii
characters, not including the
Null-terminator.
@retval RETURN_UNSUPPORTED If the number represented by String exceeds
the range defined by UINTN.
**/
RETURN_STATUS
EFIAPI
AsciiStrDecimalToUintnS (
IN CONST CHAR8 *String,
OUT CHAR8 **EndPointer, OPTIONAL
OUT UINTN *Data
);
/**
Convert a Null-terminated Ascii decimal string to a value of type UINT64.
This function outputs a value of type UINT64 by interpreting the contents of
the Ascii string specified by String as a decimal number. The format of the
input Ascii string String is:
[spaces] [decimal digits].
The valid decimal digit character is in the range [0-9]. The function will
ignore the pad space, which includes spaces or tab characters, before
[decimal digits]. The running zero in the beginning of [decimal digits] will
be ignored. Then, the function stops at the first character that is a not a
valid decimal character or a Null-terminator, whichever one comes first.
- If String is NULL, then ASSERT().
- If Data is NULL, then ASSERT().
- If PcdMaximumAsciiStringLength is not zero, and String contains more than
- PcdMaximumAsciiStringLength Ascii characters, not including the
- Null-terminator, then ASSERT().
-
If String has no valid decimal digits in the above format, then 0 is stored
at the location pointed to by Data.
If the number represented by String exceeds the range defined by UINT64, then
MAX_UINT64 is stored at the location pointed to by Data.
If EndPointer is not NULL, a pointer to the character that stopped the scan
is stored at the location pointed to by EndPointer. If String has no valid
decimal digits right after the optional pad spaces, the value of String is
stored at the location pointed to by EndPointer.
@param String Pointer to a Null-terminated Ascii string.
@param EndPointer Pointer to character that stops scan.
@param Data Pointer to the converted value.
@retval RETURN_SUCCESS Value is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If PcdMaximumAsciiStringLength is not zero,
and String contains more than
PcdMaximumAsciiStringLength Ascii
characters, not including the
Null-terminator.
@retval RETURN_UNSUPPORTED If the number represented by String exceeds
the range defined by UINT64.
**/
RETURN_STATUS
EFIAPI
AsciiStrDecimalToUint64S (
IN CONST CHAR8 *String,
OUT CHAR8 **EndPointer, OPTIONAL
OUT UINT64 *Data
);
/**
Convert a Null-terminated Ascii hexadecimal string to a value of type UINTN.
This function outputs a value of type UINTN by interpreting the contents of
the Ascii string specified by String as a hexadecimal number. The format of
the input Ascii string String is:
[spaces][zeros][x][hexadecimal digits].
The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. If
"x" appears in the input string, it must be prefixed with at least one 0. The
function will ignore the pad space, which includes spaces or tab characters,
before [zeros], [x] or [hexadecimal digits]. The running zero before [x] or
[hexadecimal digits] will be ignored. Then, the decoding starts after [x] or
the first valid hexadecimal digit. Then, the function stops at the first
character that is a not a valid hexadecimal character or Null-terminator,
whichever on comes first.
- If String is NULL, then ASSERT().
- If Data is NULL, then ASSERT().
- If PcdMaximumAsciiStringLength is not zero, and String contains more than
- PcdMaximumAsciiStringLength Ascii characters, not including the
- Null-terminator, then ASSERT().
-
If String has no valid hexadecimal digits in the above format, then 0 is
stored at the location pointed to by Data.
If the number represented by String exceeds the range defined by UINTN, then
MAX_UINTN is stored at the location pointed to by Data.
If EndPointer is not NULL, a pointer to the character that stopped the scan
is stored at the location pointed to by EndPointer. If String has no valid
hexadecimal digits right after the optional pad spaces, the value of String
is stored at the location pointed to by EndPointer.
@param String Pointer to a Null-terminated Ascii string.
@param EndPointer Pointer to character that stops scan.
@param Data Pointer to the converted value.
@retval RETURN_SUCCESS Value is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If PcdMaximumAsciiStringLength is not zero,
and String contains more than
PcdMaximumAsciiStringLength Ascii
characters, not including the
Null-terminator.
@retval RETURN_UNSUPPORTED If the number represented by String exceeds
the range defined by UINTN.
**/
RETURN_STATUS
EFIAPI
AsciiStrHexToUintnS (
IN CONST CHAR8 *String,
OUT CHAR8 **EndPointer, OPTIONAL
OUT UINTN *Data
);
/**
Convert a Null-terminated Ascii hexadecimal string to a value of type UINT64.
This function outputs a value of type UINT64 by interpreting the contents of
the Ascii string specified by String as a hexadecimal number. The format of
the input Ascii string String is:
[spaces][zeros][x][hexadecimal digits].
The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. If
"x" appears in the input string, it must be prefixed with at least one 0. The
function will ignore the pad space, which includes spaces or tab characters,
before [zeros], [x] or [hexadecimal digits]. The running zero before [x] or
[hexadecimal digits] will be ignored. Then, the decoding starts after [x] or
the first valid hexadecimal digit. Then, the function stops at the first
character that is a not a valid hexadecimal character or Null-terminator,
whichever on comes first.
- If String is NULL, then ASSERT().
- If Data is NULL, then ASSERT().
- If PcdMaximumAsciiStringLength is not zero, and String contains more than
- PcdMaximumAsciiStringLength Ascii characters, not including the
- Null-terminator, then ASSERT().
-
If String has no valid hexadecimal digits in the above format, then 0 is
stored at the location pointed to by Data.
If the number represented by String exceeds the range defined by UINT64, then
MAX_UINT64 is stored at the location pointed to by Data.
If EndPointer is not NULL, a pointer to the character that stopped the scan
is stored at the location pointed to by EndPointer. If String has no valid
hexadecimal digits right after the optional pad spaces, the value of String
is stored at the location pointed to by EndPointer.
@param String Pointer to a Null-terminated Ascii string.
@param EndPointer Pointer to character that stops scan.
@param Data Pointer to the converted value.
@retval RETURN_SUCCESS Value is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If PcdMaximumAsciiStringLength is not zero,
and String contains more than
PcdMaximumAsciiStringLength Ascii
characters, not including the
Null-terminator.
@retval RETURN_UNSUPPORTED If the number represented by String exceeds
the range defined by UINT64.
**/
RETURN_STATUS
EFIAPI
AsciiStrHexToUint64S (
IN CONST CHAR8 *String,
OUT CHAR8 **EndPointer, OPTIONAL
OUT UINT64 *Data
);
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
[ATTENTION] This function is deprecated for security reason.
Copies one Null-terminated Unicode string to another Null-terminated Unicode
string and returns the new Unicode string.
This function copies the contents of the Unicode string Source to the Unicode
string Destination, and returns Destination. If Source and Destination
overlap, then the results are undefined.
If Destination is NULL, then ASSERT().
If Destination is not aligned on a 16-bit boundary, then ASSERT().
If Source is NULL, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT().
@param Destination The pointer to a Null-terminated Unicode string.
@param Source The pointer to a Null-terminated Unicode string.
@return Destination.
**/
CHAR16 *
EFIAPI
StrCpy (
OUT CHAR16 *Destination,
IN CONST CHAR16 *Source
);
/**
[ATTENTION] This function is deprecated for security reason.
- Copies up to a specified length from one Null-terminated Unicode string to
+ Copies up to a specified length from one Null-terminated Unicode string to
another Null-terminated Unicode string and returns the new Unicode string.
This function copies the contents of the Unicode string Source to the Unicode
string Destination, and returns Destination. At most, Length Unicode
characters are copied from Source to Destination. If Length is 0, then
Destination is returned unmodified. If Length is greater that the number of
Unicode characters in Source, then Destination is padded with Null Unicode
characters. If Source and Destination overlap, then the results are
undefined.
If Length > 0 and Destination is NULL, then ASSERT().
If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
If Length > 0 and Source is NULL, then ASSERT().
If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
If Source and Destination overlap, then ASSERT().
- If PcdMaximumUnicodeStringLength is not zero, and Length is greater than
+ If PcdMaximumUnicodeStringLength is not zero, and Length is greater than
PcdMaximumUnicodeStringLength, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,
then ASSERT().
@param Destination The pointer to a Null-terminated Unicode string.
@param Source The pointer to a Null-terminated Unicode string.
@param Length The maximum number of Unicode characters to copy.
@return Destination.
**/
CHAR16 *
EFIAPI
StrnCpy (
OUT CHAR16 *Destination,
IN CONST CHAR16 *Source,
IN UINTN Length
);
-#endif
+#endif // !defined (DISABLE_NEW_DEPRECATED_INTERFACES)
/**
Returns the length of a Null-terminated Unicode string.
This function returns the number of Unicode characters in the Null-terminated
Unicode string specified by String.
If String is NULL, then ASSERT().
If String is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT().
@param String Pointer to a Null-terminated Unicode string.
@return The length of String.
**/
UINTN
EFIAPI
StrLen (
IN CONST CHAR16 *String
);
/**
Returns the size of a Null-terminated Unicode string in bytes, including the
Null terminator.
- This function returns the size, in bytes, of the Null-terminated Unicode string
+ This function returns the size, in bytes, of the Null-terminated Unicode string
specified by String.
If String is NULL, then ASSERT().
If String is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT().
@param String The pointer to a Null-terminated Unicode string.
@return The size of String.
**/
UINTN
EFIAPI
StrSize (
IN CONST CHAR16 *String
);
/**
Compares two Null-terminated Unicode strings, and returns the difference
between the first mismatched Unicode characters.
This function compares the Null-terminated Unicode string FirstString to the
Null-terminated Unicode string SecondString. If FirstString is identical to
SecondString, then 0 is returned. Otherwise, the value returned is the first
mismatched Unicode character in SecondString subtracted from the first
mismatched Unicode character in FirstString.
If FirstString is NULL, then ASSERT().
If FirstString is not aligned on a 16-bit boundary, then ASSERT().
If SecondString is NULL, then ASSERT().
If SecondString is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and SecondString contains more
than PcdMaximumUnicodeStringLength Unicode characters, not including the
Null-terminator, then ASSERT().
@param FirstString The pointer to a Null-terminated Unicode string.
@param SecondString The pointer to a Null-terminated Unicode string.
@retval 0 FirstString is identical to SecondString.
@return others FirstString is not identical to SecondString.
**/
INTN
EFIAPI
StrCmp (
IN CONST CHAR16 *FirstString,
IN CONST CHAR16 *SecondString
);
/**
Compares up to a specified length the contents of two Null-terminated Unicode strings,
and returns the difference between the first mismatched Unicode characters.
-
+
This function compares the Null-terminated Unicode string FirstString to the
Null-terminated Unicode string SecondString. At most, Length Unicode
characters will be compared. If Length is 0, then 0 is returned. If
FirstString is identical to SecondString, then 0 is returned. Otherwise, the
value returned is the first mismatched Unicode character in SecondString
subtracted from the first mismatched Unicode character in FirstString.
If Length > 0 and FirstString is NULL, then ASSERT().
If Length > 0 and FirstString is not aligned on a 16-bit boundary, then ASSERT().
If Length > 0 and SecondString is NULL, then ASSERT().
If Length > 0 and SecondString is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Length is greater than
PcdMaximumUnicodeStringLength, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more than
PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,
then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and SecondString contains more than
PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,
then ASSERT().
@param FirstString The pointer to a Null-terminated Unicode string.
@param SecondString The pointer to a Null-terminated Unicode string.
@param Length The maximum number of Unicode characters to compare.
@retval 0 FirstString is identical to SecondString.
@return others FirstString is not identical to SecondString.
**/
INTN
EFIAPI
StrnCmp (
IN CONST CHAR16 *FirstString,
IN CONST CHAR16 *SecondString,
IN UINTN Length
);
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
[ATTENTION] This function is deprecated for security reason.
Concatenates one Null-terminated Unicode string to another Null-terminated
Unicode string, and returns the concatenated Unicode string.
This function concatenates two Null-terminated Unicode strings. The contents
of Null-terminated Unicode string Source are concatenated to the end of
Null-terminated Unicode string Destination. The Null-terminated concatenated
Unicode String is returned. If Source and Destination overlap, then the
results are undefined.
If Destination is NULL, then ASSERT().
If Destination is not aligned on a 16-bit boundary, then ASSERT().
If Source is NULL, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
than PcdMaximumUnicodeStringLength Unicode characters, not including the
Null-terminator, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters, not including the
Null-terminator, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and concatenating Destination
and Source results in a Unicode string with more than
PcdMaximumUnicodeStringLength Unicode characters, not including the
Null-terminator, then ASSERT().
@param Destination The pointer to a Null-terminated Unicode string.
@param Source The pointer to a Null-terminated Unicode string.
@return Destination.
**/
CHAR16 *
EFIAPI
StrCat (
IN OUT CHAR16 *Destination,
IN CONST CHAR16 *Source
);
/**
[ATTENTION] This function is deprecated for security reason.
- Concatenates up to a specified length one Null-terminated Unicode to the end
- of another Null-terminated Unicode string, and returns the concatenated
+ Concatenates up to a specified length one Null-terminated Unicode to the end
+ of another Null-terminated Unicode string, and returns the concatenated
Unicode string.
This function concatenates two Null-terminated Unicode strings. The contents
of Null-terminated Unicode string Source are concatenated to the end of
Null-terminated Unicode string Destination, and Destination is returned. At
most, Length Unicode characters are concatenated from Source to the end of
Destination, and Destination is always Null-terminated. If Length is 0, then
Destination is returned unmodified. If Source and Destination overlap, then
the results are undefined.
If Destination is NULL, then ASSERT().
If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
If Length > 0 and Source is NULL, then ASSERT().
If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
If Source and Destination overlap, then ASSERT().
- If PcdMaximumUnicodeStringLength is not zero, and Length is greater than
+ If PcdMaximumUnicodeStringLength is not zero, and Length is greater than
PcdMaximumUnicodeStringLength, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
than PcdMaximumUnicodeStringLength Unicode characters, not including the
Null-terminator, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters, not including the
Null-terminator, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and concatenating Destination
and Source results in a Unicode string with more than PcdMaximumUnicodeStringLength
Unicode characters, not including the Null-terminator, then ASSERT().
@param Destination The pointer to a Null-terminated Unicode string.
@param Source The pointer to a Null-terminated Unicode string.
@param Length The maximum number of Unicode characters to concatenate from
Source.
@return Destination.
**/
CHAR16 *
EFIAPI
StrnCat (
IN OUT CHAR16 *Destination,
IN CONST CHAR16 *Source,
IN UINTN Length
);
-#endif
+#endif // !defined (DISABLE_NEW_DEPRECATED_INTERFACES)
/**
Returns the first occurrence of a Null-terminated Unicode sub-string
in a Null-terminated Unicode string.
This function scans the contents of the Null-terminated Unicode string
specified by String and returns the first occurrence of SearchString.
If SearchString is not found in String, then NULL is returned. If
the length of SearchString is zero, then String is returned.
If String is NULL, then ASSERT().
If String is not aligned on a 16-bit boundary, then ASSERT().
If SearchString is NULL, then ASSERT().
If SearchString is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and SearchString
or String contains more than PcdMaximumUnicodeStringLength Unicode
characters, not including the Null-terminator, then ASSERT().
@param String The pointer to a Null-terminated Unicode string.
@param SearchString The pointer to a Null-terminated Unicode string to search for.
@retval NULL If the SearchString does not appear in String.
@return others If there is a match.
**/
CHAR16 *
EFIAPI
StrStr (
IN CONST CHAR16 *String,
IN CONST CHAR16 *SearchString
);
/**
Convert a Null-terminated Unicode decimal string to a value of
type UINTN.
This function returns a value of type UINTN by interpreting the contents
of the Unicode string specified by String as a decimal number. The format
of the input Unicode string String is:
[spaces] [decimal digits].
The valid decimal digit character is in the range [0-9]. The
function will ignore the pad space, which includes spaces or
tab characters, before [decimal digits]. The running zero in the
beginning of [decimal digits] will be ignored. Then, the function
stops at the first character that is a not a valid decimal character
or a Null-terminator, whichever one comes first.
If String is NULL, then ASSERT().
If String is not aligned in a 16-bit boundary, then ASSERT().
If String has only pad spaces, then 0 is returned.
If String has no pad spaces or valid decimal digits,
then 0 is returned.
If the number represented by String overflows according
to the range defined by UINTN, then MAX_UINTN is returned.
If PcdMaximumUnicodeStringLength is not zero, and String contains
more than PcdMaximumUnicodeStringLength Unicode characters not including
the Null-terminator, then ASSERT().
@param String The pointer to a Null-terminated Unicode string.
@retval Value translated from String.
**/
UINTN
EFIAPI
StrDecimalToUintn (
IN CONST CHAR16 *String
);
/**
Convert a Null-terminated Unicode decimal string to a value of
type UINT64.
This function returns a value of type UINT64 by interpreting the contents
of the Unicode string specified by String as a decimal number. The format
of the input Unicode string String is:
[spaces] [decimal digits].
The valid decimal digit character is in the range [0-9]. The
function will ignore the pad space, which includes spaces or
tab characters, before [decimal digits]. The running zero in the
beginning of [decimal digits] will be ignored. Then, the function
stops at the first character that is a not a valid decimal character
or a Null-terminator, whichever one comes first.
If String is NULL, then ASSERT().
If String is not aligned in a 16-bit boundary, then ASSERT().
If String has only pad spaces, then 0 is returned.
If String has no pad spaces or valid decimal digits,
then 0 is returned.
If the number represented by String overflows according
to the range defined by UINT64, then MAX_UINT64 is returned.
If PcdMaximumUnicodeStringLength is not zero, and String contains
more than PcdMaximumUnicodeStringLength Unicode characters not including
the Null-terminator, then ASSERT().
@param String The pointer to a Null-terminated Unicode string.
@retval Value translated from String.
**/
UINT64
EFIAPI
StrDecimalToUint64 (
IN CONST CHAR16 *String
);
-
+
/**
Convert a Null-terminated Unicode hexadecimal string to a value of type UINTN.
This function returns a value of type UINTN by interpreting the contents
of the Unicode string specified by String as a hexadecimal number.
The format of the input Unicode string String is:
[spaces][zeros][x][hexadecimal digits].
The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix.
If "x" appears in the input string, it must be prefixed with at least one 0.
The function will ignore the pad space, which includes spaces or tab characters,
before [zeros], [x] or [hexadecimal digit]. The running zero before [x] or
[hexadecimal digit] will be ignored. Then, the decoding starts after [x] or the
- first valid hexadecimal digit. Then, the function stops at the first character
+ first valid hexadecimal digit. Then, the function stops at the first character
that is a not a valid hexadecimal character or NULL, whichever one comes first.
If String is NULL, then ASSERT().
If String is not aligned in a 16-bit boundary, then ASSERT().
If String has only pad spaces, then zero is returned.
If String has no leading pad spaces, leading zeros or valid hexadecimal digits,
then zero is returned.
If the number represented by String overflows according to the range defined by
UINTN, then MAX_UINTN is returned.
If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator,
then ASSERT().
@param String The pointer to a Null-terminated Unicode string.
@retval Value translated from String.
**/
UINTN
EFIAPI
StrHexToUintn (
IN CONST CHAR16 *String
);
/**
Convert a Null-terminated Unicode hexadecimal string to a value of type UINT64.
This function returns a value of type UINT64 by interpreting the contents
of the Unicode string specified by String as a hexadecimal number.
The format of the input Unicode string String is
[spaces][zeros][x][hexadecimal digits].
The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix.
If "x" appears in the input string, it must be prefixed with at least one 0.
The function will ignore the pad space, which includes spaces or tab characters,
before [zeros], [x] or [hexadecimal digit]. The running zero before [x] or
[hexadecimal digit] will be ignored. Then, the decoding starts after [x] or the
first valid hexadecimal digit. Then, the function stops at the first character that is
a not a valid hexadecimal character or NULL, whichever one comes first.
If String is NULL, then ASSERT().
If String is not aligned in a 16-bit boundary, then ASSERT().
If String has only pad spaces, then zero is returned.
If String has no leading pad spaces, leading zeros or valid hexadecimal digits,
then zero is returned.
If the number represented by String overflows according to the range defined by
UINT64, then MAX_UINT64 is returned.
If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator,
then ASSERT().
@param String The pointer to a Null-terminated Unicode string.
@retval Value translated from String.
**/
UINT64
EFIAPI
StrHexToUint64 (
IN CONST CHAR16 *String
);
/**
Convert a Null-terminated Unicode string to IPv6 address and prefix length.
This function outputs a value of type IPv6_ADDRESS and may output a value
of type UINT8 by interpreting the contents of the Unicode string specified
by String. The format of the input Unicode string String is as follows:
X:X:X:X:X:X:X:X[/P]
X contains one to four hexadecimal digit characters in the range [0-9], [a-f] and
[A-F]. X is converted to a value of type UINT16, whose low byte is stored in low
memory address and high byte is stored in high memory address. P contains decimal
digit characters in the range [0-9]. The running zero in the beginning of P will
be ignored. /P is optional.
When /P is not in the String, the function stops at the first character that is
not a valid hexadecimal digit character after eight X's are converted.
When /P is in the String, the function stops at the first character that is not
a valid decimal digit character after P is converted.
"::" can be used to compress one or more groups of X when X contains only 0.
The "::" can only appear once in the String.
- If String is NULL, then ASSERT().
-
- If Address is NULL, then ASSERT().
-
If String is not aligned in a 16-bit boundary, then ASSERT().
- If PcdMaximumUnicodeStringLength is not zero, and String contains more than
- PcdMaximumUnicodeStringLength Unicode characters, not including the
- Null-terminator, then ASSERT().
-
If EndPointer is not NULL and Address is translated from String, a pointer
to the character that stopped the scan is stored at the location pointed to
by EndPointer.
@param String Pointer to a Null-terminated Unicode string.
@param EndPointer Pointer to character that stops scan.
@param Address Pointer to the converted IPv6 address.
@param PrefixLength Pointer to the converted IPv6 address prefix
length. MAX_UINT8 is returned when /P is
not in the String.
@retval RETURN_SUCCESS Address is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
@retval RETURN_UNSUPPORTED If X contains more than four hexadecimal
digit characters.
If String contains "::" and number of X
is not less than 8.
If P starts with character that is not a
valid decimal digit character.
If the decimal number converted from P
exceeds 128.
**/
RETURN_STATUS
EFIAPI
StrToIpv6Address (
IN CONST CHAR16 *String,
OUT CHAR16 **EndPointer, OPTIONAL
OUT IPv6_ADDRESS *Address,
OUT UINT8 *PrefixLength OPTIONAL
);
/**
Convert a Null-terminated Unicode string to IPv4 address and prefix length.
This function outputs a value of type IPv4_ADDRESS and may output a value
of type UINT8 by interpreting the contents of the Unicode string specified
by String. The format of the input Unicode string String is as follows:
D.D.D.D[/P]
D and P are decimal digit characters in the range [0-9]. The running zero in
the beginning of D and P will be ignored. /P is optional.
When /P is not in the String, the function stops at the first character that is
not a valid decimal digit character after four D's are converted.
When /P is in the String, the function stops at the first character that is not
a valid decimal digit character after P is converted.
- If String is NULL, then ASSERT().
-
- If Address is NULL, then ASSERT().
-
If String is not aligned in a 16-bit boundary, then ASSERT().
- If PcdMaximumUnicodeStringLength is not zero, and String contains more than
- PcdMaximumUnicodeStringLength Unicode characters, not including the
- Null-terminator, then ASSERT().
-
If EndPointer is not NULL and Address is translated from String, a pointer
to the character that stopped the scan is stored at the location pointed to
by EndPointer.
@param String Pointer to a Null-terminated Unicode string.
@param EndPointer Pointer to character that stops scan.
@param Address Pointer to the converted IPv4 address.
@param PrefixLength Pointer to the converted IPv4 address prefix
length. MAX_UINT8 is returned when /P is
not in the String.
@retval RETURN_SUCCESS Address is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
@retval RETURN_UNSUPPORTED If String is not in the correct format.
If any decimal number converted from D
exceeds 255.
If the decimal number converted from P
exceeds 32.
**/
RETURN_STATUS
EFIAPI
StrToIpv4Address (
IN CONST CHAR16 *String,
OUT CHAR16 **EndPointer, OPTIONAL
OUT IPv4_ADDRESS *Address,
OUT UINT8 *PrefixLength OPTIONAL
);
#define GUID_STRING_LENGTH 36
/**
Convert a Null-terminated Unicode GUID string to a value of type
EFI_GUID.
This function outputs a GUID value by interpreting the contents of
the Unicode string specified by String. The format of the input
Unicode string String consists of 36 characters, as follows:
aabbccdd-eeff-gghh-iijj-kkllmmnnoopp
The pairs aa - pp are two characters in the range [0-9], [a-f] and
[A-F], with each pair representing a single byte hexadecimal value.
The mapping between String and the EFI_GUID structure is as follows:
aa Data1[24:31]
bb Data1[16:23]
cc Data1[8:15]
dd Data1[0:7]
ee Data2[8:15]
ff Data2[0:7]
gg Data3[8:15]
hh Data3[0:7]
ii Data4[0:7]
jj Data4[8:15]
kk Data4[16:23]
ll Data4[24:31]
mm Data4[32:39]
nn Data4[40:47]
oo Data4[48:55]
pp Data4[56:63]
- If String is NULL, then ASSERT().
- If Guid is NULL, then ASSERT().
If String is not aligned in a 16-bit boundary, then ASSERT().
@param String Pointer to a Null-terminated Unicode string.
@param Guid Pointer to the converted GUID.
@retval RETURN_SUCCESS Guid is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
@retval RETURN_UNSUPPORTED If String is not as the above format.
**/
RETURN_STATUS
EFIAPI
StrToGuid (
IN CONST CHAR16 *String,
OUT GUID *Guid
);
/**
Convert a Null-terminated Unicode hexadecimal string to a byte array.
This function outputs a byte array by interpreting the contents of
the Unicode string specified by String in hexadecimal format. The format of
the input Unicode string String is:
[XX]*
X is a hexadecimal digit character in the range [0-9], [a-f] and [A-F].
The function decodes every two hexadecimal digit characters as one byte. The
decoding stops after Length of characters and outputs Buffer containing
(Length / 2) bytes.
If String is not aligned in a 16-bit boundary, then ASSERT().
- If String is NULL, then ASSERT().
-
- If Buffer is NULL, then ASSERT().
-
- If Length is not multiple of 2, then ASSERT().
-
- If PcdMaximumUnicodeStringLength is not zero and Length is greater than
- PcdMaximumUnicodeStringLength, then ASSERT().
-
- If MaxBufferSize is less than (Length / 2), then ASSERT().
-
@param String Pointer to a Null-terminated Unicode string.
@param Length The number of Unicode characters to decode.
@param Buffer Pointer to the converted bytes array.
@param MaxBufferSize The maximum size of Buffer.
@retval RETURN_SUCCESS Buffer is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If Length is not multiple of 2.
If PcdMaximumUnicodeStringLength is not zero,
and Length is greater than
PcdMaximumUnicodeStringLength.
@retval RETURN_UNSUPPORTED If Length of characters from String contain
a character that is not valid hexadecimal
digit characters, or a Null-terminator.
@retval RETURN_BUFFER_TOO_SMALL If MaxBufferSize is less than (Length / 2).
**/
RETURN_STATUS
EFIAPI
StrHexToBytes (
IN CONST CHAR16 *String,
IN UINTN Length,
OUT UINT8 *Buffer,
IN UINTN MaxBufferSize
);
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
[ATTENTION] This function is deprecated for security reason.
Convert a Null-terminated Unicode string to a Null-terminated
ASCII string and returns the ASCII string.
This function converts the content of the Unicode string Source
to the ASCII string Destination by copying the lower 8 bits of
each Unicode character. It returns Destination.
The caller is responsible to make sure Destination points to a buffer with size
equal or greater than ((StrLen (Source) + 1) * sizeof (CHAR8)) in bytes.
If any Unicode characters in Source contain non-zero value in
the upper 8 bits, then ASSERT().
If Destination is NULL, then ASSERT().
If Source is NULL, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains
more than PcdMaximumUnicodeStringLength Unicode characters not including
the Null-terminator, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and Source contains more
than PcdMaximumAsciiStringLength Unicode characters not including the
Null-terminator, then ASSERT().
@param Source The pointer to a Null-terminated Unicode string.
@param Destination The pointer to a Null-terminated ASCII string.
@return Destination.
**/
CHAR8 *
EFIAPI
UnicodeStrToAsciiStr (
IN CONST CHAR16 *Source,
OUT CHAR8 *Destination
);
-#endif
+#endif // !defined (DISABLE_NEW_DEPRECATED_INTERFACES)
/**
Convert a Null-terminated Unicode string to a Null-terminated
ASCII string.
This function is similar to AsciiStrCpyS.
This function converts the content of the Unicode string Source
to the ASCII string Destination by copying the lower 8 bits of
each Unicode character. The function terminates the ASCII string
Destination by appending a Null-terminator character at the end.
The caller is responsible to make sure Destination points to a buffer with size
equal or greater than ((StrLen (Source) + 1) * sizeof (CHAR8)) in bytes.
If any Unicode characters in Source contain non-zero value in
the upper 8 bits, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
- If an error would be returned, then the function will also ASSERT().
If an error is returned, then the Destination is unmodified.
@param Source The pointer to a Null-terminated Unicode string.
@param Destination The pointer to a Null-terminated ASCII string.
@param DestMax The maximum number of Destination Ascii
char, including terminating null char.
@retval RETURN_SUCCESS String is converted.
@retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than StrLen(Source).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumAsciiStringLength is not zero,
and DestMax is greater than
PcdMaximumAsciiStringLength.
If PcdMaximumUnicodeStringLength is not zero,
and DestMax is greater than
PcdMaximumUnicodeStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
UnicodeStrToAsciiStrS (
IN CONST CHAR16 *Source,
OUT CHAR8 *Destination,
IN UINTN DestMax
);
/**
Convert not more than Length successive characters from a Null-terminated
Unicode string to a Null-terminated Ascii string. If no null char is copied
from Source, then Destination[Length] is always set to null.
This function converts not more than Length successive characters from the
Unicode string Source to the Ascii string Destination by copying the lower 8
bits of each Unicode character. The function terminates the Ascii string
Destination by appending a Null-terminator character at the end.
The caller is responsible to make sure Destination points to a buffer with size
equal or greater than ((StrLen (Source) + 1) * sizeof (CHAR8)) in bytes.
If any Unicode characters in Source contain non-zero value in the upper 8
bits, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
- If an error would be returned, then the function will also ASSERT().
If an error is returned, then the Destination is unmodified.
@param Source The pointer to a Null-terminated Unicode string.
@param Length The maximum number of Unicode characters to
convert.
@param Destination The pointer to a Null-terminated Ascii string.
@param DestMax The maximum number of Destination Ascii
char, including terminating null char.
@param DestinationLength The number of Unicode characters converted.
@retval RETURN_SUCCESS String is converted.
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If DestinationLength is NULL.
If PcdMaximumAsciiStringLength is not zero,
and Length or DestMax is greater than
PcdMaximumAsciiStringLength.
If PcdMaximumUnicodeStringLength is not
zero, and Length or DestMax is greater than
PcdMaximumUnicodeStringLength.
If DestMax is 0.
@retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
MIN(StrLen(Source), Length).
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
UnicodeStrnToAsciiStrS (
IN CONST CHAR16 *Source,
IN UINTN Length,
OUT CHAR8 *Destination,
IN UINTN DestMax,
OUT UINTN *DestinationLength
);
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
[ATTENTION] This function is deprecated for security reason.
Copies one Null-terminated ASCII string to another Null-terminated ASCII
string and returns the new ASCII string.
This function copies the contents of the ASCII string Source to the ASCII
string Destination, and returns Destination. If Source and Destination
overlap, then the results are undefined.
If Destination is NULL, then ASSERT().
If Source is NULL, then ASSERT().
If Source and Destination overlap, then ASSERT().
If PcdMaximumAsciiStringLength is not zero and Source contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
@param Destination The pointer to a Null-terminated ASCII string.
@param Source The pointer to a Null-terminated ASCII string.
@return Destination
**/
CHAR8 *
EFIAPI
AsciiStrCpy (
OUT CHAR8 *Destination,
IN CONST CHAR8 *Source
);
/**
[ATTENTION] This function is deprecated for security reason.
- Copies up to a specified length one Null-terminated ASCII string to another
+ Copies up to a specified length one Null-terminated ASCII string to another
Null-terminated ASCII string and returns the new ASCII string.
This function copies the contents of the ASCII string Source to the ASCII
string Destination, and returns Destination. At most, Length ASCII characters
are copied from Source to Destination. If Length is 0, then Destination is
returned unmodified. If Length is greater that the number of ASCII characters
in Source, then Destination is padded with Null ASCII characters. If Source
and Destination overlap, then the results are undefined.
If Destination is NULL, then ASSERT().
If Source is NULL, then ASSERT().
If Source and Destination overlap, then ASSERT().
- If PcdMaximumAsciiStringLength is not zero, and Length is greater than
+ If PcdMaximumAsciiStringLength is not zero, and Length is greater than
PcdMaximumAsciiStringLength, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and Source contains more than
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
then ASSERT().
@param Destination The pointer to a Null-terminated ASCII string.
@param Source The pointer to a Null-terminated ASCII string.
@param Length The maximum number of ASCII characters to copy.
@return Destination
**/
CHAR8 *
EFIAPI
AsciiStrnCpy (
OUT CHAR8 *Destination,
IN CONST CHAR8 *Source,
IN UINTN Length
);
-#endif
+#endif // !defined (DISABLE_NEW_DEPRECATED_INTERFACES)
/**
Returns the length of a Null-terminated ASCII string.
This function returns the number of ASCII characters in the Null-terminated
ASCII string specified by String.
If Length > 0 and Destination is NULL, then ASSERT().
If Length > 0 and Source is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero and String contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
@param String The pointer to a Null-terminated ASCII string.
@return The length of String.
**/
UINTN
EFIAPI
AsciiStrLen (
IN CONST CHAR8 *String
);
/**
Returns the size of a Null-terminated ASCII string in bytes, including the
Null terminator.
This function returns the size, in bytes, of the Null-terminated ASCII string
specified by String.
If String is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero and String contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
@param String The pointer to a Null-terminated ASCII string.
@return The size of String.
**/
UINTN
EFIAPI
AsciiStrSize (
IN CONST CHAR8 *String
);
/**
Compares two Null-terminated ASCII strings, and returns the difference
between the first mismatched ASCII characters.
This function compares the Null-terminated ASCII string FirstString to the
Null-terminated ASCII string SecondString. If FirstString is identical to
SecondString, then 0 is returned. Otherwise, the value returned is the first
mismatched ASCII character in SecondString subtracted from the first
mismatched ASCII character in FirstString.
If FirstString is NULL, then ASSERT().
If SecondString is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero and FirstString contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
If PcdMaximumAsciiStringLength is not zero and SecondString contains more
than PcdMaximumAsciiStringLength ASCII characters not including the
Null-terminator, then ASSERT().
@param FirstString The pointer to a Null-terminated ASCII string.
@param SecondString The pointer to a Null-terminated ASCII string.
@retval ==0 FirstString is identical to SecondString.
@retval !=0 FirstString is not identical to SecondString.
**/
INTN
EFIAPI
AsciiStrCmp (
IN CONST CHAR8 *FirstString,
IN CONST CHAR8 *SecondString
);
/**
Performs a case insensitive comparison of two Null-terminated ASCII strings,
and returns the difference between the first mismatched ASCII characters.
This function performs a case insensitive comparison of the Null-terminated
ASCII string FirstString to the Null-terminated ASCII string SecondString. If
FirstString is identical to SecondString, then 0 is returned. Otherwise, the
value returned is the first mismatched lower case ASCII character in
SecondString subtracted from the first mismatched lower case ASCII character
in FirstString.
If FirstString is NULL, then ASSERT().
If SecondString is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero and FirstString contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
If PcdMaximumAsciiStringLength is not zero and SecondString contains more
than PcdMaximumAsciiStringLength ASCII characters not including the
Null-terminator, then ASSERT().
@param FirstString The pointer to a Null-terminated ASCII string.
@param SecondString The pointer to a Null-terminated ASCII string.
@retval ==0 FirstString is identical to SecondString using case insensitive
comparisons.
@retval !=0 FirstString is not identical to SecondString using case
insensitive comparisons.
**/
INTN
EFIAPI
AsciiStriCmp (
IN CONST CHAR8 *FirstString,
IN CONST CHAR8 *SecondString
);
/**
Compares two Null-terminated ASCII strings with maximum lengths, and returns
the difference between the first mismatched ASCII characters.
This function compares the Null-terminated ASCII string FirstString to the
Null-terminated ASCII string SecondString. At most, Length ASCII characters
will be compared. If Length is 0, then 0 is returned. If FirstString is
identical to SecondString, then 0 is returned. Otherwise, the value returned
is the first mismatched ASCII character in SecondString subtracted from the
first mismatched ASCII character in FirstString.
If Length > 0 and FirstString is NULL, then ASSERT().
If Length > 0 and SecondString is NULL, then ASSERT().
- If PcdMaximumAsciiStringLength is not zero, and Length is greater than
+ If PcdMaximumAsciiStringLength is not zero, and Length is greater than
PcdMaximumAsciiStringLength, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and FirstString contains more than
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and SecondString contains more than
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
then ASSERT().
@param FirstString The pointer to a Null-terminated ASCII string.
@param SecondString The pointer to a Null-terminated ASCII string.
@param Length The maximum number of ASCII characters for compare.
-
+
@retval ==0 FirstString is identical to SecondString.
@retval !=0 FirstString is not identical to SecondString.
**/
INTN
EFIAPI
AsciiStrnCmp (
IN CONST CHAR8 *FirstString,
IN CONST CHAR8 *SecondString,
IN UINTN Length
);
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
[ATTENTION] This function is deprecated for security reason.
Concatenates one Null-terminated ASCII string to another Null-terminated
ASCII string, and returns the concatenated ASCII string.
This function concatenates two Null-terminated ASCII strings. The contents of
Null-terminated ASCII string Source are concatenated to the end of Null-
terminated ASCII string Destination. The Null-terminated concatenated ASCII
String is returned.
If Destination is NULL, then ASSERT().
If Source is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero and Destination contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
If PcdMaximumAsciiStringLength is not zero and Source contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
If PcdMaximumAsciiStringLength is not zero and concatenating Destination and
Source results in a ASCII string with more than PcdMaximumAsciiStringLength
ASCII characters, then ASSERT().
@param Destination The pointer to a Null-terminated ASCII string.
@param Source The pointer to a Null-terminated ASCII string.
@return Destination
**/
CHAR8 *
EFIAPI
AsciiStrCat (
IN OUT CHAR8 *Destination,
IN CONST CHAR8 *Source
);
/**
[ATTENTION] This function is deprecated for security reason.
- Concatenates up to a specified length one Null-terminated ASCII string to
- the end of another Null-terminated ASCII string, and returns the
+ Concatenates up to a specified length one Null-terminated ASCII string to
+ the end of another Null-terminated ASCII string, and returns the
concatenated ASCII string.
This function concatenates two Null-terminated ASCII strings. The contents
of Null-terminated ASCII string Source are concatenated to the end of Null-
terminated ASCII string Destination, and Destination is returned. At most,
Length ASCII characters are concatenated from Source to the end of
Destination, and Destination is always Null-terminated. If Length is 0, then
Destination is returned unmodified. If Source and Destination overlap, then
the results are undefined.
If Length > 0 and Destination is NULL, then ASSERT().
If Length > 0 and Source is NULL, then ASSERT().
If Source and Destination overlap, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and Length is greater than
PcdMaximumAsciiStringLength, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and Destination contains more than
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and Source contains more than
PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and concatenating Destination and
Source results in a ASCII string with more than PcdMaximumAsciiStringLength
ASCII characters, not including the Null-terminator, then ASSERT().
@param Destination The pointer to a Null-terminated ASCII string.
@param Source The pointer to a Null-terminated ASCII string.
@param Length The maximum number of ASCII characters to concatenate from
Source.
@return Destination
**/
CHAR8 *
EFIAPI
AsciiStrnCat (
IN OUT CHAR8 *Destination,
IN CONST CHAR8 *Source,
IN UINTN Length
);
-#endif
+#endif // !defined (DISABLE_NEW_DEPRECATED_INTERFACES)
/**
Returns the first occurrence of a Null-terminated ASCII sub-string
in a Null-terminated ASCII string.
This function scans the contents of the ASCII string specified by String
and returns the first occurrence of SearchString. If SearchString is not
found in String, then NULL is returned. If the length of SearchString is zero,
then String is returned.
If String is NULL, then ASSERT().
If SearchString is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and SearchString or
String contains more than PcdMaximumAsciiStringLength Unicode characters
not including the Null-terminator, then ASSERT().
@param String The pointer to a Null-terminated ASCII string.
@param SearchString The pointer to a Null-terminated ASCII string to search for.
@retval NULL If the SearchString does not appear in String.
@retval others If there is a match return the first occurrence of SearchingString.
If the length of SearchString is zero,return String.
**/
CHAR8 *
EFIAPI
AsciiStrStr (
IN CONST CHAR8 *String,
IN CONST CHAR8 *SearchString
);
/**
Convert a Null-terminated ASCII decimal string to a value of type
UINTN.
This function returns a value of type UINTN by interpreting the contents
of the ASCII string String as a decimal number. The format of the input
ASCII string String is:
[spaces] [decimal digits].
The valid decimal digit character is in the range [0-9]. The function will
ignore the pad space, which includes spaces or tab characters, before the digits.
The running zero in the beginning of [decimal digits] will be ignored. Then, the
function stops at the first character that is a not a valid decimal character or
Null-terminator, whichever on comes first.
If String has only pad spaces, then 0 is returned.
If String has no pad spaces or valid decimal digits, then 0 is returned.
If the number represented by String overflows according to the range defined by
UINTN, then MAX_UINTN is returned.
If String is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and String contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
@param String The pointer to a Null-terminated ASCII string.
@retval The value translated from String.
**/
UINTN
EFIAPI
AsciiStrDecimalToUintn (
IN CONST CHAR8 *String
);
/**
Convert a Null-terminated ASCII decimal string to a value of type
UINT64.
This function returns a value of type UINT64 by interpreting the contents
of the ASCII string String as a decimal number. The format of the input
ASCII string String is:
[spaces] [decimal digits].
The valid decimal digit character is in the range [0-9]. The function will
ignore the pad space, which includes spaces or tab characters, before the digits.
The running zero in the beginning of [decimal digits] will be ignored. Then, the
function stops at the first character that is a not a valid decimal character or
Null-terminator, whichever on comes first.
If String has only pad spaces, then 0 is returned.
If String has no pad spaces or valid decimal digits, then 0 is returned.
If the number represented by String overflows according to the range defined by
UINT64, then MAX_UINT64 is returned.
If String is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and String contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
@param String The pointer to a Null-terminated ASCII string.
@retval Value translated from String.
**/
UINT64
EFIAPI
AsciiStrDecimalToUint64 (
IN CONST CHAR8 *String
);
/**
Convert a Null-terminated ASCII hexadecimal string to a value of type UINTN.
This function returns a value of type UINTN by interpreting the contents of
the ASCII string String as a hexadecimal number. The format of the input ASCII
string String is:
[spaces][zeros][x][hexadecimal digits].
The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. If "x"
appears in the input string, it must be prefixed with at least one 0. The function
will ignore the pad space, which includes spaces or tab characters, before [zeros],
[x] or [hexadecimal digits]. The running zero before [x] or [hexadecimal digits]
will be ignored. Then, the decoding starts after [x] or the first valid hexadecimal
digit. Then, the function stops at the first character that is a not a valid
hexadecimal character or Null-terminator, whichever on comes first.
If String has only pad spaces, then 0 is returned.
If String has no leading pad spaces, leading zeros or valid hexadecimal digits, then
0 is returned.
If the number represented by String overflows according to the range defined by UINTN,
then MAX_UINTN is returned.
If String is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero,
and String contains more than PcdMaximumAsciiStringLength ASCII characters not including
the Null-terminator, then ASSERT().
@param String The pointer to a Null-terminated ASCII string.
@retval Value translated from String.
**/
UINTN
EFIAPI
AsciiStrHexToUintn (
IN CONST CHAR8 *String
);
/**
Convert a Null-terminated ASCII hexadecimal string to a value of type UINT64.
This function returns a value of type UINT64 by interpreting the contents of
the ASCII string String as a hexadecimal number. The format of the input ASCII
string String is:
[spaces][zeros][x][hexadecimal digits].
The valid hexadecimal digit character is in the range [0-9], [a-f] and [A-F].
The prefix "0x" is optional. Both "x" and "X" is allowed in "0x" prefix. If "x"
appears in the input string, it must be prefixed with at least one 0. The function
will ignore the pad space, which includes spaces or tab characters, before [zeros],
[x] or [hexadecimal digits]. The running zero before [x] or [hexadecimal digits]
will be ignored. Then, the decoding starts after [x] or the first valid hexadecimal
digit. Then, the function stops at the first character that is a not a valid
hexadecimal character or Null-terminator, whichever on comes first.
If String has only pad spaces, then 0 is returned.
If String has no leading pad spaces, leading zeros or valid hexadecimal digits, then
0 is returned.
If the number represented by String overflows according to the range defined by UINT64,
then MAX_UINT64 is returned.
If String is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero,
and String contains more than PcdMaximumAsciiStringLength ASCII characters not including
the Null-terminator, then ASSERT().
@param String The pointer to a Null-terminated ASCII string.
@retval Value translated from String.
**/
UINT64
EFIAPI
AsciiStrHexToUint64 (
IN CONST CHAR8 *String
);
/**
Convert a Null-terminated ASCII string to IPv6 address and prefix length.
This function outputs a value of type IPv6_ADDRESS and may output a value
of type UINT8 by interpreting the contents of the ASCII string specified
by String. The format of the input ASCII string String is as follows:
X:X:X:X:X:X:X:X[/P]
X contains one to four hexadecimal digit characters in the range [0-9], [a-f] and
[A-F]. X is converted to a value of type UINT16, whose low byte is stored in low
memory address and high byte is stored in high memory address. P contains decimal
digit characters in the range [0-9]. The running zero in the beginning of P will
be ignored. /P is optional.
When /P is not in the String, the function stops at the first character that is
not a valid hexadecimal digit character after eight X's are converted.
When /P is in the String, the function stops at the first character that is not
a valid decimal digit character after P is converted.
"::" can be used to compress one or more groups of X when X contains only 0.
The "::" can only appear once in the String.
- If String is NULL, then ASSERT().
-
- If Address is NULL, then ASSERT().
-
If EndPointer is not NULL and Address is translated from String, a pointer
to the character that stopped the scan is stored at the location pointed to
by EndPointer.
@param String Pointer to a Null-terminated ASCII string.
@param EndPointer Pointer to character that stops scan.
@param Address Pointer to the converted IPv6 address.
@param PrefixLength Pointer to the converted IPv6 address prefix
length. MAX_UINT8 is returned when /P is
not in the String.
@retval RETURN_SUCCESS Address is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
@retval RETURN_UNSUPPORTED If X contains more than four hexadecimal
digit characters.
If String contains "::" and number of X
is not less than 8.
If P starts with character that is not a
valid decimal digit character.
If the decimal number converted from P
exceeds 128.
**/
RETURN_STATUS
EFIAPI
AsciiStrToIpv6Address (
IN CONST CHAR8 *String,
OUT CHAR8 **EndPointer, OPTIONAL
OUT IPv6_ADDRESS *Address,
OUT UINT8 *PrefixLength OPTIONAL
);
/**
Convert a Null-terminated ASCII string to IPv4 address and prefix length.
This function outputs a value of type IPv4_ADDRESS and may output a value
of type UINT8 by interpreting the contents of the ASCII string specified
by String. The format of the input ASCII string String is as follows:
D.D.D.D[/P]
D and P are decimal digit characters in the range [0-9]. The running zero in
the beginning of D and P will be ignored. /P is optional.
When /P is not in the String, the function stops at the first character that is
not a valid decimal digit character after four D's are converted.
When /P is in the String, the function stops at the first character that is not
a valid decimal digit character after P is converted.
- If String is NULL, then ASSERT().
-
- If Address is NULL, then ASSERT().
-
If EndPointer is not NULL and Address is translated from String, a pointer
to the character that stopped the scan is stored at the location pointed to
by EndPointer.
@param String Pointer to a Null-terminated ASCII string.
@param EndPointer Pointer to character that stops scan.
@param Address Pointer to the converted IPv4 address.
@param PrefixLength Pointer to the converted IPv4 address prefix
length. MAX_UINT8 is returned when /P is
not in the String.
@retval RETURN_SUCCESS Address is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
@retval RETURN_UNSUPPORTED If String is not in the correct format.
If any decimal number converted from D
exceeds 255.
If the decimal number converted from P
exceeds 32.
**/
RETURN_STATUS
EFIAPI
AsciiStrToIpv4Address (
IN CONST CHAR8 *String,
OUT CHAR8 **EndPointer, OPTIONAL
OUT IPv4_ADDRESS *Address,
OUT UINT8 *PrefixLength OPTIONAL
);
/**
Convert a Null-terminated ASCII GUID string to a value of type
EFI_GUID.
This function outputs a GUID value by interpreting the contents of
the ASCII string specified by String. The format of the input
ASCII string String consists of 36 characters, as follows:
aabbccdd-eeff-gghh-iijj-kkllmmnnoopp
The pairs aa - pp are two characters in the range [0-9], [a-f] and
[A-F], with each pair representing a single byte hexadecimal value.
The mapping between String and the EFI_GUID structure is as follows:
aa Data1[24:31]
bb Data1[16:23]
cc Data1[8:15]
dd Data1[0:7]
ee Data2[8:15]
ff Data2[0:7]
gg Data3[8:15]
hh Data3[0:7]
ii Data4[0:7]
jj Data4[8:15]
kk Data4[16:23]
ll Data4[24:31]
mm Data4[32:39]
nn Data4[40:47]
oo Data4[48:55]
pp Data4[56:63]
- If String is NULL, then ASSERT().
- If Guid is NULL, then ASSERT().
-
@param String Pointer to a Null-terminated ASCII string.
@param Guid Pointer to the converted GUID.
@retval RETURN_SUCCESS Guid is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
@retval RETURN_UNSUPPORTED If String is not as the above format.
**/
RETURN_STATUS
EFIAPI
AsciiStrToGuid (
IN CONST CHAR8 *String,
OUT GUID *Guid
);
/**
Convert a Null-terminated ASCII hexadecimal string to a byte array.
This function outputs a byte array by interpreting the contents of
the ASCII string specified by String in hexadecimal format. The format of
the input ASCII string String is:
[XX]*
X is a hexadecimal digit character in the range [0-9], [a-f] and [A-F].
The function decodes every two hexadecimal digit characters as one byte. The
decoding stops after Length of characters and outputs Buffer containing
(Length / 2) bytes.
- If String is NULL, then ASSERT().
-
- If Buffer is NULL, then ASSERT().
-
- If Length is not multiple of 2, then ASSERT().
-
- If PcdMaximumAsciiStringLength is not zero and Length is greater than
- PcdMaximumAsciiStringLength, then ASSERT().
-
- If MaxBufferSize is less than (Length / 2), then ASSERT().
-
@param String Pointer to a Null-terminated ASCII string.
@param Length The number of ASCII characters to decode.
@param Buffer Pointer to the converted bytes array.
@param MaxBufferSize The maximum size of Buffer.
@retval RETURN_SUCCESS Buffer is translated from String.
@retval RETURN_INVALID_PARAMETER If String is NULL.
If Data is NULL.
If Length is not multiple of 2.
If PcdMaximumAsciiStringLength is not zero,
and Length is greater than
PcdMaximumAsciiStringLength.
@retval RETURN_UNSUPPORTED If Length of characters from String contain
a character that is not valid hexadecimal
digit characters, or a Null-terminator.
@retval RETURN_BUFFER_TOO_SMALL If MaxBufferSize is less than (Length / 2).
**/
RETURN_STATUS
EFIAPI
AsciiStrHexToBytes (
IN CONST CHAR8 *String,
IN UINTN Length,
OUT UINT8 *Buffer,
IN UINTN MaxBufferSize
);
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
[ATTENTION] This function is deprecated for security reason.
Convert one Null-terminated ASCII string to a Null-terminated
Unicode string and returns the Unicode string.
This function converts the contents of the ASCII string Source to the Unicode
string Destination, and returns Destination. The function terminates the
Unicode string Destination by appending a Null-terminator character at the end.
The caller is responsible to make sure Destination points to a buffer with size
equal or greater than ((AsciiStrLen (Source) + 1) * sizeof (CHAR16)) in bytes.
If Destination is NULL, then ASSERT().
If Destination is not aligned on a 16-bit boundary, then ASSERT().
If Source is NULL, then ASSERT().
If Source and Destination overlap, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and Source contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength ASCII characters not including the
Null-terminator, then ASSERT().
@param Source The pointer to a Null-terminated ASCII string.
@param Destination The pointer to a Null-terminated Unicode string.
@return Destination.
**/
CHAR16 *
EFIAPI
AsciiStrToUnicodeStr (
IN CONST CHAR8 *Source,
OUT CHAR16 *Destination
);
-#endif
+#endif // !defined (DISABLE_NEW_DEPRECATED_INTERFACES)
/**
Convert one Null-terminated ASCII string to a Null-terminated
Unicode string.
This function is similar to StrCpyS.
This function converts the contents of the ASCII string Source to the Unicode
string Destination. The function terminates the Unicode string Destination by
appending a Null-terminator character at the end.
The caller is responsible to make sure Destination points to a buffer with size
equal or greater than ((AsciiStrLen (Source) + 1) * sizeof (CHAR16)) in bytes.
If Destination is not aligned on a 16-bit boundary, then ASSERT().
- If an error would be returned, then the function will also ASSERT().
If an error is returned, then the Destination is unmodified.
@param Source The pointer to a Null-terminated ASCII string.
@param Destination The pointer to a Null-terminated Unicode string.
@param DestMax The maximum number of Destination Unicode
char, including terminating null char.
@retval RETURN_SUCCESS String is converted.
@retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than StrLen(Source).
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If PcdMaximumUnicodeStringLength is not zero,
and DestMax is greater than
PcdMaximumUnicodeStringLength.
If PcdMaximumAsciiStringLength is not zero,
and DestMax is greater than
PcdMaximumAsciiStringLength.
If DestMax is 0.
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
AsciiStrToUnicodeStrS (
IN CONST CHAR8 *Source,
OUT CHAR16 *Destination,
IN UINTN DestMax
);
/**
Convert not more than Length successive characters from a Null-terminated
Ascii string to a Null-terminated Unicode string. If no null char is copied
from Source, then Destination[Length] is always set to null.
This function converts not more than Length successive characters from the
Ascii string Source to the Unicode string Destination. The function
terminates the Unicode string Destination by appending a Null-terminator
character at the end.
The caller is responsible to make sure Destination points to a buffer with
size not smaller than
((MIN(AsciiStrLen(Source), Length) + 1) * sizeof (CHAR8)) in bytes.
If Destination is not aligned on a 16-bit boundary, then ASSERT().
- If an error would be returned, then the function will also ASSERT().
If an error is returned, then Destination and DestinationLength are
unmodified.
@param Source The pointer to a Null-terminated Ascii string.
@param Length The maximum number of Ascii characters to convert.
@param Destination The pointer to a Null-terminated Unicode string.
@param DestMax The maximum number of Destination Unicode char,
including terminating null char.
@param DestinationLength The number of Ascii characters converted.
@retval RETURN_SUCCESS String is converted.
@retval RETURN_INVALID_PARAMETER If Destination is NULL.
If Source is NULL.
If DestinationLength is NULL.
If PcdMaximumUnicodeStringLength is not
zero, and Length or DestMax is greater than
PcdMaximumUnicodeStringLength.
If PcdMaximumAsciiStringLength is not zero,
and Length or DestMax is greater than
PcdMaximumAsciiStringLength.
If DestMax is 0.
@retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
MIN(AsciiStrLen(Source), Length).
@retval RETURN_ACCESS_DENIED If Source and Destination overlap.
**/
RETURN_STATUS
EFIAPI
AsciiStrnToUnicodeStrS (
IN CONST CHAR8 *Source,
IN UINTN Length,
OUT CHAR16 *Destination,
IN UINTN DestMax,
OUT UINTN *DestinationLength
);
/**
+ Convert a Unicode character to upper case only if
+ it maps to a valid small-case ASCII character.
+
+ This internal function only deal with Unicode character
+ which maps to a valid small-case ASCII character, i.e.
+ L'a' to L'z'. For other Unicode character, the input character
+ is returned directly.
+
+ @param Char The character to convert.
+
+ @retval LowerCharacter If the Char is with range L'a' to L'z'.
+ @retval Unchanged Otherwise.
+
+**/
+CHAR16
+EFIAPI
+CharToUpper (
+ IN CHAR16 Char
+ );
+
+/**
+ Converts a lowercase Ascii character to upper one.
+
+ If Chr is lowercase Ascii character, then converts it to upper one.
+
+ If Value >= 0xA0, then ASSERT().
+ If (Value & 0x0F) >= 0x0A, then ASSERT().
+
+ @param Chr one Ascii character
+
+ @return The uppercase value of Ascii character
+
+**/
+CHAR8
+EFIAPI
+AsciiCharToUpper (
+ IN CHAR8 Chr
+ );
+
+/**
+ Convert binary data to a Base64 encoded ascii string based on RFC4648.
+
+ Produce a Null-terminated Ascii string in the output buffer specified by Destination and DestinationSize.
+ The Ascii string is produced by converting the data string specified by Source and SourceLength.
+
+ @param Source Input UINT8 data
+ @param SourceLength Number of UINT8 bytes of data
+ @param Destination Pointer to output string buffer
+ @param DestinationSize Size of ascii buffer. Set to 0 to get the size needed.
+ Caller is responsible for passing in buffer of DestinationSize
+
+ @retval RETURN_SUCCESS When ascii buffer is filled in.
+ @retval RETURN_INVALID_PARAMETER If Source is NULL or DestinationSize is NULL.
+ @retval RETURN_INVALID_PARAMETER If SourceLength or DestinationSize is bigger than (MAX_ADDRESS - (UINTN)Destination).
+ @retval RETURN_BUFFER_TOO_SMALL If SourceLength is 0 and DestinationSize is <1.
+ @retval RETURN_BUFFER_TOO_SMALL If Destination is NULL or DestinationSize is smaller than required buffersize.
+
+**/
+RETURN_STATUS
+EFIAPI
+Base64Encode (
+ IN CONST UINT8 *Source,
+ IN UINTN SourceLength,
+ OUT CHAR8 *Destination OPTIONAL,
+ IN OUT UINTN *DestinationSize
+ );
+
+/**
+ Decode Base64 ASCII encoded data to 8-bit binary representation, based on
+ RFC4648.
+
+ Decoding occurs according to "Table 1: The Base 64 Alphabet" in RFC4648.
+
+ Whitespace is ignored at all positions:
+ - 0x09 ('\t') horizontal tab
+ - 0x0A ('\n') new line
+ - 0x0B ('\v') vertical tab
+ - 0x0C ('\f') form feed
+ - 0x0D ('\r') carriage return
+ - 0x20 (' ') space
+
+ The minimum amount of required padding (with ASCII 0x3D, '=') is tolerated
+ and enforced at the end of the Base64 ASCII encoded data, and only there.
+
+ Other characters outside of the encoding alphabet cause the function to
+ reject the Base64 ASCII encoded data.
+
+ @param[in] Source Array of CHAR8 elements containing the Base64
+ ASCII encoding. May be NULL if SourceSize is
+ zero.
+
+ @param[in] SourceSize Number of CHAR8 elements in Source.
+
+ @param[out] Destination Array of UINT8 elements receiving the decoded
+ 8-bit binary representation. Allocated by the
+ caller. May be NULL if DestinationSize is
+ zero on input. If NULL, decoding is
+ performed, but the 8-bit binary
+ representation is not stored. If non-NULL and
+ the function returns an error, the contents
+ of Destination are indeterminate.
+
+ @param[in,out] DestinationSize On input, the number of UINT8 elements that
+ the caller allocated for Destination. On
+ output, if the function returns
+ RETURN_SUCCESS or RETURN_BUFFER_TOO_SMALL,
+ the number of UINT8 elements that are
+ required for decoding the Base64 ASCII
+ representation. If the function returns a
+ value different from both RETURN_SUCCESS and
+ RETURN_BUFFER_TOO_SMALL, then DestinationSize
+ is indeterminate on output.
+
+ @retval RETURN_SUCCESS SourceSize CHAR8 elements at Source have
+ been decoded to on-output DestinationSize
+ UINT8 elements at Destination. Note that
+ RETURN_SUCCESS covers the case when
+ DestinationSize is zero on input, and
+ Source decodes to zero bytes (due to
+ containing at most ignored whitespace).
+
+ @retval RETURN_BUFFER_TOO_SMALL The input value of DestinationSize is not
+ large enough for decoding SourceSize CHAR8
+ elements at Source. The required number of
+ UINT8 elements has been stored to
+ DestinationSize.
+
+ @retval RETURN_INVALID_PARAMETER DestinationSize is NULL.
+
+ @retval RETURN_INVALID_PARAMETER Source is NULL, but SourceSize is not zero.
+
+ @retval RETURN_INVALID_PARAMETER Destination is NULL, but DestinationSize is
+ not zero on input.
+
+ @retval RETURN_INVALID_PARAMETER Source is non-NULL, and (Source +
+ SourceSize) would wrap around MAX_ADDRESS.
+
+ @retval RETURN_INVALID_PARAMETER Destination is non-NULL, and (Destination +
+ DestinationSize) would wrap around
+ MAX_ADDRESS, as specified on input.
+
+ @retval RETURN_INVALID_PARAMETER None of Source and Destination are NULL,
+ and CHAR8[SourceSize] at Source overlaps
+ UINT8[DestinationSize] at Destination, as
+ specified on input.
+
+ @retval RETURN_INVALID_PARAMETER Invalid CHAR8 element encountered in
+ Source.
+**/
+RETURN_STATUS
+EFIAPI
+Base64Decode (
+ IN CONST CHAR8 *Source OPTIONAL,
+ IN UINTN SourceSize,
+ OUT UINT8 *Destination OPTIONAL,
+ IN OUT UINTN *DestinationSize
+ );
+
+/**
Converts an 8-bit value to an 8-bit BCD value.
Converts the 8-bit value specified by Value to BCD. The BCD value is
returned.
If Value >= 100, then ASSERT().
@param Value The 8-bit value to convert to BCD. Range 0..99.
@return The BCD value.
**/
UINT8
EFIAPI
DecimalToBcd8 (
IN UINT8 Value
);
/**
Converts an 8-bit BCD value to an 8-bit value.
Converts the 8-bit BCD value specified by Value to an 8-bit value. The 8-bit
value is returned.
If Value >= 0xA0, then ASSERT().
If (Value & 0x0F) >= 0x0A, then ASSERT().
@param Value The 8-bit BCD value to convert to an 8-bit value.
@return The 8-bit value is returned.
**/
UINT8
EFIAPI
BcdToDecimal8 (
IN UINT8 Value
);
//
// File Path Manipulation Functions
//
/**
Removes the last directory or file entry in a path.
@param[in, out] Path The pointer to the path to modify.
@retval FALSE Nothing was found to remove.
@retval TRUE A directory or file was removed.
**/
BOOLEAN
EFIAPI
PathRemoveLastItem(
IN OUT CHAR16 *Path
);
/**
Function to clean up paths.
- Single periods in the path are removed.
- Double periods in the path are removed along with a single parent directory.
- Forward slashes L'/' are converted to backward slashes L'\'.
This will be done inline and the existing buffer may be larger than required
upon completion.
@param[in] Path The pointer to the string containing the path.
@return Returns Path, otherwise returns NULL to indicate that an error has occurred.
**/
CHAR16*
EFIAPI
PathCleanUpDirectories(
IN CHAR16 *Path
);
//
// Linked List Functions and Macros
//
/**
Initializes the head node of a doubly linked list that is declared as a
global variable in a module.
Initializes the forward and backward links of a new linked list. After
initializing a linked list with this macro, the other linked list functions
may be used to add and remove nodes from the linked list. This macro results
in smaller executables by initializing the linked list in the data section,
instead if calling the InitializeListHead() function to perform the
equivalent operation.
@param ListHead The head note of a list to initialize.
**/
#define INITIALIZE_LIST_HEAD_VARIABLE(ListHead) {&(ListHead), &(ListHead)}
+/**
+ Iterates over each node in a doubly linked list using each node's forward link.
+ @param Entry A pointer to a list node used as a loop cursor during iteration
+ @param ListHead The head node of the doubly linked list
+
+**/
+#define BASE_LIST_FOR_EACH(Entry, ListHead) \
+ for(Entry = (ListHead)->ForwardLink; Entry != (ListHead); Entry = Entry->ForwardLink)
+
/**
+ Iterates over each node in a doubly linked list using each node's forward link
+ with safety against node removal.
+
+ This macro uses NextEntry to temporarily store the next list node so the node
+ pointed to by Entry may be deleted in the current loop iteration step and
+ iteration can continue from the node pointed to by NextEntry.
+
+ @param Entry A pointer to a list node used as a loop cursor during iteration
+ @param NextEntry A pointer to a list node used to temporarily store the next node
+ @param ListHead The head node of the doubly linked list
+
+**/
+#define BASE_LIST_FOR_EACH_SAFE(Entry, NextEntry, ListHead) \
+ for(Entry = (ListHead)->ForwardLink, NextEntry = Entry->ForwardLink;\
+ Entry != (ListHead); Entry = NextEntry, NextEntry = Entry->ForwardLink)
+
+/**
+ Checks whether FirstEntry and SecondEntry are part of the same doubly-linked
+ list.
+
+ If FirstEntry is NULL, then ASSERT().
+ If FirstEntry->ForwardLink is NULL, then ASSERT().
+ If FirstEntry->BackLink is NULL, then ASSERT().
+ If SecondEntry is NULL, then ASSERT();
+ If PcdMaximumLinkedListLength is not zero, and List contains more than
+ PcdMaximumLinkedListLength nodes, then ASSERT().
+
+ @param FirstEntry A pointer to a node in a linked list.
+ @param SecondEntry A pointer to the node to locate.
+
+ @retval TRUE SecondEntry is in the same doubly-linked list as FirstEntry.
+ @retval FALSE SecondEntry isn't in the same doubly-linked list as FirstEntry,
+ or FirstEntry is invalid.
+
+**/
+BOOLEAN
+EFIAPI
+IsNodeInList (
+ IN CONST LIST_ENTRY *FirstEntry,
+ IN CONST LIST_ENTRY *SecondEntry
+ );
+
+
+/**
Initializes the head node of a doubly linked list, and returns the pointer to
the head node of the doubly linked list.
Initializes the forward and backward links of a new linked list. After
initializing a linked list with this function, the other linked list
functions may be used to add and remove nodes from the linked list. It is up
to the caller of this function to allocate the memory for ListHead.
If ListHead is NULL, then ASSERT().
@param ListHead A pointer to the head node of a new doubly linked list.
@return ListHead
**/
LIST_ENTRY *
EFIAPI
InitializeListHead (
IN OUT LIST_ENTRY *ListHead
);
/**
Adds a node to the beginning of a doubly linked list, and returns the pointer
to the head node of the doubly linked list.
Adds the node Entry at the beginning of the doubly linked list denoted by
ListHead, and returns ListHead.
If ListHead is NULL, then ASSERT().
If Entry is NULL, then ASSERT().
If ListHead was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
InitializeListHead(), then ASSERT().
If PcdMaximumLinkedListLength is not zero, and prior to insertion the number
of nodes in ListHead, including the ListHead node, is greater than or
equal to PcdMaximumLinkedListLength, then ASSERT().
@param ListHead A pointer to the head node of a doubly linked list.
@param Entry A pointer to a node that is to be inserted at the beginning
of a doubly linked list.
@return ListHead
**/
LIST_ENTRY *
EFIAPI
InsertHeadList (
IN OUT LIST_ENTRY *ListHead,
IN OUT LIST_ENTRY *Entry
);
/**
Adds a node to the end of a doubly linked list, and returns the pointer to
the head node of the doubly linked list.
Adds the node Entry to the end of the doubly linked list denoted by ListHead,
and returns ListHead.
If ListHead is NULL, then ASSERT().
If Entry is NULL, then ASSERT().
- If ListHead was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
+ If ListHead was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
InitializeListHead(), then ASSERT().
If PcdMaximumLinkedListLength is not zero, and prior to insertion the number
of nodes in ListHead, including the ListHead node, is greater than or
equal to PcdMaximumLinkedListLength, then ASSERT().
@param ListHead A pointer to the head node of a doubly linked list.
@param Entry A pointer to a node that is to be added at the end of the
doubly linked list.
@return ListHead
**/
LIST_ENTRY *
EFIAPI
InsertTailList (
IN OUT LIST_ENTRY *ListHead,
IN OUT LIST_ENTRY *Entry
);
/**
Retrieves the first node of a doubly linked list.
- Returns the first node of a doubly linked list. List must have been
+ Returns the first node of a doubly linked list. List must have been
initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead().
If List is empty, then List is returned.
If List is NULL, then ASSERT().
- If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
+ If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
InitializeListHead(), then ASSERT().
If PcdMaximumLinkedListLength is not zero, and the number of nodes
in List, including the List node, is greater than or equal to
PcdMaximumLinkedListLength, then ASSERT().
@param List A pointer to the head node of a doubly linked list.
@return The first node of a doubly linked list.
@retval List The list is empty.
**/
LIST_ENTRY *
EFIAPI
GetFirstNode (
IN CONST LIST_ENTRY *List
);
/**
Retrieves the next node of a doubly linked list.
- Returns the node of a doubly linked list that follows Node.
+ Returns the node of a doubly linked list that follows Node.
List must have been initialized with INTIALIZE_LIST_HEAD_VARIABLE()
or InitializeListHead(). If List is empty, then List is returned.
If List is NULL, then ASSERT().
If Node is NULL, then ASSERT().
- If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
+ If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
InitializeListHead(), then ASSERT().
If PcdMaximumLinkedListLength is not zero, and List contains more than
PcdMaximumLinkedListLength nodes, then ASSERT().
If PcdVerifyNodeInList is TRUE and Node is not a node in List, then ASSERT().
@param List A pointer to the head node of a doubly linked list.
@param Node A pointer to a node in the doubly linked list.
@return The pointer to the next node if one exists. Otherwise List is returned.
**/
LIST_ENTRY *
EFIAPI
GetNextNode (
IN CONST LIST_ENTRY *List,
IN CONST LIST_ENTRY *Node
);
-
+
/**
Retrieves the previous node of a doubly linked list.
-
- Returns the node of a doubly linked list that precedes Node.
+
+ Returns the node of a doubly linked list that precedes Node.
List must have been initialized with INTIALIZE_LIST_HEAD_VARIABLE()
or InitializeListHead(). If List is empty, then List is returned.
-
+
If List is NULL, then ASSERT().
If Node is NULL, then ASSERT().
- If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
+ If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
InitializeListHead(), then ASSERT().
If PcdMaximumLinkedListLength is not zero, and List contains more than
PcdMaximumLinkedListLength nodes, then ASSERT().
If PcdVerifyNodeInList is TRUE and Node is not a node in List, then ASSERT().
-
+
@param List A pointer to the head node of a doubly linked list.
@param Node A pointer to a node in the doubly linked list.
-
+
@return The pointer to the previous node if one exists. Otherwise List is returned.
-
+
**/
LIST_ENTRY *
EFIAPI
GetPreviousNode (
IN CONST LIST_ENTRY *List,
IN CONST LIST_ENTRY *Node
);
-
+
/**
Checks to see if a doubly linked list is empty or not.
Checks to see if the doubly linked list is empty. If the linked list contains
zero nodes, this function returns TRUE. Otherwise, it returns FALSE.
If ListHead is NULL, then ASSERT().
- If ListHead was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
+ If ListHead was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
InitializeListHead(), then ASSERT().
If PcdMaximumLinkedListLength is not zero, and the number of nodes
in List, including the List node, is greater than or equal to
PcdMaximumLinkedListLength, then ASSERT().
@param ListHead A pointer to the head node of a doubly linked list.
@retval TRUE The linked list is empty.
@retval FALSE The linked list is not empty.
**/
BOOLEAN
EFIAPI
IsListEmpty (
IN CONST LIST_ENTRY *ListHead
);
/**
Determines if a node in a doubly linked list is the head node of a the same
doubly linked list. This function is typically used to terminate a loop that
traverses all the nodes in a doubly linked list starting with the head node.
Returns TRUE if Node is equal to List. Returns FALSE if Node is one of the
nodes in the doubly linked list specified by List. List must have been
initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead().
If List is NULL, then ASSERT().
If Node is NULL, then ASSERT().
- If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead(),
+ If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead(),
then ASSERT().
If PcdMaximumLinkedListLength is not zero, and the number of nodes
in List, including the List node, is greater than or equal to
PcdMaximumLinkedListLength, then ASSERT().
- If PcdVerifyNodeInList is TRUE and Node is not a node in List the and Node is not equal
+ If PcdVerifyNodeInList is TRUE and Node is not a node in List the and Node is not equal
to List, then ASSERT().
@param List A pointer to the head node of a doubly linked list.
@param Node A pointer to a node in the doubly linked list.
@retval TRUE Node is the head of the doubly-linked list pointed by List.
@retval FALSE Node is not the head of the doubly-linked list pointed by List.
**/
BOOLEAN
EFIAPI
IsNull (
IN CONST LIST_ENTRY *List,
IN CONST LIST_ENTRY *Node
);
/**
Determines if a node the last node in a doubly linked list.
Returns TRUE if Node is the last node in the doubly linked list specified by
List. Otherwise, FALSE is returned. List must have been initialized with
INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead().
If List is NULL, then ASSERT().
If Node is NULL, then ASSERT().
If List was not initialized with INTIALIZE_LIST_HEAD_VARIABLE() or
InitializeListHead(), then ASSERT().
If PcdMaximumLinkedListLength is not zero, and the number of nodes
in List, including the List node, is greater than or equal to
PcdMaximumLinkedListLength, then ASSERT().
If PcdVerifyNodeInList is TRUE and Node is not a node in List, then ASSERT().
@param List A pointer to the head node of a doubly linked list.
@param Node A pointer to a node in the doubly linked list.
@retval TRUE Node is the last node in the linked list.
@retval FALSE Node is not the last node in the linked list.
**/
BOOLEAN
EFIAPI
IsNodeAtEnd (
IN CONST LIST_ENTRY *List,
IN CONST LIST_ENTRY *Node
);
/**
Swaps the location of two nodes in a doubly linked list, and returns the
first node after the swap.
If FirstEntry is identical to SecondEntry, then SecondEntry is returned.
Otherwise, the location of the FirstEntry node is swapped with the location
of the SecondEntry node in a doubly linked list. SecondEntry must be in the
same double linked list as FirstEntry and that double linked list must have
- been initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead().
+ been initialized with INTIALIZE_LIST_HEAD_VARIABLE() or InitializeListHead().
SecondEntry is returned after the nodes are swapped.
If FirstEntry is NULL, then ASSERT().
If SecondEntry is NULL, then ASSERT().
- If PcdVerifyNodeInList is TRUE and SecondEntry and FirstEntry are not in the
+ If PcdVerifyNodeInList is TRUE and SecondEntry and FirstEntry are not in the
same linked list, then ASSERT().
If PcdMaximumLinkedListLength is not zero, and the number of nodes in the
linked list containing the FirstEntry and SecondEntry nodes, including
the FirstEntry and SecondEntry nodes, is greater than or equal to
PcdMaximumLinkedListLength, then ASSERT().
@param FirstEntry A pointer to a node in a linked list.
@param SecondEntry A pointer to another node in the same linked list.
-
+
@return SecondEntry.
**/
LIST_ENTRY *
EFIAPI
SwapListEntries (
IN OUT LIST_ENTRY *FirstEntry,
IN OUT LIST_ENTRY *SecondEntry
);
/**
Removes a node from a doubly linked list, and returns the node that follows
the removed node.
Removes the node Entry from a doubly linked list. It is up to the caller of
this function to release the memory used by this node if that is required. On
exit, the node following Entry in the doubly linked list is returned. If
Entry is the only node in the linked list, then the head node of the linked
list is returned.
If Entry is NULL, then ASSERT().
If Entry is the head node of an empty list, then ASSERT().
If PcdMaximumLinkedListLength is not zero, and the number of nodes in the
linked list containing Entry, including the Entry node, is greater than
or equal to PcdMaximumLinkedListLength, then ASSERT().
@param Entry A pointer to a node in a linked list.
@return Entry.
**/
LIST_ENTRY *
EFIAPI
RemoveEntryList (
IN CONST LIST_ENTRY *Entry
);
//
// Math Services
//
/**
Shifts a 64-bit integer left between 0 and 63 bits. The low bits are filled
with zeros. The shifted value is returned.
This function shifts the 64-bit value Operand to the left by Count bits. The
low Count bits are set to zero. The shifted value is returned.
If Count is greater than 63, then ASSERT().
@param Operand The 64-bit operand to shift left.
@param Count The number of bits to shift left.
@return Operand << Count.
**/
UINT64
EFIAPI
LShiftU64 (
IN UINT64 Operand,
IN UINTN Count
);
/**
Shifts a 64-bit integer right between 0 and 63 bits. This high bits are
filled with zeros. The shifted value is returned.
This function shifts the 64-bit value Operand to the right by Count bits. The
high Count bits are set to zero. The shifted value is returned.
If Count is greater than 63, then ASSERT().
@param Operand The 64-bit operand to shift right.
@param Count The number of bits to shift right.
@return Operand >> Count
**/
UINT64
EFIAPI
RShiftU64 (
IN UINT64 Operand,
IN UINTN Count
);
/**
Shifts a 64-bit integer right between 0 and 63 bits. The high bits are filled
with original integer's bit 63. The shifted value is returned.
This function shifts the 64-bit value Operand to the right by Count bits. The
high Count bits are set to bit 63 of Operand. The shifted value is returned.
If Count is greater than 63, then ASSERT().
@param Operand The 64-bit operand to shift right.
@param Count The number of bits to shift right.
@return Operand >> Count
**/
UINT64
EFIAPI
ARShiftU64 (
IN UINT64 Operand,
IN UINTN Count
);
/**
Rotates a 32-bit integer left between 0 and 31 bits, filling the low bits
with the high bits that were rotated.
This function rotates the 32-bit value Operand to the left by Count bits. The
low Count bits are fill with the high Count bits of Operand. The rotated
value is returned.
If Count is greater than 31, then ASSERT().
@param Operand The 32-bit operand to rotate left.
@param Count The number of bits to rotate left.
@return Operand << Count
**/
UINT32
EFIAPI
LRotU32 (
IN UINT32 Operand,
IN UINTN Count
);
/**
Rotates a 32-bit integer right between 0 and 31 bits, filling the high bits
with the low bits that were rotated.
This function rotates the 32-bit value Operand to the right by Count bits.
The high Count bits are fill with the low Count bits of Operand. The rotated
value is returned.
If Count is greater than 31, then ASSERT().
@param Operand The 32-bit operand to rotate right.
@param Count The number of bits to rotate right.
@return Operand >> Count
**/
UINT32
EFIAPI
RRotU32 (
IN UINT32 Operand,
IN UINTN Count
);
/**
Rotates a 64-bit integer left between 0 and 63 bits, filling the low bits
with the high bits that were rotated.
This function rotates the 64-bit value Operand to the left by Count bits. The
low Count bits are fill with the high Count bits of Operand. The rotated
value is returned.
If Count is greater than 63, then ASSERT().
@param Operand The 64-bit operand to rotate left.
@param Count The number of bits to rotate left.
@return Operand << Count
**/
UINT64
EFIAPI
LRotU64 (
IN UINT64 Operand,
IN UINTN Count
);
/**
Rotates a 64-bit integer right between 0 and 63 bits, filling the high bits
with the high low bits that were rotated.
This function rotates the 64-bit value Operand to the right by Count bits.
The high Count bits are fill with the low Count bits of Operand. The rotated
value is returned.
If Count is greater than 63, then ASSERT().
@param Operand The 64-bit operand to rotate right.
@param Count The number of bits to rotate right.
@return Operand >> Count
**/
UINT64
EFIAPI
RRotU64 (
IN UINT64 Operand,
IN UINTN Count
);
/**
Returns the bit position of the lowest bit set in a 32-bit value.
This function computes the bit position of the lowest bit set in the 32-bit
value specified by Operand. If Operand is zero, then -1 is returned.
Otherwise, a value between 0 and 31 is returned.
@param Operand The 32-bit operand to evaluate.
@retval 0..31 The lowest bit set in Operand was found.
@retval -1 Operand is zero.
**/
INTN
EFIAPI
LowBitSet32 (
IN UINT32 Operand
);
/**
Returns the bit position of the lowest bit set in a 64-bit value.
This function computes the bit position of the lowest bit set in the 64-bit
value specified by Operand. If Operand is zero, then -1 is returned.
Otherwise, a value between 0 and 63 is returned.
@param Operand The 64-bit operand to evaluate.
@retval 0..63 The lowest bit set in Operand was found.
@retval -1 Operand is zero.
**/
INTN
EFIAPI
LowBitSet64 (
IN UINT64 Operand
);
/**
Returns the bit position of the highest bit set in a 32-bit value. Equivalent
to log2(x).
This function computes the bit position of the highest bit set in the 32-bit
value specified by Operand. If Operand is zero, then -1 is returned.
Otherwise, a value between 0 and 31 is returned.
@param Operand The 32-bit operand to evaluate.
@retval 0..31 Position of the highest bit set in Operand if found.
@retval -1 Operand is zero.
**/
INTN
EFIAPI
HighBitSet32 (
IN UINT32 Operand
);
/**
Returns the bit position of the highest bit set in a 64-bit value. Equivalent
to log2(x).
This function computes the bit position of the highest bit set in the 64-bit
value specified by Operand. If Operand is zero, then -1 is returned.
Otherwise, a value between 0 and 63 is returned.
@param Operand The 64-bit operand to evaluate.
@retval 0..63 Position of the highest bit set in Operand if found.
@retval -1 Operand is zero.
**/
INTN
EFIAPI
HighBitSet64 (
IN UINT64 Operand
);
/**
Returns the value of the highest bit set in a 32-bit value. Equivalent to
1 << log2(x).
This function computes the value of the highest bit set in the 32-bit value
specified by Operand. If Operand is zero, then zero is returned.
@param Operand The 32-bit operand to evaluate.
@return 1 << HighBitSet32(Operand)
@retval 0 Operand is zero.
**/
UINT32
EFIAPI
GetPowerOfTwo32 (
IN UINT32 Operand
);
/**
Returns the value of the highest bit set in a 64-bit value. Equivalent to
1 << log2(x).
This function computes the value of the highest bit set in the 64-bit value
specified by Operand. If Operand is zero, then zero is returned.
@param Operand The 64-bit operand to evaluate.
@return 1 << HighBitSet64(Operand)
@retval 0 Operand is zero.
**/
UINT64
EFIAPI
GetPowerOfTwo64 (
IN UINT64 Operand
);
/**
Switches the endianness of a 16-bit integer.
This function swaps the bytes in a 16-bit unsigned value to switch the value
from little endian to big endian or vice versa. The byte swapped value is
returned.
@param Value A 16-bit unsigned value.
@return The byte swapped Value.
**/
UINT16
EFIAPI
SwapBytes16 (
IN UINT16 Value
);
/**
Switches the endianness of a 32-bit integer.
This function swaps the bytes in a 32-bit unsigned value to switch the value
from little endian to big endian or vice versa. The byte swapped value is
returned.
@param Value A 32-bit unsigned value.
@return The byte swapped Value.
**/
UINT32
EFIAPI
SwapBytes32 (
IN UINT32 Value
);
/**
Switches the endianness of a 64-bit integer.
This function swaps the bytes in a 64-bit unsigned value to switch the value
from little endian to big endian or vice versa. The byte swapped value is
returned.
@param Value A 64-bit unsigned value.
@return The byte swapped Value.
**/
UINT64
EFIAPI
SwapBytes64 (
IN UINT64 Value
);
/**
Multiples a 64-bit unsigned integer by a 32-bit unsigned integer and
generates a 64-bit unsigned result.
This function multiples the 64-bit unsigned value Multiplicand by the 32-bit
unsigned value Multiplier and generates a 64-bit unsigned result. This 64-
bit unsigned result is returned.
@param Multiplicand A 64-bit unsigned value.
@param Multiplier A 32-bit unsigned value.
@return Multiplicand * Multiplier
**/
UINT64
EFIAPI
MultU64x32 (
IN UINT64 Multiplicand,
IN UINT32 Multiplier
);
/**
Multiples a 64-bit unsigned integer by a 64-bit unsigned integer and
generates a 64-bit unsigned result.
This function multiples the 64-bit unsigned value Multiplicand by the 64-bit
unsigned value Multiplier and generates a 64-bit unsigned result. This 64-
bit unsigned result is returned.
@param Multiplicand A 64-bit unsigned value.
@param Multiplier A 64-bit unsigned value.
@return Multiplicand * Multiplier.
**/
UINT64
EFIAPI
MultU64x64 (
IN UINT64 Multiplicand,
IN UINT64 Multiplier
);
/**
Multiples a 64-bit signed integer by a 64-bit signed integer and generates a
64-bit signed result.
This function multiples the 64-bit signed value Multiplicand by the 64-bit
signed value Multiplier and generates a 64-bit signed result. This 64-bit
signed result is returned.
@param Multiplicand A 64-bit signed value.
@param Multiplier A 64-bit signed value.
@return Multiplicand * Multiplier
**/
INT64
EFIAPI
MultS64x64 (
IN INT64 Multiplicand,
IN INT64 Multiplier
);
/**
Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
a 64-bit unsigned result.
This function divides the 64-bit unsigned value Dividend by the 32-bit
unsigned value Divisor and generates a 64-bit unsigned quotient. This
function returns the 64-bit unsigned quotient.
If Divisor is 0, then ASSERT().
@param Dividend A 64-bit unsigned value.
@param Divisor A 32-bit unsigned value.
@return Dividend / Divisor.
**/
UINT64
EFIAPI
DivU64x32 (
IN UINT64 Dividend,
IN UINT32 Divisor
);
/**
Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
a 32-bit unsigned remainder.
This function divides the 64-bit unsigned value Dividend by the 32-bit
unsigned value Divisor and generates a 32-bit remainder. This function
returns the 32-bit unsigned remainder.
If Divisor is 0, then ASSERT().
@param Dividend A 64-bit unsigned value.
@param Divisor A 32-bit unsigned value.
@return Dividend % Divisor.
**/
UINT32
EFIAPI
ModU64x32 (
IN UINT64 Dividend,
IN UINT32 Divisor
);
/**
Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
a 64-bit unsigned result and an optional 32-bit unsigned remainder.
This function divides the 64-bit unsigned value Dividend by the 32-bit
unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder
is not NULL, then the 32-bit unsigned remainder is returned in Remainder.
This function returns the 64-bit unsigned quotient.
If Divisor is 0, then ASSERT().
@param Dividend A 64-bit unsigned value.
@param Divisor A 32-bit unsigned value.
@param Remainder A pointer to a 32-bit unsigned value. This parameter is
optional and may be NULL.
@return Dividend / Divisor.
**/
UINT64
EFIAPI
DivU64x32Remainder (
IN UINT64 Dividend,
IN UINT32 Divisor,
OUT UINT32 *Remainder OPTIONAL
);
/**
Divides a 64-bit unsigned integer by a 64-bit unsigned integer and generates
a 64-bit unsigned result and an optional 64-bit unsigned remainder.
This function divides the 64-bit unsigned value Dividend by the 64-bit
unsigned value Divisor and generates a 64-bit unsigned quotient. If Remainder
is not NULL, then the 64-bit unsigned remainder is returned in Remainder.
This function returns the 64-bit unsigned quotient.
If Divisor is 0, then ASSERT().
@param Dividend A 64-bit unsigned value.
@param Divisor A 64-bit unsigned value.
@param Remainder A pointer to a 64-bit unsigned value. This parameter is
optional and may be NULL.
@return Dividend / Divisor.
**/
UINT64
EFIAPI
DivU64x64Remainder (
IN UINT64 Dividend,
IN UINT64 Divisor,
OUT UINT64 *Remainder OPTIONAL
);
/**
Divides a 64-bit signed integer by a 64-bit signed integer and generates a
64-bit signed result and a optional 64-bit signed remainder.
This function divides the 64-bit signed value Dividend by the 64-bit signed
value Divisor and generates a 64-bit signed quotient. If Remainder is not
NULL, then the 64-bit signed remainder is returned in Remainder. This
function returns the 64-bit signed quotient.
It is the caller's responsibility to not call this function with a Divisor of 0.
- If Divisor is 0, then the quotient and remainder should be assumed to be
+ If Divisor is 0, then the quotient and remainder should be assumed to be
the largest negative integer.
If Divisor is 0, then ASSERT().
@param Dividend A 64-bit signed value.
@param Divisor A 64-bit signed value.
@param Remainder A pointer to a 64-bit signed value. This parameter is
optional and may be NULL.
@return Dividend / Divisor.
**/
INT64
EFIAPI
DivS64x64Remainder (
IN INT64 Dividend,
IN INT64 Divisor,
OUT INT64 *Remainder OPTIONAL
);
/**
Reads a 16-bit value from memory that may be unaligned.
This function returns the 16-bit value pointed to by Buffer. The function
guarantees that the read operation does not produce an alignment fault.
If the Buffer is NULL, then ASSERT().
@param Buffer The pointer to a 16-bit value that may be unaligned.
@return The 16-bit value read from Buffer.
**/
UINT16
EFIAPI
ReadUnaligned16 (
IN CONST UINT16 *Buffer
);
/**
Writes a 16-bit value to memory that may be unaligned.
This function writes the 16-bit value specified by Value to Buffer. Value is
returned. The function guarantees that the write operation does not produce
an alignment fault.
If the Buffer is NULL, then ASSERT().
@param Buffer The pointer to a 16-bit value that may be unaligned.
@param Value 16-bit value to write to Buffer.
@return The 16-bit value to write to Buffer.
**/
UINT16
EFIAPI
WriteUnaligned16 (
OUT UINT16 *Buffer,
IN UINT16 Value
);
/**
Reads a 24-bit value from memory that may be unaligned.
This function returns the 24-bit value pointed to by Buffer. The function
guarantees that the read operation does not produce an alignment fault.
If the Buffer is NULL, then ASSERT().
@param Buffer The pointer to a 24-bit value that may be unaligned.
@return The 24-bit value read from Buffer.
**/
UINT32
EFIAPI
ReadUnaligned24 (
IN CONST UINT32 *Buffer
);
/**
Writes a 24-bit value to memory that may be unaligned.
This function writes the 24-bit value specified by Value to Buffer. Value is
returned. The function guarantees that the write operation does not produce
an alignment fault.
If the Buffer is NULL, then ASSERT().
@param Buffer The pointer to a 24-bit value that may be unaligned.
@param Value 24-bit value to write to Buffer.
@return The 24-bit value to write to Buffer.
**/
UINT32
EFIAPI
WriteUnaligned24 (
OUT UINT32 *Buffer,
IN UINT32 Value
);
/**
Reads a 32-bit value from memory that may be unaligned.
This function returns the 32-bit value pointed to by Buffer. The function
guarantees that the read operation does not produce an alignment fault.
If the Buffer is NULL, then ASSERT().
@param Buffer The pointer to a 32-bit value that may be unaligned.
@return The 32-bit value read from Buffer.
**/
UINT32
EFIAPI
ReadUnaligned32 (
IN CONST UINT32 *Buffer
);
/**
Writes a 32-bit value to memory that may be unaligned.
This function writes the 32-bit value specified by Value to Buffer. Value is
returned. The function guarantees that the write operation does not produce
an alignment fault.
If the Buffer is NULL, then ASSERT().
@param Buffer The pointer to a 32-bit value that may be unaligned.
@param Value 32-bit value to write to Buffer.
@return The 32-bit value to write to Buffer.
**/
UINT32
EFIAPI
WriteUnaligned32 (
OUT UINT32 *Buffer,
IN UINT32 Value
);
/**
Reads a 64-bit value from memory that may be unaligned.
This function returns the 64-bit value pointed to by Buffer. The function
guarantees that the read operation does not produce an alignment fault.
If the Buffer is NULL, then ASSERT().
@param Buffer The pointer to a 64-bit value that may be unaligned.
@return The 64-bit value read from Buffer.
**/
UINT64
EFIAPI
ReadUnaligned64 (
IN CONST UINT64 *Buffer
);
/**
Writes a 64-bit value to memory that may be unaligned.
This function writes the 64-bit value specified by Value to Buffer. Value is
returned. The function guarantees that the write operation does not produce
an alignment fault.
If the Buffer is NULL, then ASSERT().
@param Buffer The pointer to a 64-bit value that may be unaligned.
@param Value 64-bit value to write to Buffer.
@return The 64-bit value to write to Buffer.
**/
UINT64
EFIAPI
WriteUnaligned64 (
OUT UINT64 *Buffer,
IN UINT64 Value
);
//
// Bit Field Functions
//
/**
Returns a bit field from an 8-bit value.
Returns the bitfield specified by the StartBit and the EndBit from Operand.
If 8-bit operations are not supported, then ASSERT().
If StartBit is greater than 7, then ASSERT().
If EndBit is greater than 7, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..7.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..7.
@return The bit field read.
**/
UINT8
EFIAPI
BitFieldRead8 (
IN UINT8 Operand,
IN UINTN StartBit,
IN UINTN EndBit
);
/**
Writes a bit field to an 8-bit value, and returns the result.
Writes Value to the bit field specified by the StartBit and the EndBit in
Operand. All other bits in Operand are preserved. The new 8-bit value is
returned.
If 8-bit operations are not supported, then ASSERT().
If StartBit is greater than 7, then ASSERT().
If EndBit is greater than 7, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..7.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..7.
@param Value New value of the bit field.
@return The new 8-bit value.
**/
UINT8
EFIAPI
BitFieldWrite8 (
IN UINT8 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 Value
);
/**
Reads a bit field from an 8-bit value, performs a bitwise OR, and returns the
result.
Performs a bitwise OR between the bit field specified by StartBit
and EndBit in Operand and the value specified by OrData. All other bits in
Operand are preserved. The new 8-bit value is returned.
If 8-bit operations are not supported, then ASSERT().
If StartBit is greater than 7, then ASSERT().
If EndBit is greater than 7, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..7.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..7.
@param OrData The value to OR with the read value from the value
@return The new 8-bit value.
**/
UINT8
EFIAPI
BitFieldOr8 (
IN UINT8 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 OrData
);
/**
Reads a bit field from an 8-bit value, performs a bitwise AND, and returns
the result.
Performs a bitwise AND between the bit field specified by StartBit and EndBit
in Operand and the value specified by AndData. All other bits in Operand are
preserved. The new 8-bit value is returned.
If 8-bit operations are not supported, then ASSERT().
If StartBit is greater than 7, then ASSERT().
If EndBit is greater than 7, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..7.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..7.
@param AndData The value to AND with the read value from the value.
@return The new 8-bit value.
**/
UINT8
EFIAPI
BitFieldAnd8 (
IN UINT8 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 AndData
);
/**
Reads a bit field from an 8-bit value, performs a bitwise AND followed by a
bitwise OR, and returns the result.
Performs a bitwise AND between the bit field specified by StartBit and EndBit
- in Operand and the value specified by AndData, followed by a bitwise
+ in Operand and the value specified by AndData, followed by a bitwise
OR with value specified by OrData. All other bits in Operand are
preserved. The new 8-bit value is returned.
If 8-bit operations are not supported, then ASSERT().
If StartBit is greater than 7, then ASSERT().
If EndBit is greater than 7, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..7.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..7.
@param AndData The value to AND with the read value from the value.
@param OrData The value to OR with the result of the AND operation.
@return The new 8-bit value.
**/
UINT8
EFIAPI
BitFieldAndThenOr8 (
IN UINT8 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 AndData,
IN UINT8 OrData
);
/**
Returns a bit field from a 16-bit value.
Returns the bitfield specified by the StartBit and the EndBit from Operand.
If 16-bit operations are not supported, then ASSERT().
If StartBit is greater than 15, then ASSERT().
If EndBit is greater than 15, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..15.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..15.
@return The bit field read.
**/
UINT16
EFIAPI
BitFieldRead16 (
IN UINT16 Operand,
IN UINTN StartBit,
IN UINTN EndBit
);
/**
Writes a bit field to a 16-bit value, and returns the result.
Writes Value to the bit field specified by the StartBit and the EndBit in
Operand. All other bits in Operand are preserved. The new 16-bit value is
returned.
If 16-bit operations are not supported, then ASSERT().
If StartBit is greater than 15, then ASSERT().
If EndBit is greater than 15, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..15.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..15.
@param Value New value of the bit field.
@return The new 16-bit value.
**/
UINT16
EFIAPI
BitFieldWrite16 (
IN UINT16 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 Value
);
/**
Reads a bit field from a 16-bit value, performs a bitwise OR, and returns the
result.
Performs a bitwise OR between the bit field specified by StartBit
and EndBit in Operand and the value specified by OrData. All other bits in
Operand are preserved. The new 16-bit value is returned.
If 16-bit operations are not supported, then ASSERT().
If StartBit is greater than 15, then ASSERT().
If EndBit is greater than 15, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..15.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..15.
@param OrData The value to OR with the read value from the value
@return The new 16-bit value.
**/
UINT16
EFIAPI
BitFieldOr16 (
IN UINT16 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 OrData
);
/**
Reads a bit field from a 16-bit value, performs a bitwise AND, and returns
the result.
Performs a bitwise AND between the bit field specified by StartBit and EndBit
in Operand and the value specified by AndData. All other bits in Operand are
preserved. The new 16-bit value is returned.
If 16-bit operations are not supported, then ASSERT().
If StartBit is greater than 15, then ASSERT().
If EndBit is greater than 15, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..15.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..15.
@param AndData The value to AND with the read value from the value
@return The new 16-bit value.
**/
UINT16
EFIAPI
BitFieldAnd16 (
IN UINT16 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 AndData
);
/**
Reads a bit field from a 16-bit value, performs a bitwise AND followed by a
bitwise OR, and returns the result.
Performs a bitwise AND between the bit field specified by StartBit and EndBit
- in Operand and the value specified by AndData, followed by a bitwise
+ in Operand and the value specified by AndData, followed by a bitwise
OR with value specified by OrData. All other bits in Operand are
preserved. The new 16-bit value is returned.
If 16-bit operations are not supported, then ASSERT().
If StartBit is greater than 15, then ASSERT().
If EndBit is greater than 15, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..15.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..15.
@param AndData The value to AND with the read value from the value.
@param OrData The value to OR with the result of the AND operation.
@return The new 16-bit value.
**/
UINT16
EFIAPI
BitFieldAndThenOr16 (
IN UINT16 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 AndData,
IN UINT16 OrData
);
/**
Returns a bit field from a 32-bit value.
Returns the bitfield specified by the StartBit and the EndBit from Operand.
If 32-bit operations are not supported, then ASSERT().
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@return The bit field read.
**/
UINT32
EFIAPI
BitFieldRead32 (
IN UINT32 Operand,
IN UINTN StartBit,
IN UINTN EndBit
);
/**
Writes a bit field to a 32-bit value, and returns the result.
Writes Value to the bit field specified by the StartBit and the EndBit in
Operand. All other bits in Operand are preserved. The new 32-bit value is
returned.
If 32-bit operations are not supported, then ASSERT().
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@param Value New value of the bit field.
@return The new 32-bit value.
**/
UINT32
EFIAPI
BitFieldWrite32 (
IN UINT32 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 Value
);
/**
Reads a bit field from a 32-bit value, performs a bitwise OR, and returns the
result.
Performs a bitwise OR between the bit field specified by StartBit
and EndBit in Operand and the value specified by OrData. All other bits in
Operand are preserved. The new 32-bit value is returned.
If 32-bit operations are not supported, then ASSERT().
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@param OrData The value to OR with the read value from the value.
@return The new 32-bit value.
**/
UINT32
EFIAPI
BitFieldOr32 (
IN UINT32 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 OrData
);
/**
Reads a bit field from a 32-bit value, performs a bitwise AND, and returns
the result.
Performs a bitwise AND between the bit field specified by StartBit and EndBit
in Operand and the value specified by AndData. All other bits in Operand are
preserved. The new 32-bit value is returned.
If 32-bit operations are not supported, then ASSERT().
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@param AndData The value to AND with the read value from the value
@return The new 32-bit value.
**/
UINT32
EFIAPI
BitFieldAnd32 (
IN UINT32 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 AndData
);
/**
Reads a bit field from a 32-bit value, performs a bitwise AND followed by a
bitwise OR, and returns the result.
Performs a bitwise AND between the bit field specified by StartBit and EndBit
- in Operand and the value specified by AndData, followed by a bitwise
+ in Operand and the value specified by AndData, followed by a bitwise
OR with value specified by OrData. All other bits in Operand are
preserved. The new 32-bit value is returned.
If 32-bit operations are not supported, then ASSERT().
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@param AndData The value to AND with the read value from the value.
@param OrData The value to OR with the result of the AND operation.
@return The new 32-bit value.
**/
UINT32
EFIAPI
BitFieldAndThenOr32 (
IN UINT32 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 AndData,
IN UINT32 OrData
);
/**
Returns a bit field from a 64-bit value.
Returns the bitfield specified by the StartBit and the EndBit from Operand.
If 64-bit operations are not supported, then ASSERT().
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@return The bit field read.
**/
UINT64
EFIAPI
BitFieldRead64 (
IN UINT64 Operand,
IN UINTN StartBit,
IN UINTN EndBit
);
/**
Writes a bit field to a 64-bit value, and returns the result.
Writes Value to the bit field specified by the StartBit and the EndBit in
Operand. All other bits in Operand are preserved. The new 64-bit value is
returned.
If 64-bit operations are not supported, then ASSERT().
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@param Value New value of the bit field.
@return The new 64-bit value.
**/
UINT64
EFIAPI
BitFieldWrite64 (
IN UINT64 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 Value
);
/**
Reads a bit field from a 64-bit value, performs a bitwise OR, and returns the
result.
Performs a bitwise OR between the bit field specified by StartBit
and EndBit in Operand and the value specified by OrData. All other bits in
Operand are preserved. The new 64-bit value is returned.
If 64-bit operations are not supported, then ASSERT().
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@param OrData The value to OR with the read value from the value
@return The new 64-bit value.
**/
UINT64
EFIAPI
BitFieldOr64 (
IN UINT64 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 OrData
);
/**
Reads a bit field from a 64-bit value, performs a bitwise AND, and returns
the result.
Performs a bitwise AND between the bit field specified by StartBit and EndBit
in Operand and the value specified by AndData. All other bits in Operand are
preserved. The new 64-bit value is returned.
If 64-bit operations are not supported, then ASSERT().
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@param AndData The value to AND with the read value from the value
@return The new 64-bit value.
**/
UINT64
EFIAPI
BitFieldAnd64 (
IN UINT64 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 AndData
);
/**
Reads a bit field from a 64-bit value, performs a bitwise AND followed by a
bitwise OR, and returns the result.
Performs a bitwise AND between the bit field specified by StartBit and EndBit
- in Operand and the value specified by AndData, followed by a bitwise
+ in Operand and the value specified by AndData, followed by a bitwise
OR with value specified by OrData. All other bits in Operand are
preserved. The new 64-bit value is returned.
If 64-bit operations are not supported, then ASSERT().
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Operand Operand on which to perform the bitfield operation.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@param AndData The value to AND with the read value from the value.
@param OrData The value to OR with the result of the AND operation.
@return The new 64-bit value.
**/
UINT64
EFIAPI
BitFieldAndThenOr64 (
IN UINT64 Operand,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 AndData,
IN UINT64 OrData
);
+/**
+ Reads a bit field from a 32-bit value, counts and returns
+ the number of set bits.
+
+ Counts the number of set bits in the bit field specified by
+ StartBit and EndBit in Operand. The count is returned.
+
+ If StartBit is greater than 31, then ASSERT().
+ If EndBit is greater than 31, then ASSERT().
+ If EndBit is less than StartBit, then ASSERT().
+
+ @param Operand Operand on which to perform the bitfield operation.
+ @param StartBit The ordinal of the least significant bit in the bit field.
+ Range 0..31.
+ @param EndBit The ordinal of the most significant bit in the bit field.
+ Range 0..31.
+
+ @return The number of bits set between StartBit and EndBit.
+
+**/
+UINT8
+EFIAPI
+BitFieldCountOnes32 (
+ IN UINT32 Operand,
+ IN UINTN StartBit,
+ IN UINTN EndBit
+ );
+
+/**
+ Reads a bit field from a 64-bit value, counts and returns
+ the number of set bits.
+
+ Counts the number of set bits in the bit field specified by
+ StartBit and EndBit in Operand. The count is returned.
+
+ If StartBit is greater than 63, then ASSERT().
+ If EndBit is greater than 63, then ASSERT().
+ If EndBit is less than StartBit, then ASSERT().
+
+ @param Operand Operand on which to perform the bitfield operation.
+ @param StartBit The ordinal of the least significant bit in the bit field.
+ Range 0..63.
+ @param EndBit The ordinal of the most significant bit in the bit field.
+ Range 0..63.
+
+ @return The number of bits set between StartBit and EndBit.
+
+**/
+UINT8
+EFIAPI
+BitFieldCountOnes64 (
+ IN UINT64 Operand,
+ IN UINTN StartBit,
+ IN UINTN EndBit
+ );
+
//
// Base Library Checksum Functions
//
/**
Returns the sum of all elements in a buffer in unit of UINT8.
During calculation, the carry bits are dropped.
This function calculates the sum of all elements in a buffer
in unit of UINT8. The carry bits in result of addition are dropped.
The result is returned as UINT8. If Length is Zero, then Zero is
returned.
If Buffer is NULL, then ASSERT().
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
@param Buffer The pointer to the buffer to carry out the sum operation.
@param Length The size, in bytes, of Buffer.
@return Sum The sum of Buffer with carry bits dropped during additions.
**/
UINT8
EFIAPI
CalculateSum8 (
IN CONST UINT8 *Buffer,
IN UINTN Length
);
/**
Returns the two's complement checksum of all elements in a buffer
of 8-bit values.
This function first calculates the sum of the 8-bit values in the
buffer specified by Buffer and Length. The carry bits in the result
of addition are dropped. Then, the two's complement of the sum is
returned. If Length is 0, then 0 is returned.
If Buffer is NULL, then ASSERT().
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
@param Buffer The pointer to the buffer to carry out the checksum operation.
@param Length The size, in bytes, of Buffer.
@return Checksum The two's complement checksum of Buffer.
**/
UINT8
EFIAPI
CalculateCheckSum8 (
IN CONST UINT8 *Buffer,
IN UINTN Length
);
/**
Returns the sum of all elements in a buffer of 16-bit values. During
calculation, the carry bits are dropped.
This function calculates the sum of the 16-bit values in the buffer
specified by Buffer and Length. The carry bits in result of addition are dropped.
The 16-bit result is returned. If Length is 0, then 0 is returned.
If 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 buffer to carry out the sum operation.
@param Length The size, in bytes, of Buffer.
@return Sum The sum of Buffer with carry bits dropped during additions.
**/
UINT16
EFIAPI
CalculateSum16 (
IN CONST UINT16 *Buffer,
IN UINTN Length
);
/**
Returns the two's complement checksum of all elements in a buffer of
16-bit values.
This function first calculates the sum of the 16-bit values in the buffer
specified by Buffer and Length. The carry bits in the result of addition
are dropped. Then, the two's complement of the sum is returned. If Length
is 0, then 0 is returned.
If 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 buffer to carry out the checksum operation.
@param Length The size, in bytes, of Buffer.
@return Checksum The two's complement checksum of Buffer.
**/
UINT16
EFIAPI
CalculateCheckSum16 (
IN CONST UINT16 *Buffer,
IN UINTN Length
);
/**
Returns the sum of all elements in a buffer of 32-bit values. During
calculation, the carry bits are dropped.
This function calculates the sum of the 32-bit values in the buffer
specified by Buffer and Length. The carry bits in result of addition are dropped.
The 32-bit result is returned. If Length is 0, then 0 is returned.
If 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 buffer to carry out the sum operation.
@param Length The size, in bytes, of Buffer.
@return Sum The sum of Buffer with carry bits dropped during additions.
**/
UINT32
EFIAPI
CalculateSum32 (
IN CONST UINT32 *Buffer,
IN UINTN Length
);
/**
Returns the two's complement checksum of all elements in a buffer of
32-bit values.
This function first calculates the sum of the 32-bit values in the buffer
specified by Buffer and Length. The carry bits in the result of addition
are dropped. Then, the two's complement of the sum is returned. If Length
is 0, then 0 is returned.
If 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 buffer to carry out the checksum operation.
@param Length The size, in bytes, of Buffer.
@return Checksum The two's complement checksum of Buffer.
**/
UINT32
EFIAPI
CalculateCheckSum32 (
IN CONST UINT32 *Buffer,
IN UINTN Length
);
/**
Returns the sum of all elements in a buffer of 64-bit values. During
calculation, the carry bits are dropped.
This function calculates the sum of the 64-bit values in the buffer
specified by Buffer and Length. The carry bits in result of addition are dropped.
The 64-bit result is returned. If Length is 0, then 0 is returned.
If 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 buffer to carry out the sum operation.
@param Length The size, in bytes, of Buffer.
@return Sum The sum of Buffer with carry bits dropped during additions.
**/
UINT64
EFIAPI
CalculateSum64 (
IN CONST UINT64 *Buffer,
IN UINTN Length
);
/**
Returns the two's complement checksum of all elements in a buffer of
64-bit values.
This function first calculates the sum of the 64-bit values in the buffer
specified by Buffer and Length. The carry bits in the result of addition
are dropped. Then, the two's complement of the sum is returned. If Length
is 0, then 0 is returned.
If 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 buffer to carry out the checksum operation.
@param Length The size, in bytes, of Buffer.
@return Checksum The two's complement checksum of Buffer.
**/
UINT64
EFIAPI
CalculateCheckSum64 (
IN CONST UINT64 *Buffer,
IN UINTN Length
);
+/**
+ Computes and returns a 32-bit CRC for a data buffer.
+ CRC32 value bases on ITU-T V.42.
+ If Buffer is NULL, then ASSERT().
+ If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
+
+ @param[in] Buffer A pointer to the buffer on which the 32-bit CRC is to be computed.
+ @param[in] Length The number of bytes in the buffer Data.
+
+ @retval Crc32 The 32-bit CRC was computed for the data buffer.
+
+**/
+UINT32
+EFIAPI
+CalculateCrc32(
+ IN VOID *Buffer,
+ IN UINTN Length
+ );
+
//
// Base Library CPU Functions
//
/**
Function entry point used when a stack switch is requested with SwitchStack()
@param Context1 Context1 parameter passed into SwitchStack().
@param Context2 Context2 parameter passed into SwitchStack().
**/
typedef
VOID
(EFIAPI *SWITCH_STACK_ENTRY_POINT)(
IN VOID *Context1, OPTIONAL
IN VOID *Context2 OPTIONAL
);
/**
Used to serialize load and store operations.
All loads and stores that proceed calls to this function are guaranteed to be
globally visible when this function returns.
**/
VOID
EFIAPI
MemoryFence (
VOID
);
/**
Saves the current CPU context that can be restored with a call to LongJump()
and returns 0.
Saves the current CPU context in the buffer specified by JumpBuffer and
returns 0. The initial call to SetJump() must always return 0. Subsequent
calls to LongJump() cause a non-zero value to be returned by SetJump().
If JumpBuffer is NULL, then ASSERT().
For Itanium processors, if JumpBuffer is not aligned on a 16-byte boundary, then ASSERT().
-
+
NOTE: The structure BASE_LIBRARY_JUMP_BUFFER is CPU architecture specific.
The same structure must never be used for more than one CPU architecture context.
- For example, a BASE_LIBRARY_JUMP_BUFFER allocated by an IA-32 module must never be used from an x64 module.
- SetJump()/LongJump() is not currently supported for the EBC processor type.
+ For example, a BASE_LIBRARY_JUMP_BUFFER allocated by an IA-32 module must never be used from an x64 module.
+ SetJump()/LongJump() is not currently supported for the EBC processor type.
@param JumpBuffer A pointer to CPU context buffer.
@retval 0 Indicates a return from SetJump().
**/
+RETURNS_TWICE
UINTN
EFIAPI
SetJump (
OUT BASE_LIBRARY_JUMP_BUFFER *JumpBuffer
);
/**
Restores the CPU context that was saved with SetJump().
Restores the CPU context from the buffer specified by JumpBuffer. This
function never returns to the caller. Instead is resumes execution based on
the state of JumpBuffer.
If JumpBuffer is NULL, then ASSERT().
For Itanium processors, if JumpBuffer is not aligned on a 16-byte boundary, then ASSERT().
If Value is 0, then ASSERT().
@param JumpBuffer A pointer to CPU context buffer.
@param Value The value to return when the SetJump() context is
restored and must be non-zero.
**/
VOID
EFIAPI
LongJump (
IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,
IN UINTN Value
);
/**
Enables CPU interrupts.
**/
VOID
EFIAPI
EnableInterrupts (
VOID
);
/**
Disables CPU interrupts.
**/
VOID
EFIAPI
DisableInterrupts (
VOID
);
/**
Disables CPU interrupts and returns the interrupt state prior to the disable
operation.
@retval TRUE CPU interrupts were enabled on entry to this call.
@retval FALSE CPU interrupts were disabled on entry to this call.
**/
BOOLEAN
EFIAPI
SaveAndDisableInterrupts (
VOID
);
/**
Enables CPU interrupts for the smallest window required to capture any
pending interrupts.
**/
VOID
EFIAPI
EnableDisableInterrupts (
VOID
);
/**
Retrieves the current CPU interrupt state.
Returns TRUE if interrupts are currently enabled. Otherwise
returns FALSE.
@retval TRUE CPU interrupts are enabled.
@retval FALSE CPU interrupts are disabled.
**/
BOOLEAN
EFIAPI
GetInterruptState (
VOID
);
/**
Set the current CPU interrupt state.
Sets the current CPU interrupt state to the state specified by
InterruptState. If InterruptState is TRUE, then interrupts are enabled. If
InterruptState is FALSE, then interrupts are disabled. InterruptState is
returned.
@param InterruptState TRUE if interrupts should enabled. FALSE if
interrupts should be disabled.
@return InterruptState
**/
BOOLEAN
EFIAPI
SetInterruptState (
IN BOOLEAN InterruptState
);
/**
Requests CPU to pause for a short period of time.
Requests CPU to pause for a short period of time. Typically used in MP
systems to prevent memory starvation while waiting for a spin lock.
**/
VOID
EFIAPI
CpuPause (
VOID
);
/**
Transfers control to a function starting with a new stack.
Transfers control to the function specified by EntryPoint using the
new stack specified by NewStack and passing in the parameters specified
by Context1 and Context2. Context1 and Context2 are optional and may
be NULL. The function EntryPoint must never return. This function
supports a variable number of arguments following the NewStack parameter.
These additional arguments are ignored on IA-32, x64, and EBC architectures.
Itanium processors expect one additional parameter of type VOID * that specifies
the new backing store pointer.
If EntryPoint is NULL, then ASSERT().
If NewStack is NULL, then ASSERT().
@param EntryPoint A pointer to function to call with the new stack.
@param Context1 A pointer to the context to pass into the EntryPoint
function.
@param Context2 A pointer to the context to pass into the EntryPoint
function.
@param NewStack A pointer to the new stack to use for the EntryPoint
function.
- @param ... This variable argument list is ignored for IA-32, x64, and
- EBC architectures. For Itanium processors, this variable
- argument list is expected to contain a single parameter of
+ @param ... This variable argument list is ignored for IA-32, x64, and
+ EBC architectures. For Itanium processors, this variable
+ argument list is expected to contain a single parameter of
type VOID * that specifies the new backing store pointer.
**/
VOID
EFIAPI
SwitchStack (
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
IN VOID *Context1, OPTIONAL
IN VOID *Context2, OPTIONAL
IN VOID *NewStack,
...
);
/**
Generates a breakpoint on the CPU.
Generates a breakpoint on the CPU. The breakpoint must be implemented such
that code can resume normal execution after the breakpoint.
**/
VOID
EFIAPI
CpuBreakpoint (
VOID
);
/**
Executes an infinite loop.
Forces the CPU to execute an infinite loop. A debugger may be used to skip
past the loop and the code that follows the loop must execute properly. This
implies that the infinite loop must not cause the code that follow it to be
optimized away.
**/
VOID
EFIAPI
CpuDeadLoop (
VOID
);
-
-#if defined (MDE_CPU_IPF)
-/**
- Flush a range of cache lines in the cache coherency domain of the calling
- CPU.
- Flushes the cache lines specified by Address and Length. If Address is not aligned
- on a cache line boundary, then entire cache line containing Address is flushed.
- If Address + Length is not aligned on a cache line boundary, then the entire cache
- line containing Address + Length - 1 is flushed. This function may choose to flush
- the entire cache if that is more efficient than flushing the specified range. If
- Length is 0, the no cache lines are flushed. Address is returned.
- This function is only available on Itanium processors.
-
- If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT().
-
- @param Address The base address of the instruction lines to invalidate. If
- the CPU is in a physical addressing mode, then Address is a
- physical address. If the CPU is in a virtual addressing mode,
- then Address is a virtual address.
-
- @param Length The number of bytes to invalidate from the instruction cache.
-
- @return Address.
-
-**/
-VOID *
-EFIAPI
-AsmFlushCacheRange (
- IN VOID *Address,
- IN UINTN Length
- );
-
-
/**
- Executes an FC instruction.
- Executes an FC instruction on the cache line specified by Address.
- The cache line size affected is at least 32-bytes (aligned on a 32-byte boundary).
- An implementation may flush a larger region. This function is only available on Itanium processors.
+ Uses as a barrier to stop speculative execution.
- @param Address The Address of cache line to be flushed.
+ Ensures that no later instruction will execute speculatively, until all prior
+ instructions have completed.
- @return The address of FC instruction executed.
-
**/
-UINT64
-EFIAPI
-AsmFc (
- IN UINT64 Address
- );
-
-
-/**
- Executes an FC.I instruction.
- Executes an FC.I instruction on the cache line specified by Address.
- The cache line size affected is at least 32-bytes (aligned on a 32-byte boundary).
- An implementation may flush a larger region. This function is only available on Itanium processors.
-
- @param Address The Address of cache line to be flushed.
-
- @return The address of the FC.I instruction executed.
-
-**/
-UINT64
-EFIAPI
-AsmFci (
- IN UINT64 Address
- );
-
-
-/**
- Reads the current value of a Processor Identifier Register (CPUID).
-
- Reads and returns the current value of Processor Identifier Register specified by Index.
- The Index of largest implemented CPUID (One less than the number of implemented CPUID
- registers) is determined by CPUID [3] bits {7:0}.
- No parameter checking is performed on Index. If the Index value is beyond the
- implemented CPUID register range, a Reserved Register/Field fault may occur. The caller
- must either guarantee that Index is valid, or the caller must set up fault handlers to
- catch the faults. This function is only available on Itanium processors.
-
- @param Index The 8-bit Processor Identifier Register index to read.
-
- @return The current value of Processor Identifier Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadCpuid (
- IN UINT8 Index
- );
-
-
-/**
- Reads the current value of 64-bit Processor Status Register (PSR).
- This function is only available on Itanium processors.
-
- @return The current value of PSR.
-
-**/
-UINT64
-EFIAPI
-AsmReadPsr (
- VOID
- );
-
-
-/**
- Writes the current value of 64-bit Processor Status Register (PSR).
-
- No parameter checking is performed on Value. All bits of Value corresponding to
- reserved fields of PSR must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must set up
- fault handlers to catch the faults. This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to PSR.
-
- @return The 64-bit value written to the PSR.
-
-**/
-UINT64
-EFIAPI
-AsmWritePsr (
- IN UINT64 Value
- );
-
-
-/**
- Reads the current value of 64-bit Kernel Register #0 (KR0).
-
- Reads and returns the current value of KR0.
- This function is only available on Itanium processors.
-
- @return The current value of KR0.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr0 (
- VOID
- );
-
-
-/**
- Reads the current value of 64-bit Kernel Register #1 (KR1).
-
- Reads and returns the current value of KR1.
- This function is only available on Itanium processors.
-
- @return The current value of KR1.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr1 (
- VOID
- );
-
-
-/**
- Reads the current value of 64-bit Kernel Register #2 (KR2).
-
- Reads and returns the current value of KR2.
- This function is only available on Itanium processors.
-
- @return The current value of KR2.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr2 (
- VOID
- );
-
-
-/**
- Reads the current value of 64-bit Kernel Register #3 (KR3).
-
- Reads and returns the current value of KR3.
- This function is only available on Itanium processors.
-
- @return The current value of KR3.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr3 (
- VOID
- );
-
-
-/**
- Reads the current value of 64-bit Kernel Register #4 (KR4).
-
- Reads and returns the current value of KR4.
- This function is only available on Itanium processors.
-
- @return The current value of KR4.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr4 (
- VOID
- );
-
-
-/**
- Reads the current value of 64-bit Kernel Register #5 (KR5).
-
- Reads and returns the current value of KR5.
- This function is only available on Itanium processors.
-
- @return The current value of KR5.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr5 (
- VOID
- );
-
-
-/**
- Reads the current value of 64-bit Kernel Register #6 (KR6).
-
- Reads and returns the current value of KR6.
- This function is only available on Itanium processors.
-
- @return The current value of KR6.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr6 (
- VOID
- );
-
-
-/**
- Reads the current value of 64-bit Kernel Register #7 (KR7).
-
- Reads and returns the current value of KR7.
- This function is only available on Itanium processors.
-
- @return The current value of KR7.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr7 (
- VOID
- );
-
-
-/**
- Write the current value of 64-bit Kernel Register #0 (KR0).
-
- Writes the current value of KR0. The 64-bit value written to
- the KR0 is returned. This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to KR0.
-
- @return The 64-bit value written to the KR0.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr0 (
- IN UINT64 Value
- );
-
-
-/**
- Write the current value of 64-bit Kernel Register #1 (KR1).
-
- Writes the current value of KR1. The 64-bit value written to
- the KR1 is returned. This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to KR1.
-
- @return The 64-bit value written to the KR1.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr1 (
- IN UINT64 Value
- );
-
-
-/**
- Write the current value of 64-bit Kernel Register #2 (KR2).
-
- Writes the current value of KR2. The 64-bit value written to
- the KR2 is returned. This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to KR2.
-
- @return The 64-bit value written to the KR2.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr2 (
- IN UINT64 Value
- );
-
-
-/**
- Write the current value of 64-bit Kernel Register #3 (KR3).
-
- Writes the current value of KR3. The 64-bit value written to
- the KR3 is returned. This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to KR3.
-
- @return The 64-bit value written to the KR3.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr3 (
- IN UINT64 Value
- );
-
-
-/**
- Write the current value of 64-bit Kernel Register #4 (KR4).
-
- Writes the current value of KR4. The 64-bit value written to
- the KR4 is returned. This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to KR4.
-
- @return The 64-bit value written to the KR4.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr4 (
- IN UINT64 Value
- );
-
-
-/**
- Write the current value of 64-bit Kernel Register #5 (KR5).
-
- Writes the current value of KR5. The 64-bit value written to
- the KR5 is returned. This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to KR5.
-
- @return The 64-bit value written to the KR5.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr5 (
- IN UINT64 Value
- );
-
-
-/**
- Write the current value of 64-bit Kernel Register #6 (KR6).
-
- Writes the current value of KR6. The 64-bit value written to
- the KR6 is returned. This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to KR6.
-
- @return The 64-bit value written to the KR6.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr6 (
- IN UINT64 Value
- );
-
-
-/**
- Write the current value of 64-bit Kernel Register #7 (KR7).
-
- Writes the current value of KR7. The 64-bit value written to
- the KR7 is returned. This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to KR7.
-
- @return The 64-bit value written to the KR7.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr7 (
- IN UINT64 Value
- );
-
-
-/**
- Reads the current value of Interval Timer Counter Register (ITC).
-
- Reads and returns the current value of ITC.
- This function is only available on Itanium processors.
-
- @return The current value of ITC.
-
-**/
-UINT64
-EFIAPI
-AsmReadItc (
- VOID
- );
-
-
-/**
- Reads the current value of Interval Timer Vector Register (ITV).
-
- Reads and returns the current value of ITV.
- This function is only available on Itanium processors.
-
- @return The current value of ITV.
-
-**/
-UINT64
-EFIAPI
-AsmReadItv (
- VOID
- );
-
-
-/**
- Reads the current value of Interval Timer Match Register (ITM).
-
- Reads and returns the current value of ITM.
- This function is only available on Itanium processors.
-
- @return The current value of ITM.
-**/
-UINT64
-EFIAPI
-AsmReadItm (
- VOID
- );
-
-
-/**
- Writes the current value of 64-bit Interval Timer Counter Register (ITC).
-
- Writes the current value of ITC. The 64-bit value written to the ITC is returned.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to ITC.
-
- @return The 64-bit value written to the ITC.
-
-**/
-UINT64
-EFIAPI
-AsmWriteItc (
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Interval Timer Match Register (ITM).
-
- Writes the current value of ITM. The 64-bit value written to the ITM is returned.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to ITM.
-
- @return The 64-bit value written to the ITM.
-
-**/
-UINT64
-EFIAPI
-AsmWriteItm (
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Interval Timer Vector Register (ITV).
-
- Writes the current value of ITV. The 64-bit value written to the ITV is returned.
- No parameter checking is performed on Value. All bits of Value corresponding to
- reserved fields of ITV must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must set up
- fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to ITV.
-
- @return The 64-bit value written to the ITV.
-
-**/
-UINT64
-EFIAPI
-AsmWriteItv (
- IN UINT64 Value
- );
-
-
-/**
- Reads the current value of Default Control Register (DCR).
-
- Reads and returns the current value of DCR. This function is only available on Itanium processors.
-
- @return The current value of DCR.
-
-**/
-UINT64
-EFIAPI
-AsmReadDcr (
- VOID
- );
-
-
-/**
- Reads the current value of Interruption Vector Address Register (IVA).
-
- Reads and returns the current value of IVA. This function is only available on Itanium processors.
-
- @return The current value of IVA.
-**/
-UINT64
-EFIAPI
-AsmReadIva (
- VOID
- );
-
-
-/**
- Reads the current value of Page Table Address Register (PTA).
-
- Reads and returns the current value of PTA. This function is only available on Itanium processors.
-
- @return The current value of PTA.
-
-**/
-UINT64
-EFIAPI
-AsmReadPta (
- VOID
- );
-
-
-/**
- Writes the current value of 64-bit Default Control Register (DCR).
-
- Writes the current value of DCR. The 64-bit value written to the DCR is returned.
- No parameter checking is performed on Value. All bits of Value corresponding to
- reserved fields of DCR must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must set up
- fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to DCR.
-
- @return The 64-bit value written to the DCR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteDcr (
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Interruption Vector Address Register (IVA).
-
- Writes the current value of IVA. The 64-bit value written to the IVA is returned.
- The size of vector table is 32 K bytes and is 32 K bytes aligned
- the low 15 bits of Value is ignored when written.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to IVA.
-
- @return The 64-bit value written to the IVA.
-
-**/
-UINT64
-EFIAPI
-AsmWriteIva (
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Page Table Address Register (PTA).
-
- Writes the current value of PTA. The 64-bit value written to the PTA is returned.
- No parameter checking is performed on Value. All bits of Value corresponding to
- reserved fields of DCR must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must set up
- fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to PTA.
-
- @return The 64-bit value written to the PTA.
-**/
-UINT64
-EFIAPI
-AsmWritePta (
- IN UINT64 Value
- );
-
-
-/**
- Reads the current value of Local Interrupt ID Register (LID).
-
- Reads and returns the current value of LID. This function is only available on Itanium processors.
-
- @return The current value of LID.
-
-**/
-UINT64
-EFIAPI
-AsmReadLid (
- VOID
- );
-
-
-/**
- Reads the current value of External Interrupt Vector Register (IVR).
-
- Reads and returns the current value of IVR. This function is only available on Itanium processors.
-
- @return The current value of IVR.
-
-**/
-UINT64
-EFIAPI
-AsmReadIvr (
- VOID
- );
-
-
-/**
- Reads the current value of Task Priority Register (TPR).
-
- Reads and returns the current value of TPR. This function is only available on Itanium processors.
-
- @return The current value of TPR.
-
-**/
-UINT64
-EFIAPI
-AsmReadTpr (
- VOID
- );
-
-
-/**
- Reads the current value of External Interrupt Request Register #0 (IRR0).
-
- Reads and returns the current value of IRR0. This function is only available on Itanium processors.
-
- @return The current value of IRR0.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr0 (
- VOID
- );
-
-
-/**
- Reads the current value of External Interrupt Request Register #1 (IRR1).
-
- Reads and returns the current value of IRR1. This function is only available on Itanium processors.
-
- @return The current value of IRR1.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr1 (
- VOID
- );
-
-
-/**
- Reads the current value of External Interrupt Request Register #2 (IRR2).
-
- Reads and returns the current value of IRR2. This function is only available on Itanium processors.
-
- @return The current value of IRR2.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr2 (
- VOID
- );
-
-
-/**
- Reads the current value of External Interrupt Request Register #3 (IRR3).
-
- Reads and returns the current value of IRR3. This function is only available on Itanium processors.
-
- @return The current value of IRR3.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr3 (
- VOID
- );
-
-
-/**
- Reads the current value of Performance Monitor Vector Register (PMV).
-
- Reads and returns the current value of PMV. This function is only available on Itanium processors.
-
- @return The current value of PMV.
-
-**/
-UINT64
-EFIAPI
-AsmReadPmv (
- VOID
- );
-
-
-/**
- Reads the current value of Corrected Machine Check Vector Register (CMCV).
-
- Reads and returns the current value of CMCV. This function is only available on Itanium processors.
-
- @return The current value of CMCV.
-
-**/
-UINT64
-EFIAPI
-AsmReadCmcv (
- VOID
- );
-
-
-/**
- Reads the current value of Local Redirection Register #0 (LRR0).
-
- Reads and returns the current value of LRR0. This function is only available on Itanium processors.
-
- @return The current value of LRR0.
-
-**/
-UINT64
-EFIAPI
-AsmReadLrr0 (
- VOID
- );
-
-
-/**
- Reads the current value of Local Redirection Register #1 (LRR1).
-
- Reads and returns the current value of LRR1. This function is only available on Itanium processors.
-
- @return The current value of LRR1.
-
-**/
-UINT64
-EFIAPI
-AsmReadLrr1 (
- VOID
- );
-
-
-/**
- Writes the current value of 64-bit Page Local Interrupt ID Register (LID).
-
- Writes the current value of LID. The 64-bit value written to the LID is returned.
- No parameter checking is performed on Value. All bits of Value corresponding to
- reserved fields of LID must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must set up
- fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to LID.
-
- @return The 64-bit value written to the LID.
-
-**/
-UINT64
-EFIAPI
-AsmWriteLid (
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Task Priority Register (TPR).
-
- Writes the current value of TPR. The 64-bit value written to the TPR is returned.
- No parameter checking is performed on Value. All bits of Value corresponding to
- reserved fields of TPR must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must set up
- fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to TPR.
-
- @return The 64-bit value written to the TPR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteTpr (
- IN UINT64 Value
- );
-
-
-/**
- Performs a write operation on End OF External Interrupt Register (EOI).
-
- Writes a value of 0 to the EOI Register. This function is only available on Itanium processors.
-
-**/
VOID
EFIAPI
-AsmWriteEoi (
+SpeculationBarrier (
VOID
);
-/**
- Writes the current value of 64-bit Performance Monitor Vector Register (PMV).
-
- Writes the current value of PMV. The 64-bit value written to the PMV is returned.
- No parameter checking is performed on Value. All bits of Value corresponding
- to reserved fields of PMV must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must set up
- fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to PMV.
-
- @return The 64-bit value written to the PMV.
-
-**/
-UINT64
-EFIAPI
-AsmWritePmv (
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Corrected Machine Check Vector Register (CMCV).
-
- Writes the current value of CMCV. The 64-bit value written to the CMCV is returned.
- No parameter checking is performed on Value. All bits of Value corresponding
- to reserved fields of CMCV must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must set up
- fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to CMCV.
-
- @return The 64-bit value written to the CMCV.
-
-**/
-UINT64
-EFIAPI
-AsmWriteCmcv (
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Local Redirection Register #0 (LRR0).
-
- Writes the current value of LRR0. The 64-bit value written to the LRR0 is returned.
- No parameter checking is performed on Value. All bits of Value corresponding
- to reserved fields of LRR0 must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must set up
- fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to LRR0.
-
- @return The 64-bit value written to the LRR0.
-
-**/
-UINT64
-EFIAPI
-AsmWriteLrr0 (
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Local Redirection Register #1 (LRR1).
-
- Writes the current value of LRR1. The 64-bit value written to the LRR1 is returned.
- No parameter checking is performed on Value. All bits of Value corresponding
- to reserved fields of LRR1 must be 0 or a Reserved Register/Field fault may occur.
- The caller must either guarantee that Value is valid, or the caller must
- set up fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to LRR1.
-
- @return The 64-bit value written to the LRR1.
-
-**/
-UINT64
-EFIAPI
-AsmWriteLrr1 (
- IN UINT64 Value
- );
-
-
-/**
- Reads the current value of Instruction Breakpoint Register (IBR).
-
- The Instruction Breakpoint Registers are used in pairs. The even numbered
- registers contain breakpoint addresses, and the odd numbered registers contain
- breakpoint mask conditions. At least four instruction registers pairs are implemented
- on all processor models. Implemented registers are contiguous starting with
- register 0. No parameter checking is performed on Index, and if the Index value
- is beyond the implemented IBR register range, a Reserved Register/Field fault may
- occur. The caller must either guarantee that Index is valid, or the caller must
- set up fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Index The 8-bit Instruction Breakpoint Register index to read.
-
- @return The current value of Instruction Breakpoint Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadIbr (
- IN UINT8 Index
- );
-
-
-/**
- Reads the current value of Data Breakpoint Register (DBR).
-
- The Data Breakpoint Registers are used in pairs. The even numbered registers
- contain breakpoint addresses, and odd numbered registers contain breakpoint
- mask conditions. At least four data registers pairs are implemented on all processor
- models. Implemented registers are contiguous starting with register 0.
- No parameter checking is performed on Index. If the Index value is beyond
- the implemented DBR register range, a Reserved Register/Field fault may occur.
- The caller must either guarantee that Index is valid, or the caller must set up
- fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Index The 8-bit Data Breakpoint Register index to read.
-
- @return The current value of Data Breakpoint Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadDbr (
- IN UINT8 Index
- );
-
-
-/**
- Reads the current value of Performance Monitor Configuration Register (PMC).
-
- All processor implementations provide at least four performance counters
- (PMC/PMD [4]...PMC/PMD [7] pairs), and four performance monitor counter overflow
- status registers (PMC [0]... PMC [3]). Processor implementations may provide
- additional implementation-dependent PMC and PMD to increase the number of
- 'generic' performance counters (PMC/PMD pairs). The remainder of PMC and PMD
- register set is implementation dependent. No parameter checking is performed
- on Index. If the Index value is beyond the implemented PMC register range,
- zero value will be returned.
- This function is only available on Itanium processors.
-
- @param Index The 8-bit Performance Monitor Configuration Register index to read.
-
- @return The current value of Performance Monitor Configuration Register
- specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadPmc (
- IN UINT8 Index
- );
-
-
-/**
- Reads the current value of Performance Monitor Data Register (PMD).
-
- All processor implementations provide at least 4 performance counters
- (PMC/PMD [4]...PMC/PMD [7] pairs), and 4 performance monitor counter
- overflow status registers (PMC [0]... PMC [3]). Processor implementations may
- provide additional implementation-dependent PMC and PMD to increase the number
- of 'generic' performance counters (PMC/PMD pairs). The remainder of PMC and PMD
- register set is implementation dependent. No parameter checking is performed
- on Index. If the Index value is beyond the implemented PMD register range,
- zero value will be returned.
- This function is only available on Itanium processors.
-
- @param Index The 8-bit Performance Monitor Data Register index to read.
-
- @return The current value of Performance Monitor Data Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadPmd (
- IN UINT8 Index
- );
-
-
-/**
- Writes the current value of 64-bit Instruction Breakpoint Register (IBR).
-
- Writes current value of Instruction Breakpoint Register specified by Index.
- The Instruction Breakpoint Registers are used in pairs. The even numbered
- registers contain breakpoint addresses, and odd numbered registers contain
- breakpoint mask conditions. At least four instruction registers pairs are implemented
- on all processor models. Implemented registers are contiguous starting with
- register 0. No parameter checking is performed on Index. If the Index value
- is beyond the implemented IBR register range, a Reserved Register/Field fault may
- occur. The caller must either guarantee that Index is valid, or the caller must
- set up fault handlers to catch the faults.
- This function is only available on Itanium processors.
-
- @param Index The 8-bit Instruction Breakpoint Register index to write.
- @param Value The 64-bit value to write to IBR.
-
- @return The 64-bit value written to the IBR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteIbr (
- IN UINT8 Index,
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Data Breakpoint Register (DBR).
-
- Writes current value of Data Breakpoint Register specified by Index.
- The Data Breakpoint Registers are used in pairs. The even numbered registers
- contain breakpoint addresses, and odd numbered registers contain breakpoint
- mask conditions. At least four data registers pairs are implemented on all processor
- models. Implemented registers are contiguous starting with register 0. No parameter
- checking is performed on Index. If the Index value is beyond the implemented
- DBR register range, a Reserved Register/Field fault may occur. The caller must
- either guarantee that Index is valid, or the caller must set up fault handlers to
- catch the faults.
- This function is only available on Itanium processors.
-
- @param Index The 8-bit Data Breakpoint Register index to write.
- @param Value The 64-bit value to write to DBR.
-
- @return The 64-bit value written to the DBR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteDbr (
- IN UINT8 Index,
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Performance Monitor Configuration Register (PMC).
-
- Writes current value of Performance Monitor Configuration Register specified by Index.
- All processor implementations provide at least four performance counters
- (PMC/PMD [4]...PMC/PMD [7] pairs), and four performance monitor counter overflow status
- registers (PMC [0]... PMC [3]). Processor implementations may provide additional
- implementation-dependent PMC and PMD to increase the number of 'generic' performance
- counters (PMC/PMD pairs). The remainder of PMC and PMD register set is implementation
- dependent. No parameter checking is performed on Index. If the Index value is
- beyond the implemented PMC register range, the write is ignored.
- This function is only available on Itanium processors.
-
- @param Index The 8-bit Performance Monitor Configuration Register index to write.
- @param Value The 64-bit value to write to PMC.
-
- @return The 64-bit value written to the PMC.
-
-**/
-UINT64
-EFIAPI
-AsmWritePmc (
- IN UINT8 Index,
- IN UINT64 Value
- );
-
-
-/**
- Writes the current value of 64-bit Performance Monitor Data Register (PMD).
-
- Writes current value of Performance Monitor Data Register specified by Index.
- All processor implementations provide at least four performance counters
- (PMC/PMD [4]...PMC/PMD [7] pairs), and four performance monitor counter overflow
- status registers (PMC [0]... PMC [3]). Processor implementations may provide
- additional implementation-dependent PMC and PMD to increase the number of 'generic'
- performance counters (PMC/PMD pairs). The remainder of PMC and PMD register set
- is implementation dependent. No parameter checking is performed on Index. If the
- Index value is beyond the implemented PMD register range, the write is ignored.
- This function is only available on Itanium processors.
-
- @param Index The 8-bit Performance Monitor Data Register index to write.
- @param Value The 64-bit value to write to PMD.
-
- @return The 64-bit value written to the PMD.
-
-**/
-UINT64
-EFIAPI
-AsmWritePmd (
- IN UINT8 Index,
- IN UINT64 Value
- );
-
-
-/**
- Reads the current value of 64-bit Global Pointer (GP).
-
- Reads and returns the current value of GP.
- This function is only available on Itanium processors.
-
- @return The current value of GP.
-
-**/
-UINT64
-EFIAPI
-AsmReadGp (
- VOID
- );
-
-
-/**
- Write the current value of 64-bit Global Pointer (GP).
-
- Writes the current value of GP. The 64-bit value written to the GP is returned.
- No parameter checking is performed on Value.
- This function is only available on Itanium processors.
-
- @param Value The 64-bit value to write to GP.
-
- @return The 64-bit value written to the GP.
-
-**/
-UINT64
-EFIAPI
-AsmWriteGp (
- IN UINT64 Value
- );
-
-
-/**
- Reads the current value of 64-bit Stack Pointer (SP).
-
- Reads and returns the current value of SP.
- This function is only available on Itanium processors.
-
- @return The current value of SP.
-
-**/
-UINT64
-EFIAPI
-AsmReadSp (
- VOID
- );
-
-
-///
-/// Valid Index value for AsmReadControlRegister().
-///
-#define IPF_CONTROL_REGISTER_DCR 0
-#define IPF_CONTROL_REGISTER_ITM 1
-#define IPF_CONTROL_REGISTER_IVA 2
-#define IPF_CONTROL_REGISTER_PTA 8
-#define IPF_CONTROL_REGISTER_IPSR 16
-#define IPF_CONTROL_REGISTER_ISR 17
-#define IPF_CONTROL_REGISTER_IIP 19
-#define IPF_CONTROL_REGISTER_IFA 20
-#define IPF_CONTROL_REGISTER_ITIR 21
-#define IPF_CONTROL_REGISTER_IIPA 22
-#define IPF_CONTROL_REGISTER_IFS 23
-#define IPF_CONTROL_REGISTER_IIM 24
-#define IPF_CONTROL_REGISTER_IHA 25
-#define IPF_CONTROL_REGISTER_LID 64
-#define IPF_CONTROL_REGISTER_IVR 65
-#define IPF_CONTROL_REGISTER_TPR 66
-#define IPF_CONTROL_REGISTER_EOI 67
-#define IPF_CONTROL_REGISTER_IRR0 68
-#define IPF_CONTROL_REGISTER_IRR1 69
-#define IPF_CONTROL_REGISTER_IRR2 70
-#define IPF_CONTROL_REGISTER_IRR3 71
-#define IPF_CONTROL_REGISTER_ITV 72
-#define IPF_CONTROL_REGISTER_PMV 73
-#define IPF_CONTROL_REGISTER_CMCV 74
-#define IPF_CONTROL_REGISTER_LRR0 80
-#define IPF_CONTROL_REGISTER_LRR1 81
-
-/**
- Reads a 64-bit control register.
-
- Reads and returns the control register specified by Index. The valid Index valued
- are defined above in "Related Definitions".
- If Index is invalid then 0xFFFFFFFFFFFFFFFF is returned. This function is only
- available on Itanium processors.
-
- @param Index The index of the control register to read.
-
- @return The control register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadControlRegister (
- IN UINT64 Index
- );
-
-
-///
-/// Valid Index value for AsmReadApplicationRegister().
-///
-#define IPF_APPLICATION_REGISTER_K0 0
-#define IPF_APPLICATION_REGISTER_K1 1
-#define IPF_APPLICATION_REGISTER_K2 2
-#define IPF_APPLICATION_REGISTER_K3 3
-#define IPF_APPLICATION_REGISTER_K4 4
-#define IPF_APPLICATION_REGISTER_K5 5
-#define IPF_APPLICATION_REGISTER_K6 6
-#define IPF_APPLICATION_REGISTER_K7 7
-#define IPF_APPLICATION_REGISTER_RSC 16
-#define IPF_APPLICATION_REGISTER_BSP 17
-#define IPF_APPLICATION_REGISTER_BSPSTORE 18
-#define IPF_APPLICATION_REGISTER_RNAT 19
-#define IPF_APPLICATION_REGISTER_FCR 21
-#define IPF_APPLICATION_REGISTER_EFLAG 24
-#define IPF_APPLICATION_REGISTER_CSD 25
-#define IPF_APPLICATION_REGISTER_SSD 26
-#define IPF_APPLICATION_REGISTER_CFLG 27
-#define IPF_APPLICATION_REGISTER_FSR 28
-#define IPF_APPLICATION_REGISTER_FIR 29
-#define IPF_APPLICATION_REGISTER_FDR 30
-#define IPF_APPLICATION_REGISTER_CCV 32
-#define IPF_APPLICATION_REGISTER_UNAT 36
-#define IPF_APPLICATION_REGISTER_FPSR 40
-#define IPF_APPLICATION_REGISTER_ITC 44
-#define IPF_APPLICATION_REGISTER_PFS 64
-#define IPF_APPLICATION_REGISTER_LC 65
-#define IPF_APPLICATION_REGISTER_EC 66
-
-/**
- Reads a 64-bit application register.
-
- Reads and returns the application register specified by Index. The valid Index
- valued are defined above in "Related Definitions".
- If Index is invalid then 0xFFFFFFFFFFFFFFFF is returned. This function is only
- available on Itanium processors.
-
- @param Index The index of the application register to read.
-
- @return The application register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadApplicationRegister (
- IN UINT64 Index
- );
-
-
-/**
- Reads the current value of a Machine Specific Register (MSR).
-
- Reads and returns the current value of the Machine Specific Register specified by Index. No
- parameter checking is performed on Index, and if the Index value is beyond the implemented MSR
- register range, a Reserved Register/Field fault may occur. The caller must either guarantee that
- Index is valid, or the caller must set up fault handlers to catch the faults. This function is
- only available on Itanium processors.
-
- @param Index The 8-bit Machine Specific Register index to read.
-
- @return The current value of the Machine Specific Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadMsr (
- IN UINT8 Index
- );
-
-
-/**
- Writes the current value of a Machine Specific Register (MSR).
-
- Writes Value to the Machine Specific Register specified by Index. Value is returned. No
- parameter checking is performed on Index, and if the Index value is beyond the implemented MSR
- register range, a Reserved Register/Field fault may occur. The caller must either guarantee that
- Index is valid, or the caller must set up fault handlers to catch the faults. This function is
- only available on Itanium processors.
-
- @param Index The 8-bit Machine Specific Register index to write.
- @param Value The 64-bit value to write to the Machine Specific Register.
-
- @return The 64-bit value to write to the Machine Specific Register.
-
-**/
-UINT64
-EFIAPI
-AsmWriteMsr (
- IN UINT8 Index,
- IN UINT64 Value
- );
-
-
-/**
- Determines if the CPU is currently executing in virtual, physical, or mixed mode.
-
- Determines the current execution mode of the CPU.
- If the CPU is in virtual mode(PSR.RT=1, PSR.DT=1, PSR.IT=1), then 1 is returned.
- If the CPU is in physical mode(PSR.RT=0, PSR.DT=0, PSR.IT=0), then 0 is returned.
- If the CPU is not in physical mode or virtual mode, then it is in mixed mode,
- and -1 is returned.
- This function is only available on Itanium processors.
-
- @retval 1 The CPU is in virtual mode.
- @retval 0 The CPU is in physical mode.
- @retval -1 The CPU is in mixed mode.
-
-**/
-INT64
-EFIAPI
-AsmCpuVirtual (
- VOID
- );
-
-
-/**
- Makes a PAL procedure call.
-
- This is a wrapper function to make a PAL procedure call. Based on the Index
- value this API will make static or stacked PAL call. The following table
- describes the usage of PAL Procedure Index Assignment. Architected procedures
- may be designated as required or optional. If a PAL procedure is specified
- as optional, a unique return code of 0xFFFFFFFFFFFFFFFF is returned in the
- Status field of the PAL_CALL_RETURN structure.
- This indicates that the procedure is not present in this PAL implementation.
- It is the caller's responsibility to check for this return code after calling
- any optional PAL procedure.
- No parameter checking is performed on the 5 input parameters, but there are
- some common rules that the caller should follow when making a PAL call. Any
- address passed to PAL as buffers for return parameters must be 8-byte aligned.
- Unaligned addresses may cause undefined results. For those parameters defined
- as reserved or some fields defined as reserved must be zero filled or the invalid
- argument return value may be returned or undefined result may occur during the
- execution of the procedure. If the PalEntryPoint does not point to a valid
- PAL entry point then the system behavior is undefined. This function is only
- available on Itanium processors.
-
- @param PalEntryPoint The PAL procedure calls entry point.
- @param Index The PAL procedure Index number.
- @param Arg2 The 2nd parameter for PAL procedure calls.
- @param Arg3 The 3rd parameter for PAL procedure calls.
- @param Arg4 The 4th parameter for PAL procedure calls.
-
- @return structure returned from the PAL Call procedure, including the status and return value.
-
-**/
-PAL_CALL_RETURN
-EFIAPI
-AsmPalCall (
- IN UINT64 PalEntryPoint,
- IN UINT64 Index,
- IN UINT64 Arg2,
- IN UINT64 Arg3,
- IN UINT64 Arg4
- );
-#endif
-
#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
///
/// IA32 and x64 Specific Functions.
/// Byte packed structure for 16-bit Real Mode EFLAGS.
///
typedef union {
struct {
UINT32 CF:1; ///< Carry Flag.
UINT32 Reserved_0:1; ///< Reserved.
UINT32 PF:1; ///< Parity Flag.
UINT32 Reserved_1:1; ///< Reserved.
UINT32 AF:1; ///< Auxiliary Carry Flag.
UINT32 Reserved_2:1; ///< Reserved.
UINT32 ZF:1; ///< Zero Flag.
UINT32 SF:1; ///< Sign Flag.
UINT32 TF:1; ///< Trap Flag.
UINT32 IF:1; ///< Interrupt Enable Flag.
UINT32 DF:1; ///< Direction Flag.
UINT32 OF:1; ///< Overflow Flag.
UINT32 IOPL:2; ///< I/O Privilege Level.
UINT32 NT:1; ///< Nested Task.
UINT32 Reserved_3:1; ///< Reserved.
} Bits;
UINT16 Uint16;
} IA32_FLAGS16;
///
/// Byte packed structure for EFLAGS/RFLAGS.
/// 32-bits on IA-32.
/// 64-bits on x64. The upper 32-bits on x64 are reserved.
///
typedef union {
struct {
UINT32 CF:1; ///< Carry Flag.
UINT32 Reserved_0:1; ///< Reserved.
UINT32 PF:1; ///< Parity Flag.
UINT32 Reserved_1:1; ///< Reserved.
UINT32 AF:1; ///< Auxiliary Carry Flag.
UINT32 Reserved_2:1; ///< Reserved.
UINT32 ZF:1; ///< Zero Flag.
UINT32 SF:1; ///< Sign Flag.
UINT32 TF:1; ///< Trap Flag.
UINT32 IF:1; ///< Interrupt Enable Flag.
UINT32 DF:1; ///< Direction Flag.
UINT32 OF:1; ///< Overflow Flag.
UINT32 IOPL:2; ///< I/O Privilege Level.
UINT32 NT:1; ///< Nested Task.
UINT32 Reserved_3:1; ///< Reserved.
UINT32 RF:1; ///< Resume Flag.
UINT32 VM:1; ///< Virtual 8086 Mode.
UINT32 AC:1; ///< Alignment Check.
UINT32 VIF:1; ///< Virtual Interrupt Flag.
UINT32 VIP:1; ///< Virtual Interrupt Pending.
UINT32 ID:1; ///< ID Flag.
UINT32 Reserved_4:10; ///< Reserved.
} Bits;
UINTN UintN;
} IA32_EFLAGS32;
///
/// Byte packed structure for Control Register 0 (CR0).
/// 32-bits on IA-32.
/// 64-bits on x64. The upper 32-bits on x64 are reserved.
///
typedef union {
struct {
UINT32 PE:1; ///< Protection Enable.
UINT32 MP:1; ///< Monitor Coprocessor.
UINT32 EM:1; ///< Emulation.
UINT32 TS:1; ///< Task Switched.
UINT32 ET:1; ///< Extension Type.
UINT32 NE:1; ///< Numeric Error.
UINT32 Reserved_0:10; ///< Reserved.
UINT32 WP:1; ///< Write Protect.
UINT32 Reserved_1:1; ///< Reserved.
UINT32 AM:1; ///< Alignment Mask.
UINT32 Reserved_2:10; ///< Reserved.
UINT32 NW:1; ///< Mot Write-through.
UINT32 CD:1; ///< Cache Disable.
UINT32 PG:1; ///< Paging.
} Bits;
UINTN UintN;
} IA32_CR0;
///
/// Byte packed structure for Control Register 4 (CR4).
/// 32-bits on IA-32.
/// 64-bits on x64. The upper 32-bits on x64 are reserved.
///
typedef union {
struct {
UINT32 VME:1; ///< Virtual-8086 Mode Extensions.
UINT32 PVI:1; ///< Protected-Mode Virtual Interrupts.
UINT32 TSD:1; ///< Time Stamp Disable.
UINT32 DE:1; ///< Debugging Extensions.
UINT32 PSE:1; ///< Page Size Extensions.
UINT32 PAE:1; ///< Physical Address Extension.
UINT32 MCE:1; ///< Machine Check Enable.
UINT32 PGE:1; ///< Page Global Enable.
UINT32 PCE:1; ///< Performance Monitoring Counter
///< Enable.
UINT32 OSFXSR:1; ///< Operating System Support for
///< FXSAVE and FXRSTOR instructions
UINT32 OSXMMEXCPT:1; ///< Operating System Support for
///< Unmasked SIMD Floating Point
///< Exceptions.
- UINT32 Reserved_0:2; ///< Reserved.
- UINT32 VMXE:1; ///< VMX Enable
- UINT32 Reserved_1:18; ///< Reserved.
+ UINT32 UMIP:1; ///< User-Mode Instruction Prevention.
+ UINT32 LA57:1; ///< Linear Address 57bit.
+ UINT32 VMXE:1; ///< VMX Enable.
+ UINT32 SMXE:1; ///< SMX Enable.
+ UINT32 Reserved_3:1; ///< Reserved.
+ UINT32 FSGSBASE:1; ///< FSGSBASE Enable.
+ UINT32 PCIDE:1; ///< PCID Enable.
+ UINT32 OSXSAVE:1; ///< XSAVE and Processor Extended States Enable.
+ UINT32 Reserved_4:1; ///< Reserved.
+ UINT32 SMEP:1; ///< SMEP Enable.
+ UINT32 SMAP:1; ///< SMAP Enable.
+ UINT32 PKE:1; ///< Protection-Key Enable.
+ UINT32 Reserved_5:9; ///< Reserved.
} Bits;
UINTN UintN;
} IA32_CR4;
///
/// Byte packed structure for a segment descriptor in a GDT/LDT.
///
typedef union {
struct {
UINT32 LimitLow:16;
UINT32 BaseLow:16;
UINT32 BaseMid:8;
UINT32 Type:4;
UINT32 S:1;
UINT32 DPL:2;
UINT32 P:1;
UINT32 LimitHigh:4;
UINT32 AVL:1;
UINT32 L:1;
UINT32 DB:1;
UINT32 G:1;
UINT32 BaseHigh:8;
} Bits;
UINT64 Uint64;
} IA32_SEGMENT_DESCRIPTOR;
///
/// Byte packed structure for an IDTR, GDTR, LDTR descriptor.
///
#pragma pack (1)
typedef struct {
UINT16 Limit;
UINTN Base;
} IA32_DESCRIPTOR;
#pragma pack ()
#define IA32_IDT_GATE_TYPE_TASK 0x85
#define IA32_IDT_GATE_TYPE_INTERRUPT_16 0x86
#define IA32_IDT_GATE_TYPE_TRAP_16 0x87
#define IA32_IDT_GATE_TYPE_INTERRUPT_32 0x8E
#define IA32_IDT_GATE_TYPE_TRAP_32 0x8F
+#define IA32_GDT_TYPE_TSS 0x9
+#define IA32_GDT_ALIGNMENT 8
#if defined (MDE_CPU_IA32)
///
/// Byte packed structure for an IA-32 Interrupt Gate Descriptor.
///
typedef union {
struct {
UINT32 OffsetLow:16; ///< Offset bits 15..0.
UINT32 Selector:16; ///< Selector.
UINT32 Reserved_0:8; ///< Reserved.
UINT32 GateType:8; ///< Gate Type. See #defines above.
UINT32 OffsetHigh:16; ///< Offset bits 31..16.
} Bits;
UINT64 Uint64;
} IA32_IDT_GATE_DESCRIPTOR;
-#endif
+#pragma pack (1)
+//
+// IA32 Task-State Segment Definition
+//
+typedef struct {
+ UINT16 PreviousTaskLink;
+ UINT16 Reserved_2;
+ UINT32 ESP0;
+ UINT16 SS0;
+ UINT16 Reserved_10;
+ UINT32 ESP1;
+ UINT16 SS1;
+ UINT16 Reserved_18;
+ UINT32 ESP2;
+ UINT16 SS2;
+ UINT16 Reserved_26;
+ UINT32 CR3;
+ UINT32 EIP;
+ UINT32 EFLAGS;
+ UINT32 EAX;
+ UINT32 ECX;
+ UINT32 EDX;
+ UINT32 EBX;
+ UINT32 ESP;
+ UINT32 EBP;
+ UINT32 ESI;
+ UINT32 EDI;
+ UINT16 ES;
+ UINT16 Reserved_74;
+ UINT16 CS;
+ UINT16 Reserved_78;
+ UINT16 SS;
+ UINT16 Reserved_82;
+ UINT16 DS;
+ UINT16 Reserved_86;
+ UINT16 FS;
+ UINT16 Reserved_90;
+ UINT16 GS;
+ UINT16 Reserved_94;
+ UINT16 LDTSegmentSelector;
+ UINT16 Reserved_98;
+ UINT16 T;
+ UINT16 IOMapBaseAddress;
+} IA32_TASK_STATE_SEGMENT;
+typedef union {
+ struct {
+ UINT32 LimitLow:16; ///< Segment Limit 15..00
+ UINT32 BaseLow:16; ///< Base Address 15..00
+ UINT32 BaseMid:8; ///< Base Address 23..16
+ UINT32 Type:4; ///< Type (1 0 B 1)
+ UINT32 Reserved_43:1; ///< 0
+ UINT32 DPL:2; ///< Descriptor Privilege Level
+ UINT32 P:1; ///< Segment Present
+ UINT32 LimitHigh:4; ///< Segment Limit 19..16
+ UINT32 AVL:1; ///< Available for use by system software
+ UINT32 Reserved_52:2; ///< 0 0
+ UINT32 G:1; ///< Granularity
+ UINT32 BaseHigh:8; ///< Base Address 31..24
+ } Bits;
+ UINT64 Uint64;
+} IA32_TSS_DESCRIPTOR;
+#pragma pack ()
+
+#endif // defined (MDE_CPU_IA32)
+
#if defined (MDE_CPU_X64)
///
/// Byte packed structure for an x64 Interrupt Gate Descriptor.
///
typedef union {
struct {
UINT32 OffsetLow:16; ///< Offset bits 15..0.
UINT32 Selector:16; ///< Selector.
UINT32 Reserved_0:8; ///< Reserved.
UINT32 GateType:8; ///< Gate Type. See #defines above.
UINT32 OffsetHigh:16; ///< Offset bits 31..16.
UINT32 OffsetUpper:32; ///< Offset bits 63..32.
UINT32 Reserved_1:32; ///< Reserved.
} Bits;
struct {
UINT64 Uint64;
UINT64 Uint64_1;
- } Uint128;
+ } Uint128;
} IA32_IDT_GATE_DESCRIPTOR;
-#endif
+#pragma pack (1)
+//
+// IA32 Task-State Segment Definition
+//
+typedef struct {
+ UINT32 Reserved_0;
+ UINT64 RSP0;
+ UINT64 RSP1;
+ UINT64 RSP2;
+ UINT64 Reserved_28;
+ UINT64 IST[7];
+ UINT64 Reserved_92;
+ UINT16 Reserved_100;
+ UINT16 IOMapBaseAddress;
+} IA32_TASK_STATE_SEGMENT;
+typedef union {
+ struct {
+ UINT32 LimitLow:16; ///< Segment Limit 15..00
+ UINT32 BaseLow:16; ///< Base Address 15..00
+ UINT32 BaseMidl:8; ///< Base Address 23..16
+ UINT32 Type:4; ///< Type (1 0 B 1)
+ UINT32 Reserved_43:1; ///< 0
+ UINT32 DPL:2; ///< Descriptor Privilege Level
+ UINT32 P:1; ///< Segment Present
+ UINT32 LimitHigh:4; ///< Segment Limit 19..16
+ UINT32 AVL:1; ///< Available for use by system software
+ UINT32 Reserved_52:2; ///< 0 0
+ UINT32 G:1; ///< Granularity
+ UINT32 BaseMidh:8; ///< Base Address 31..24
+ UINT32 BaseHigh:32; ///< Base Address 63..32
+ UINT32 Reserved_96:32; ///< Reserved
+ } Bits;
+ struct {
+ UINT64 Uint64;
+ UINT64 Uint64_1;
+ } Uint128;
+} IA32_TSS_DESCRIPTOR;
+#pragma pack ()
+
+#endif // defined (MDE_CPU_X64)
+
///
/// Byte packed structure for an FP/SSE/SSE2 context.
///
typedef struct {
UINT8 Buffer[512];
} IA32_FX_BUFFER;
///
/// Structures for the 16-bit real mode thunks.
///
typedef struct {
UINT32 Reserved1;
UINT32 Reserved2;
UINT32 Reserved3;
UINT32 Reserved4;
UINT8 BL;
UINT8 BH;
UINT16 Reserved5;
UINT8 DL;
UINT8 DH;
UINT16 Reserved6;
UINT8 CL;
UINT8 CH;
UINT16 Reserved7;
UINT8 AL;
UINT8 AH;
UINT16 Reserved8;
} IA32_BYTE_REGS;
typedef struct {
UINT16 DI;
UINT16 Reserved1;
UINT16 SI;
UINT16 Reserved2;
UINT16 BP;
UINT16 Reserved3;
UINT16 SP;
UINT16 Reserved4;
UINT16 BX;
UINT16 Reserved5;
UINT16 DX;
UINT16 Reserved6;
UINT16 CX;
UINT16 Reserved7;
UINT16 AX;
UINT16 Reserved8;
} IA32_WORD_REGS;
typedef struct {
UINT32 EDI;
UINT32 ESI;
UINT32 EBP;
UINT32 ESP;
UINT32 EBX;
UINT32 EDX;
UINT32 ECX;
UINT32 EAX;
UINT16 DS;
UINT16 ES;
UINT16 FS;
UINT16 GS;
IA32_EFLAGS32 EFLAGS;
UINT32 Eip;
UINT16 CS;
UINT16 SS;
} IA32_DWORD_REGS;
typedef union {
IA32_DWORD_REGS E;
IA32_WORD_REGS X;
IA32_BYTE_REGS H;
} IA32_REGISTER_SET;
///
/// Byte packed structure for an 16-bit real mode thunks.
///
typedef struct {
IA32_REGISTER_SET *RealModeState;
VOID *RealModeBuffer;
UINT32 RealModeBufferSize;
UINT32 ThunkAttributes;
} THUNK_CONTEXT;
#define THUNK_ATTRIBUTE_BIG_REAL_MODE 0x00000001
#define THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 0x00000002
#define THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL 0x00000004
+///
+/// Type definition for representing labels in NASM source code that allow for
+/// the patching of immediate operands of IA32 and X64 instructions.
+///
+/// While the type is technically defined as a function type (note: not a
+/// pointer-to-function type), such labels in NASM source code never stand for
+/// actual functions, and identifiers declared with this function type should
+/// never be called. This is also why the EFIAPI calling convention specifier
+/// is missing from the typedef, and why the typedef does not follow the usual
+/// edk2 coding style for function (or pointer-to-function) typedefs. The VOID
+/// return type and the VOID argument list are merely artifacts.
+///
+typedef VOID (X86_ASSEMBLY_PATCH_LABEL) (VOID);
+
/**
Retrieves CPUID information.
Executes the CPUID instruction with EAX set to the value specified by Index.
This function always returns Index.
If Eax is not NULL, then the value of EAX after CPUID is returned in Eax.
If Ebx is not NULL, then the value of EBX after CPUID is returned in Ebx.
If Ecx is not NULL, then the value of ECX after CPUID is returned in Ecx.
If Edx is not NULL, then the value of EDX after CPUID is returned in Edx.
This function is only available on IA-32 and x64.
@param Index The 32-bit value to load into EAX prior to invoking the CPUID
instruction.
@param Eax The pointer to the 32-bit EAX value returned by the CPUID
instruction. This is an optional parameter that may be NULL.
@param Ebx The pointer to the 32-bit EBX value returned by the CPUID
instruction. This is an optional parameter that may be NULL.
@param Ecx The pointer to the 32-bit ECX value returned by the CPUID
instruction. This is an optional parameter that may be NULL.
@param Edx The pointer to the 32-bit EDX value returned by the CPUID
instruction. This is an optional parameter that may be NULL.
@return Index.
**/
UINT32
EFIAPI
AsmCpuid (
IN UINT32 Index,
OUT UINT32 *Eax, OPTIONAL
OUT UINT32 *Ebx, OPTIONAL
OUT UINT32 *Ecx, OPTIONAL
OUT UINT32 *Edx OPTIONAL
);
/**
Retrieves CPUID information using an extended leaf identifier.
Executes the CPUID instruction with EAX set to the value specified by Index
and ECX set to the value specified by SubIndex. This function always returns
Index. This function is only available on IA-32 and x64.
If Eax is not NULL, then the value of EAX after CPUID is returned in Eax.
If Ebx is not NULL, then the value of EBX after CPUID is returned in Ebx.
If Ecx is not NULL, then the value of ECX after CPUID is returned in Ecx.
If Edx is not NULL, then the value of EDX after CPUID is returned in Edx.
@param Index The 32-bit value to load into EAX prior to invoking the
CPUID instruction.
@param SubIndex The 32-bit value to load into ECX prior to invoking the
CPUID instruction.
@param Eax The pointer to the 32-bit EAX value returned by the CPUID
instruction. This is an optional parameter that may be
NULL.
@param Ebx The pointer to the 32-bit EBX value returned by the CPUID
instruction. This is an optional parameter that may be
NULL.
@param Ecx The pointer to the 32-bit ECX value returned by the CPUID
instruction. This is an optional parameter that may be
NULL.
@param Edx The pointer to the 32-bit EDX value returned by the CPUID
instruction. This is an optional parameter that may be
NULL.
@return Index.
**/
UINT32
EFIAPI
AsmCpuidEx (
IN UINT32 Index,
IN UINT32 SubIndex,
OUT UINT32 *Eax, OPTIONAL
OUT UINT32 *Ebx, OPTIONAL
OUT UINT32 *Ecx, OPTIONAL
OUT UINT32 *Edx OPTIONAL
);
/**
Set CD bit and clear NW bit of CR0 followed by a WBINVD.
Disables the caches by setting the CD bit of CR0 to 1, clearing the NW bit of CR0 to 0,
and executing a WBINVD instruction. This function is only available on IA-32 and x64.
**/
VOID
EFIAPI
AsmDisableCache (
VOID
);
/**
Perform a WBINVD and clear both the CD and NW bits of CR0.
Enables the caches by executing a WBINVD instruction and then clear both the CD and NW
bits of CR0 to 0. This function is only available on IA-32 and x64.
**/
VOID
EFIAPI
AsmEnableCache (
VOID
);
/**
Returns the lower 32-bits of a Machine Specific Register(MSR).
Reads and returns the lower 32-bits of the MSR specified by Index.
No parameter checking is performed on Index, and some Index values may cause
CPU exceptions. The caller must either guarantee that Index is valid, or the
caller must set up exception handlers to catch the exceptions. This function
is only available on IA-32 and x64.
@param Index The 32-bit MSR index to read.
@return The lower 32 bits of the MSR identified by Index.
**/
UINT32
EFIAPI
AsmReadMsr32 (
IN UINT32 Index
);
/**
Writes a 32-bit value to a Machine Specific Register(MSR), and returns the value.
The upper 32-bits of the MSR are set to zero.
Writes the 32-bit value specified by Value to the MSR specified by Index. The
upper 32-bits of the MSR write are set to zero. The 32-bit value written to
the MSR is returned. No parameter checking is performed on Index or Value,
and some of these may cause CPU exceptions. The caller must either guarantee
that Index and Value are valid, or the caller must establish proper exception
handlers. This function is only available on IA-32 and x64.
@param Index The 32-bit MSR index to write.
@param Value The 32-bit value to write to the MSR.
@return Value
**/
UINT32
EFIAPI
AsmWriteMsr32 (
IN UINT32 Index,
IN UINT32 Value
);
/**
Reads a 64-bit MSR, performs a bitwise OR on the lower 32-bits, and
writes the result back to the 64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise OR
between the lower 32-bits of the read result and the value specified by
OrData, and writes the result to the 64-bit MSR specified by Index. The lower
32-bits of the value written to the MSR is returned. No parameter checking is
performed on Index or OrData, and some of these may cause CPU exceptions. The
caller must either guarantee that Index and OrData are valid, or the caller
must establish proper exception handlers. This function is only available on
IA-32 and x64.
@param Index The 32-bit MSR index to write.
@param OrData The value to OR with the read value from the MSR.
@return The lower 32-bit value written to the MSR.
**/
UINT32
EFIAPI
AsmMsrOr32 (
IN UINT32 Index,
IN UINT32 OrData
);
/**
Reads a 64-bit MSR, performs a bitwise AND on the lower 32-bits, and writes
the result back to the 64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
lower 32-bits of the read result and the value specified by AndData, and
writes the result to the 64-bit MSR specified by Index. The lower 32-bits of
the value written to the MSR is returned. No parameter checking is performed
on Index or AndData, and some of these may cause CPU exceptions. The caller
must either guarantee that Index and AndData are valid, or the caller must
establish proper exception handlers. This function is only available on IA-32
and x64.
@param Index The 32-bit MSR index to write.
@param AndData The value to AND with the read value from the MSR.
@return The lower 32-bit value written to the MSR.
**/
UINT32
EFIAPI
AsmMsrAnd32 (
IN UINT32 Index,
IN UINT32 AndData
);
/**
Reads a 64-bit MSR, performs a bitwise AND followed by a bitwise OR
on the lower 32-bits, and writes the result back to the 64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
lower 32-bits of the read result and the value specified by AndData
preserving the upper 32-bits, performs a bitwise OR between the
result of the AND operation and the value specified by OrData, and writes the
result to the 64-bit MSR specified by Address. The lower 32-bits of the value
written to the MSR is returned. No parameter checking is performed on Index,
AndData, or OrData, and some of these may cause CPU exceptions. The caller
must either guarantee that Index, AndData, and OrData are valid, or the
caller must establish proper exception handlers. This function is only
available on IA-32 and x64.
@param Index The 32-bit MSR index to write.
@param AndData The value to AND with the read value from the MSR.
@param OrData The value to OR with the result of the AND operation.
@return The lower 32-bit value written to the MSR.
**/
UINT32
EFIAPI
AsmMsrAndThenOr32 (
IN UINT32 Index,
IN UINT32 AndData,
IN UINT32 OrData
);
/**
Reads a bit field of an MSR.
Reads the bit field in the lower 32-bits of a 64-bit MSR. The bit field is
specified by the StartBit and the EndBit. The value of the bit field is
returned. The caller must either guarantee that Index is valid, or the caller
must set up exception handlers to catch the exceptions. This function is only
available on IA-32 and x64.
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
@param Index The 32-bit MSR index to read.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@return The bit field read from the MSR.
**/
UINT32
EFIAPI
AsmMsrBitFieldRead32 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit
);
/**
Writes a bit field to an MSR.
Writes Value to a bit field in the lower 32-bits of a 64-bit MSR. The bit
field is specified by the StartBit and the EndBit. All other bits in the
destination MSR are preserved. The lower 32-bits of the MSR written is
- returned. The caller must either guarantee that Index and the data written
- is valid, or the caller must set up exception handlers to catch the exceptions.
+ returned. The caller must either guarantee that Index and the data written
+ is valid, or the caller must set up exception handlers to catch the exceptions.
This function is only available on IA-32 and x64.
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Index The 32-bit MSR index to write.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@param Value New value of the bit field.
@return The lower 32-bit of the value written to the MSR.
**/
UINT32
EFIAPI
AsmMsrBitFieldWrite32 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 Value
);
/**
Reads a bit field in a 64-bit MSR, performs a bitwise OR, and writes the
result back to the bit field in the 64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise OR
between the read result and the value specified by OrData, and writes the
result to the 64-bit MSR specified by Index. The lower 32-bits of the value
written to the MSR are returned. Extra left bits in OrData are stripped. The
caller must either guarantee that Index and the data written is valid, or
the caller must set up exception handlers to catch the exceptions. This
function is only available on IA-32 and x64.
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Index The 32-bit MSR index to write.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@param OrData The value to OR with the read value from the MSR.
@return The lower 32-bit of the value written to the MSR.
**/
UINT32
EFIAPI
AsmMsrBitFieldOr32 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 OrData
);
/**
Reads a bit field in a 64-bit MSR, performs a bitwise AND, and writes the
result back to the bit field in the 64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
read result and the value specified by AndData, and writes the result to the
64-bit MSR specified by Index. The lower 32-bits of the value written to the
MSR are returned. Extra left bits in AndData are stripped. The caller must
either guarantee that Index and the data written is valid, or the caller must
set up exception handlers to catch the exceptions. This function is only
available on IA-32 and x64.
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Index The 32-bit MSR index to write.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@param AndData The value to AND with the read value from the MSR.
@return The lower 32-bit of the value written to the MSR.
**/
UINT32
EFIAPI
AsmMsrBitFieldAnd32 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 AndData
);
/**
Reads a bit field in a 64-bit MSR, performs a bitwise AND followed by a
bitwise OR, and writes the result back to the bit field in the
64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise AND followed by a
bitwise OR between the read result and the value specified by
AndData, and writes the result to the 64-bit MSR specified by Index. The
lower 32-bits of the value written to the MSR are returned. Extra left bits
in both AndData and OrData are stripped. The caller must either guarantee
that Index and the data written is valid, or the caller must set up exception
handlers to catch the exceptions. This function is only available on IA-32
and x64.
If StartBit is greater than 31, then ASSERT().
If EndBit is greater than 31, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Index The 32-bit MSR index to write.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..31.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..31.
@param AndData The value to AND with the read value from the MSR.
@param OrData The value to OR with the result of the AND operation.
@return The lower 32-bit of the value written to the MSR.
**/
UINT32
EFIAPI
AsmMsrBitFieldAndThenOr32 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 AndData,
IN UINT32 OrData
);
/**
Returns a 64-bit Machine Specific Register(MSR).
Reads and returns the 64-bit MSR specified by Index. No parameter checking is
performed on Index, and some Index values may cause CPU exceptions. The
caller must either guarantee that Index is valid, or the caller must set up
exception handlers to catch the exceptions. This function is only available
on IA-32 and x64.
@param Index The 32-bit MSR index to read.
@return The value of the MSR identified by Index.
**/
UINT64
EFIAPI
AsmReadMsr64 (
IN UINT32 Index
);
/**
Writes a 64-bit value to a Machine Specific Register(MSR), and returns the
value.
Writes the 64-bit value specified by Value to the MSR specified by Index. The
64-bit value written to the MSR is returned. No parameter checking is
performed on Index or Value, and some of these may cause CPU exceptions. The
caller must either guarantee that Index and Value are valid, or the caller
must establish proper exception handlers. This function is only available on
IA-32 and x64.
@param Index The 32-bit MSR index to write.
@param Value The 64-bit value to write to the MSR.
@return Value
**/
UINT64
EFIAPI
AsmWriteMsr64 (
IN UINT32 Index,
IN UINT64 Value
);
/**
Reads a 64-bit MSR, performs a bitwise OR, and writes the result
back to the 64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise OR
between the read result and the value specified by OrData, and writes the
result to the 64-bit MSR specified by Index. The value written to the MSR is
returned. No parameter checking is performed on Index or OrData, and some of
these may cause CPU exceptions. The caller must either guarantee that Index
and OrData are valid, or the caller must establish proper exception handlers.
This function is only available on IA-32 and x64.
@param Index The 32-bit MSR index to write.
@param OrData The value to OR with the read value from the MSR.
@return The value written back to the MSR.
**/
UINT64
EFIAPI
AsmMsrOr64 (
IN UINT32 Index,
IN UINT64 OrData
);
/**
Reads a 64-bit MSR, performs a bitwise AND, and writes the result back to the
64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
read result and the value specified by OrData, and writes the result to the
64-bit MSR specified by Index. The value written to the MSR is returned. No
parameter checking is performed on Index or OrData, and some of these may
cause CPU exceptions. The caller must either guarantee that Index and OrData
are valid, or the caller must establish proper exception handlers. This
function is only available on IA-32 and x64.
@param Index The 32-bit MSR index to write.
@param AndData The value to AND with the read value from the MSR.
@return The value written back to the MSR.
**/
UINT64
EFIAPI
AsmMsrAnd64 (
IN UINT32 Index,
IN UINT64 AndData
);
/**
- Reads a 64-bit MSR, performs a bitwise AND followed by a bitwise
+ Reads a 64-bit MSR, performs a bitwise AND followed by a bitwise
OR, and writes the result back to the 64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise AND between read
result and the value specified by AndData, performs a bitwise OR
between the result of the AND operation and the value specified by OrData,
and writes the result to the 64-bit MSR specified by Index. The value written
to the MSR is returned. No parameter checking is performed on Index, AndData,
or OrData, and some of these may cause CPU exceptions. The caller must either
guarantee that Index, AndData, and OrData are valid, or the caller must
establish proper exception handlers. This function is only available on IA-32
and x64.
@param Index The 32-bit MSR index to write.
@param AndData The value to AND with the read value from the MSR.
@param OrData The value to OR with the result of the AND operation.
@return The value written back to the MSR.
**/
UINT64
EFIAPI
AsmMsrAndThenOr64 (
IN UINT32 Index,
IN UINT64 AndData,
IN UINT64 OrData
);
/**
Reads a bit field of an MSR.
Reads the bit field in the 64-bit MSR. The bit field is specified by the
StartBit and the EndBit. The value of the bit field is returned. The caller
must either guarantee that Index is valid, or the caller must set up
exception handlers to catch the exceptions. This function is only available
on IA-32 and x64.
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
@param Index The 32-bit MSR index to read.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@return The value read from the MSR.
**/
UINT64
EFIAPI
AsmMsrBitFieldRead64 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit
);
/**
Writes a bit field to an MSR.
Writes Value to a bit field in a 64-bit MSR. The bit field is specified by
the StartBit and the EndBit. All other bits in the destination MSR are
- preserved. The MSR written is returned. The caller must either guarantee
- that Index and the data written is valid, or the caller must set up exception
+ preserved. The MSR written is returned. The caller must either guarantee
+ that Index and the data written is valid, or the caller must set up exception
handlers to catch the exceptions. This function is only available on IA-32 and x64.
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If Value is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Index The 32-bit MSR index to write.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@param Value New value of the bit field.
@return The value written back to the MSR.
**/
UINT64
EFIAPI
AsmMsrBitFieldWrite64 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 Value
);
/**
Reads a bit field in a 64-bit MSR, performs a bitwise OR, and
writes the result back to the bit field in the 64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise OR
between the read result and the value specified by OrData, and writes the
result to the 64-bit MSR specified by Index. The value written to the MSR is
returned. Extra left bits in OrData are stripped. The caller must either
guarantee that Index and the data written is valid, or the caller must set up
exception handlers to catch the exceptions. This function is only available
on IA-32 and x64.
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Index The 32-bit MSR index to write.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@param OrData The value to OR with the read value from the bit field.
@return The value written back to the MSR.
**/
UINT64
EFIAPI
AsmMsrBitFieldOr64 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 OrData
);
/**
Reads a bit field in a 64-bit MSR, performs a bitwise AND, and writes the
result back to the bit field in the 64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise AND between the
read result and the value specified by AndData, and writes the result to the
64-bit MSR specified by Index. The value written to the MSR is returned.
Extra left bits in AndData are stripped. The caller must either guarantee
that Index and the data written is valid, or the caller must set up exception
handlers to catch the exceptions. This function is only available on IA-32
and x64.
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Index The 32-bit MSR index to write.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@param AndData The value to AND with the read value from the bit field.
@return The value written back to the MSR.
**/
UINT64
EFIAPI
AsmMsrBitFieldAnd64 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 AndData
);
/**
Reads a bit field in a 64-bit MSR, performs a bitwise AND followed by a
bitwise OR, and writes the result back to the bit field in the
64-bit MSR.
Reads the 64-bit MSR specified by Index, performs a bitwise AND followed by
a bitwise OR between the read result and the value specified by
AndData, and writes the result to the 64-bit MSR specified by Index. The
value written to the MSR is returned. Extra left bits in both AndData and
OrData are stripped. The caller must either guarantee that Index and the data
written is valid, or the caller must set up exception handlers to catch the
exceptions. This function is only available on IA-32 and x64.
If StartBit is greater than 63, then ASSERT().
If EndBit is greater than 63, then ASSERT().
If EndBit is less than StartBit, then ASSERT().
If AndData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
If OrData is larger than the bitmask value range specified by StartBit and EndBit, then ASSERT().
@param Index The 32-bit MSR index to write.
@param StartBit The ordinal of the least significant bit in the bit field.
Range 0..63.
@param EndBit The ordinal of the most significant bit in the bit field.
Range 0..63.
@param AndData The value to AND with the read value from the bit field.
@param OrData The value to OR with the result of the AND operation.
@return The value written back to the MSR.
**/
UINT64
EFIAPI
AsmMsrBitFieldAndThenOr64 (
IN UINT32 Index,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 AndData,
IN UINT64 OrData
);
/**
Reads the current value of the EFLAGS register.
Reads and returns the current value of the EFLAGS register. This function is
only available on IA-32 and x64. This returns a 32-bit value on IA-32 and a
64-bit value on x64.
@return EFLAGS on IA-32 or RFLAGS on x64.
**/
UINTN
EFIAPI
AsmReadEflags (
VOID
);
/**
Reads the current value of the Control Register 0 (CR0).
Reads and returns the current value of CR0. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of the Control Register 0 (CR0).
**/
UINTN
EFIAPI
AsmReadCr0 (
VOID
);
/**
Reads the current value of the Control Register 2 (CR2).
Reads and returns the current value of CR2. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of the Control Register 2 (CR2).
**/
UINTN
EFIAPI
AsmReadCr2 (
VOID
);
/**
Reads the current value of the Control Register 3 (CR3).
Reads and returns the current value of CR3. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of the Control Register 3 (CR3).
**/
UINTN
EFIAPI
AsmReadCr3 (
VOID
);
/**
Reads the current value of the Control Register 4 (CR4).
Reads and returns the current value of CR4. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of the Control Register 4 (CR4).
**/
UINTN
EFIAPI
AsmReadCr4 (
VOID
);
/**
Writes a value to Control Register 0 (CR0).
Writes and returns a new value to CR0. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Cr0 The value to write to CR0.
@return The value written to CR0.
**/
UINTN
EFIAPI
AsmWriteCr0 (
UINTN Cr0
);
/**
Writes a value to Control Register 2 (CR2).
Writes and returns a new value to CR2. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Cr2 The value to write to CR2.
@return The value written to CR2.
**/
UINTN
EFIAPI
AsmWriteCr2 (
UINTN Cr2
);
/**
Writes a value to Control Register 3 (CR3).
Writes and returns a new value to CR3. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Cr3 The value to write to CR3.
@return The value written to CR3.
**/
UINTN
EFIAPI
AsmWriteCr3 (
UINTN Cr3
);
/**
Writes a value to Control Register 4 (CR4).
Writes and returns a new value to CR4. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Cr4 The value to write to CR4.
@return The value written to CR4.
**/
UINTN
EFIAPI
AsmWriteCr4 (
UINTN Cr4
);
/**
Reads the current value of Debug Register 0 (DR0).
Reads and returns the current value of DR0. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of Debug Register 0 (DR0).
**/
UINTN
EFIAPI
AsmReadDr0 (
VOID
);
/**
Reads the current value of Debug Register 1 (DR1).
Reads and returns the current value of DR1. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of Debug Register 1 (DR1).
**/
UINTN
EFIAPI
AsmReadDr1 (
VOID
);
/**
Reads the current value of Debug Register 2 (DR2).
Reads and returns the current value of DR2. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of Debug Register 2 (DR2).
**/
UINTN
EFIAPI
AsmReadDr2 (
VOID
);
/**
Reads the current value of Debug Register 3 (DR3).
Reads and returns the current value of DR3. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of Debug Register 3 (DR3).
**/
UINTN
EFIAPI
AsmReadDr3 (
VOID
);
/**
Reads the current value of Debug Register 4 (DR4).
Reads and returns the current value of DR4. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of Debug Register 4 (DR4).
**/
UINTN
EFIAPI
AsmReadDr4 (
VOID
);
/**
Reads the current value of Debug Register 5 (DR5).
Reads and returns the current value of DR5. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of Debug Register 5 (DR5).
**/
UINTN
EFIAPI
AsmReadDr5 (
VOID
);
/**
Reads the current value of Debug Register 6 (DR6).
Reads and returns the current value of DR6. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of Debug Register 6 (DR6).
**/
UINTN
EFIAPI
AsmReadDr6 (
VOID
);
/**
Reads the current value of Debug Register 7 (DR7).
Reads and returns the current value of DR7. This function is only available
on IA-32 and x64. This returns a 32-bit value on IA-32 and a 64-bit value on
x64.
@return The value of Debug Register 7 (DR7).
**/
UINTN
EFIAPI
AsmReadDr7 (
VOID
);
/**
Writes a value to Debug Register 0 (DR0).
Writes and returns a new value to DR0. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Dr0 The value to write to Dr0.
@return The value written to Debug Register 0 (DR0).
**/
UINTN
EFIAPI
AsmWriteDr0 (
UINTN Dr0
);
/**
Writes a value to Debug Register 1 (DR1).
Writes and returns a new value to DR1. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Dr1 The value to write to Dr1.
@return The value written to Debug Register 1 (DR1).
**/
UINTN
EFIAPI
AsmWriteDr1 (
UINTN Dr1
);
/**
Writes a value to Debug Register 2 (DR2).
Writes and returns a new value to DR2. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Dr2 The value to write to Dr2.
@return The value written to Debug Register 2 (DR2).
**/
UINTN
EFIAPI
AsmWriteDr2 (
UINTN Dr2
);
/**
Writes a value to Debug Register 3 (DR3).
Writes and returns a new value to DR3. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Dr3 The value to write to Dr3.
@return The value written to Debug Register 3 (DR3).
**/
UINTN
EFIAPI
AsmWriteDr3 (
UINTN Dr3
);
/**
Writes a value to Debug Register 4 (DR4).
Writes and returns a new value to DR4. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Dr4 The value to write to Dr4.
@return The value written to Debug Register 4 (DR4).
**/
UINTN
EFIAPI
AsmWriteDr4 (
UINTN Dr4
);
/**
Writes a value to Debug Register 5 (DR5).
Writes and returns a new value to DR5. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Dr5 The value to write to Dr5.
@return The value written to Debug Register 5 (DR5).
**/
UINTN
EFIAPI
AsmWriteDr5 (
UINTN Dr5
);
/**
Writes a value to Debug Register 6 (DR6).
Writes and returns a new value to DR6. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Dr6 The value to write to Dr6.
@return The value written to Debug Register 6 (DR6).
**/
UINTN
EFIAPI
AsmWriteDr6 (
UINTN Dr6
);
/**
Writes a value to Debug Register 7 (DR7).
Writes and returns a new value to DR7. This function is only available on
IA-32 and x64. This writes a 32-bit value on IA-32 and a 64-bit value on x64.
@param Dr7 The value to write to Dr7.
@return The value written to Debug Register 7 (DR7).
**/
UINTN
EFIAPI
AsmWriteDr7 (
UINTN Dr7
);
/**
Reads the current value of Code Segment Register (CS).
Reads and returns the current value of CS. This function is only available on
IA-32 and x64.
@return The current value of CS.
**/
UINT16
EFIAPI
AsmReadCs (
VOID
);
/**
Reads the current value of Data Segment Register (DS).
Reads and returns the current value of DS. This function is only available on
IA-32 and x64.
@return The current value of DS.
**/
UINT16
EFIAPI
AsmReadDs (
VOID
);
/**
Reads the current value of Extra Segment Register (ES).
Reads and returns the current value of ES. This function is only available on
IA-32 and x64.
@return The current value of ES.
**/
UINT16
EFIAPI
AsmReadEs (
VOID
);
/**
Reads the current value of FS Data Segment Register (FS).
Reads and returns the current value of FS. This function is only available on
IA-32 and x64.
@return The current value of FS.
**/
UINT16
EFIAPI
AsmReadFs (
VOID
);
/**
Reads the current value of GS Data Segment Register (GS).
Reads and returns the current value of GS. This function is only available on
IA-32 and x64.
@return The current value of GS.
**/
UINT16
EFIAPI
AsmReadGs (
VOID
);
/**
Reads the current value of Stack Segment Register (SS).
Reads and returns the current value of SS. This function is only available on
IA-32 and x64.
@return The current value of SS.
**/
UINT16
EFIAPI
AsmReadSs (
VOID
);
/**
Reads the current value of Task Register (TR).
Reads and returns the current value of TR. This function is only available on
IA-32 and x64.
@return The current value of TR.
**/
UINT16
EFIAPI
AsmReadTr (
VOID
);
/**
Reads the current Global Descriptor Table Register(GDTR) descriptor.
Reads and returns the current GDTR descriptor and returns it in Gdtr. This
function is only available on IA-32 and x64.
If Gdtr is NULL, then ASSERT().
@param Gdtr The pointer to a GDTR descriptor.
**/
VOID
EFIAPI
AsmReadGdtr (
OUT IA32_DESCRIPTOR *Gdtr
);
/**
Writes the current Global Descriptor Table Register (GDTR) descriptor.
Writes and the current GDTR descriptor specified by Gdtr. This function is
only available on IA-32 and x64.
If Gdtr is NULL, then ASSERT().
@param Gdtr The pointer to a GDTR descriptor.
**/
VOID
EFIAPI
AsmWriteGdtr (
IN CONST IA32_DESCRIPTOR *Gdtr
);
/**
Reads the current Interrupt Descriptor Table Register(IDTR) descriptor.
Reads and returns the current IDTR descriptor and returns it in Idtr. This
function is only available on IA-32 and x64.
If Idtr is NULL, then ASSERT().
@param Idtr The pointer to a IDTR descriptor.
**/
VOID
EFIAPI
AsmReadIdtr (
OUT IA32_DESCRIPTOR *Idtr
);
/**
Writes the current Interrupt Descriptor Table Register(IDTR) descriptor.
Writes the current IDTR descriptor and returns it in Idtr. This function is
only available on IA-32 and x64.
If Idtr is NULL, then ASSERT().
@param Idtr The pointer to a IDTR descriptor.
**/
VOID
EFIAPI
AsmWriteIdtr (
IN CONST IA32_DESCRIPTOR *Idtr
);
/**
Reads the current Local Descriptor Table Register(LDTR) selector.
Reads and returns the current 16-bit LDTR descriptor value. This function is
only available on IA-32 and x64.
@return The current selector of LDT.
**/
UINT16
EFIAPI
AsmReadLdtr (
VOID
);
/**
Writes the current Local Descriptor Table Register (LDTR) selector.
Writes and the current LDTR descriptor specified by Ldtr. This function is
only available on IA-32 and x64.
@param Ldtr 16-bit LDTR selector value.
**/
VOID
EFIAPI
AsmWriteLdtr (
IN UINT16 Ldtr
);
/**
Save the current floating point/SSE/SSE2 context to a buffer.
Saves the current floating point/SSE/SSE2 state to the buffer specified by
Buffer. Buffer must be aligned on a 16-byte boundary. This function is only
available on IA-32 and x64.
If Buffer is NULL, then ASSERT().
If Buffer is not aligned on a 16-byte boundary, then ASSERT().
@param Buffer The pointer to a buffer to save the floating point/SSE/SSE2 context.
**/
VOID
EFIAPI
AsmFxSave (
OUT IA32_FX_BUFFER *Buffer
);
/**
Restores the current floating point/SSE/SSE2 context from a buffer.
Restores the current floating point/SSE/SSE2 state from the buffer specified
by Buffer. Buffer must be aligned on a 16-byte boundary. This function is
only available on IA-32 and x64.
If Buffer is NULL, then ASSERT().
If Buffer is not aligned on a 16-byte boundary, then ASSERT().
If Buffer was not saved with AsmFxSave(), then ASSERT().
@param Buffer The pointer to a buffer to save the floating point/SSE/SSE2 context.
**/
VOID
EFIAPI
AsmFxRestore (
IN CONST IA32_FX_BUFFER *Buffer
);
/**
Reads the current value of 64-bit MMX Register #0 (MM0).
Reads and returns the current value of MM0. This function is only available
on IA-32 and x64.
@return The current value of MM0.
**/
UINT64
EFIAPI
AsmReadMm0 (
VOID
);
/**
Reads the current value of 64-bit MMX Register #1 (MM1).
Reads and returns the current value of MM1. This function is only available
on IA-32 and x64.
@return The current value of MM1.
**/
UINT64
EFIAPI
AsmReadMm1 (
VOID
);
/**
Reads the current value of 64-bit MMX Register #2 (MM2).
Reads and returns the current value of MM2. This function is only available
on IA-32 and x64.
@return The current value of MM2.
**/
UINT64
EFIAPI
AsmReadMm2 (
VOID
);
/**
Reads the current value of 64-bit MMX Register #3 (MM3).
Reads and returns the current value of MM3. This function is only available
on IA-32 and x64.
@return The current value of MM3.
**/
UINT64
EFIAPI
AsmReadMm3 (
VOID
);
/**
Reads the current value of 64-bit MMX Register #4 (MM4).
Reads and returns the current value of MM4. This function is only available
on IA-32 and x64.
@return The current value of MM4.
**/
UINT64
EFIAPI
AsmReadMm4 (
VOID
);
/**
Reads the current value of 64-bit MMX Register #5 (MM5).
Reads and returns the current value of MM5. This function is only available
on IA-32 and x64.
@return The current value of MM5.
**/
UINT64
EFIAPI
AsmReadMm5 (
VOID
);
/**
Reads the current value of 64-bit MMX Register #6 (MM6).
Reads and returns the current value of MM6. This function is only available
on IA-32 and x64.
@return The current value of MM6.
**/
UINT64
EFIAPI
AsmReadMm6 (
VOID
);
/**
Reads the current value of 64-bit MMX Register #7 (MM7).
Reads and returns the current value of MM7. This function is only available
on IA-32 and x64.
@return The current value of MM7.
**/
UINT64
EFIAPI
AsmReadMm7 (
VOID
);
/**
Writes the current value of 64-bit MMX Register #0 (MM0).
Writes the current value of MM0. This function is only available on IA32 and
x64.
@param Value The 64-bit value to write to MM0.
**/
VOID
EFIAPI
AsmWriteMm0 (
IN UINT64 Value
);
/**
Writes the current value of 64-bit MMX Register #1 (MM1).
Writes the current value of MM1. This function is only available on IA32 and
x64.
@param Value The 64-bit value to write to MM1.
**/
VOID
EFIAPI
AsmWriteMm1 (
IN UINT64 Value
);
/**
Writes the current value of 64-bit MMX Register #2 (MM2).
Writes the current value of MM2. This function is only available on IA32 and
x64.
@param Value The 64-bit value to write to MM2.
**/
VOID
EFIAPI
AsmWriteMm2 (
IN UINT64 Value
);
/**
Writes the current value of 64-bit MMX Register #3 (MM3).
Writes the current value of MM3. This function is only available on IA32 and
x64.
@param Value The 64-bit value to write to MM3.
**/
VOID
EFIAPI
AsmWriteMm3 (
IN UINT64 Value
);
/**
Writes the current value of 64-bit MMX Register #4 (MM4).
Writes the current value of MM4. This function is only available on IA32 and
x64.
@param Value The 64-bit value to write to MM4.
**/
VOID
EFIAPI
AsmWriteMm4 (
IN UINT64 Value
);
/**
Writes the current value of 64-bit MMX Register #5 (MM5).
Writes the current value of MM5. This function is only available on IA32 and
x64.
@param Value The 64-bit value to write to MM5.
**/
VOID
EFIAPI
AsmWriteMm5 (
IN UINT64 Value
);
/**
Writes the current value of 64-bit MMX Register #6 (MM6).
Writes the current value of MM6. This function is only available on IA32 and
x64.
@param Value The 64-bit value to write to MM6.
**/
VOID
EFIAPI
AsmWriteMm6 (
IN UINT64 Value
);
/**
Writes the current value of 64-bit MMX Register #7 (MM7).
Writes the current value of MM7. This function is only available on IA32 and
x64.
@param Value The 64-bit value to write to MM7.
**/
VOID
EFIAPI
AsmWriteMm7 (
IN UINT64 Value
);
/**
Reads the current value of Time Stamp Counter (TSC).
Reads and returns the current value of TSC. This function is only available
on IA-32 and x64.
@return The current value of TSC
**/
UINT64
EFIAPI
AsmReadTsc (
VOID
);
/**
Reads the current value of a Performance Counter (PMC).
Reads and returns the current value of performance counter specified by
Index. This function is only available on IA-32 and x64.
@param Index The 32-bit Performance Counter index to read.
@return The value of the PMC specified by Index.
**/
UINT64
EFIAPI
AsmReadPmc (
IN UINT32 Index
);
/**
Sets up a monitor buffer that is used by AsmMwait().
Executes a MONITOR instruction with the register state specified by Eax, Ecx
and Edx. Returns Eax. This function is only available on IA-32 and x64.
@param Eax The value to load into EAX or RAX before executing the MONITOR
instruction.
@param Ecx The value to load into ECX or RCX before executing the MONITOR
instruction.
@param Edx The value to load into EDX or RDX before executing the MONITOR
instruction.
@return Eax
**/
UINTN
EFIAPI
AsmMonitor (
IN UINTN Eax,
IN UINTN Ecx,
IN UINTN Edx
);
/**
Executes an MWAIT instruction.
Executes an MWAIT instruction with the register state specified by Eax and
Ecx. Returns Eax. This function is only available on IA-32 and x64.
@param Eax The value to load into EAX or RAX before executing the MONITOR
instruction.
@param Ecx The value to load into ECX or RCX before executing the MONITOR
instruction.
@return Eax
**/
UINTN
EFIAPI
AsmMwait (
IN UINTN Eax,
IN UINTN Ecx
);
/**
Executes a WBINVD instruction.
Executes a WBINVD instruction. This function is only available on IA-32 and
x64.
**/
VOID
EFIAPI
AsmWbinvd (
VOID
);
/**
Executes a INVD instruction.
Executes a INVD instruction. This function is only available on IA-32 and
x64.
**/
VOID
EFIAPI
AsmInvd (
VOID
);
/**
Flushes a cache line from all the instruction and data caches within the
coherency domain of the CPU.
Flushed the cache line specified by LinearAddress, and returns LinearAddress.
This function is only available on IA-32 and x64.
@param LinearAddress The address of the cache line to flush. If the CPU is
in a physical addressing mode, then LinearAddress is a
physical address. If the CPU is in a virtual
addressing mode, then LinearAddress is a virtual
address.
@return LinearAddress.
**/
VOID *
EFIAPI
AsmFlushCacheLine (
IN VOID *LinearAddress
);
/**
Enables the 32-bit paging mode on the CPU.
Enables the 32-bit paging mode on the CPU. CR0, CR3, CR4, and the page tables
must be properly initialized prior to calling this service. This function
assumes the current execution mode is 32-bit protected mode. This function is
only available on IA-32. After the 32-bit paging mode is enabled, control is
transferred to the function specified by EntryPoint using the new stack
specified by NewStack and passing in the parameters specified by Context1 and
Context2. Context1 and Context2 are optional and may be NULL. The function
EntryPoint must never return.
If the current execution mode is not 32-bit protected mode, then ASSERT().
If EntryPoint is NULL, then ASSERT().
If NewStack is NULL, then ASSERT().
There are a number of constraints that must be followed before calling this
function:
1) Interrupts must be disabled.
2) The caller must be in 32-bit protected mode with flat descriptors. This
means all descriptors must have a base of 0 and a limit of 4GB.
3) CR0 and CR4 must be compatible with 32-bit protected mode with flat
descriptors.
4) CR3 must point to valid page tables that will be used once the transition
is complete, and those page tables must guarantee that the pages for this
function and the stack are identity mapped.
@param EntryPoint A pointer to function to call with the new stack after
paging is enabled.
@param Context1 A pointer to the context to pass into the EntryPoint
function as the first parameter after paging is enabled.
@param Context2 A pointer to the context to pass into the EntryPoint
function as the second parameter after paging is enabled.
@param NewStack A pointer to the new stack to use for the EntryPoint
function after paging is enabled.
**/
VOID
EFIAPI
AsmEnablePaging32 (
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
IN VOID *Context1, OPTIONAL
IN VOID *Context2, OPTIONAL
IN VOID *NewStack
);
/**
Disables the 32-bit paging mode on the CPU.
Disables the 32-bit paging mode on the CPU and returns to 32-bit protected
mode. This function assumes the current execution mode is 32-paged protected
mode. This function is only available on IA-32. After the 32-bit paging mode
is disabled, control is transferred to the function specified by EntryPoint
using the new stack specified by NewStack and passing in the parameters
specified by Context1 and Context2. Context1 and Context2 are optional and
may be NULL. The function EntryPoint must never return.
If the current execution mode is not 32-bit paged mode, then ASSERT().
If EntryPoint is NULL, then ASSERT().
If NewStack is NULL, then ASSERT().
There are a number of constraints that must be followed before calling this
function:
1) Interrupts must be disabled.
2) The caller must be in 32-bit paged mode.
3) CR0, CR3, and CR4 must be compatible with 32-bit paged mode.
4) CR3 must point to valid page tables that guarantee that the pages for
this function and the stack are identity mapped.
@param EntryPoint A pointer to function to call with the new stack after
paging is disabled.
@param Context1 A pointer to the context to pass into the EntryPoint
function as the first parameter after paging is disabled.
@param Context2 A pointer to the context to pass into the EntryPoint
function as the second parameter after paging is
disabled.
@param NewStack A pointer to the new stack to use for the EntryPoint
function after paging is disabled.
**/
VOID
EFIAPI
AsmDisablePaging32 (
IN SWITCH_STACK_ENTRY_POINT EntryPoint,
IN VOID *Context1, OPTIONAL
IN VOID *Context2, OPTIONAL
IN VOID *NewStack
);
/**
Enables the 64-bit paging mode on the CPU.
Enables the 64-bit paging mode on the CPU. CR0, CR3, CR4, and the page tables
must be properly initialized prior to calling this service. This function
assumes the current execution mode is 32-bit protected mode with flat
descriptors. This function is only available on IA-32. After the 64-bit
paging mode is enabled, control is transferred to the function specified by
EntryPoint using the new stack specified by NewStack and passing in the
parameters specified by Context1 and Context2. Context1 and Context2 are
optional and may be 0. The function EntryPoint must never return.
If the current execution mode is not 32-bit protected mode with flat
descriptors, then ASSERT().
If EntryPoint is 0, then ASSERT().
If NewStack is 0, then ASSERT().
@param Cs The 16-bit selector to load in the CS before EntryPoint
is called. The descriptor in the GDT that this selector
references must be setup for long mode.
@param EntryPoint The 64-bit virtual address of the function to call with
the new stack after paging is enabled.
@param Context1 The 64-bit virtual address of the context to pass into
the EntryPoint function as the first parameter after
paging is enabled.
@param Context2 The 64-bit virtual address of the context to pass into
the EntryPoint function as the second parameter after
paging is enabled.
@param NewStack The 64-bit virtual address of the new stack to use for
the EntryPoint function after paging is enabled.
**/
VOID
EFIAPI
AsmEnablePaging64 (
IN UINT16 Cs,
IN UINT64 EntryPoint,
IN UINT64 Context1, OPTIONAL
IN UINT64 Context2, OPTIONAL
IN UINT64 NewStack
);
/**
Disables the 64-bit paging mode on the CPU.
Disables the 64-bit paging mode on the CPU and returns to 32-bit protected
mode. This function assumes the current execution mode is 64-paging mode.
This function is only available on x64. After the 64-bit paging mode is
disabled, control is transferred to the function specified by EntryPoint
using the new stack specified by NewStack and passing in the parameters
specified by Context1 and Context2. Context1 and Context2 are optional and
may be 0. The function EntryPoint must never return.
If the current execution mode is not 64-bit paged mode, then ASSERT().
If EntryPoint is 0, then ASSERT().
If NewStack is 0, then ASSERT().
@param Cs The 16-bit selector to load in the CS before EntryPoint
is called. The descriptor in the GDT that this selector
references must be setup for 32-bit protected mode.
@param EntryPoint The 64-bit virtual address of the function to call with
the new stack after paging is disabled.
@param Context1 The 64-bit virtual address of the context to pass into
the EntryPoint function as the first parameter after
paging is disabled.
@param Context2 The 64-bit virtual address of the context to pass into
the EntryPoint function as the second parameter after
paging is disabled.
@param NewStack The 64-bit virtual address of the new stack to use for
the EntryPoint function after paging is disabled.
**/
VOID
EFIAPI
AsmDisablePaging64 (
IN UINT16 Cs,
IN UINT32 EntryPoint,
IN UINT32 Context1, OPTIONAL
IN UINT32 Context2, OPTIONAL
IN UINT32 NewStack
);
//
// 16-bit thunking services
//
/**
Retrieves the properties for 16-bit thunk functions.
Computes the size of the buffer and stack below 1MB required to use the
AsmPrepareThunk16(), AsmThunk16() and AsmPrepareAndThunk16() functions. This
buffer size is returned in RealModeBufferSize, and the stack size is returned
in ExtraStackSize. If parameters are passed to the 16-bit real mode code,
then the actual minimum stack size is ExtraStackSize plus the maximum number
of bytes that need to be passed to the 16-bit real mode code.
-
+
If RealModeBufferSize is NULL, then ASSERT().
If ExtraStackSize is NULL, then ASSERT().
@param RealModeBufferSize A pointer to the size of the buffer below 1MB
required to use the 16-bit thunk functions.
@param ExtraStackSize A pointer to the extra size of stack below 1MB
that the 16-bit thunk functions require for
temporary storage in the transition to and from
16-bit real mode.
**/
VOID
EFIAPI
AsmGetThunk16Properties (
OUT UINT32 *RealModeBufferSize,
OUT UINT32 *ExtraStackSize
);
/**
Prepares all structures a code required to use AsmThunk16().
Prepares all structures and code required to use AsmThunk16().
-
+
This interface is limited to be used in either physical mode or virtual modes with paging enabled where the
virtual to physical mappings for ThunkContext.RealModeBuffer is mapped 1:1.
If ThunkContext is NULL, then ASSERT().
@param ThunkContext A pointer to the context structure that describes the
16-bit real mode code to call.
**/
VOID
EFIAPI
AsmPrepareThunk16 (
IN OUT THUNK_CONTEXT *ThunkContext
);
/**
Transfers control to a 16-bit real mode entry point and returns the results.
Transfers control to a 16-bit real mode entry point and returns the results.
AsmPrepareThunk16() must be called with ThunkContext before this function is used.
This function must be called with interrupts disabled.
- The register state from the RealModeState field of ThunkContext is restored just prior
- to calling the 16-bit real mode entry point. This includes the EFLAGS field of RealModeState,
+ The register state from the RealModeState field of ThunkContext is restored just prior
+ to calling the 16-bit real mode entry point. This includes the EFLAGS field of RealModeState,
which is used to set the interrupt state when a 16-bit real mode entry point is called.
Control is transferred to the 16-bit real mode entry point specified by the CS and Eip fields of RealModeState.
- The stack is initialized to the SS and ESP fields of RealModeState. Any parameters passed to
- the 16-bit real mode code must be populated by the caller at SS:ESP prior to calling this function.
+ The stack is initialized to the SS and ESP fields of RealModeState. Any parameters passed to
+ the 16-bit real mode code must be populated by the caller at SS:ESP prior to calling this function.
The 16-bit real mode entry point is invoked with a 16-bit CALL FAR instruction,
- so when accessing stack contents, the 16-bit real mode code must account for the 16-bit segment
- and 16-bit offset of the return address that were pushed onto the stack. The 16-bit real mode entry
- point must exit with a RETF instruction. The register state is captured into RealModeState immediately
+ so when accessing stack contents, the 16-bit real mode code must account for the 16-bit segment
+ and 16-bit offset of the return address that were pushed onto the stack. The 16-bit real mode entry
+ point must exit with a RETF instruction. The register state is captured into RealModeState immediately
after the RETF instruction is executed.
-
- If EFLAGS specifies interrupts enabled, or any of the 16-bit real mode code enables interrupts,
- or any of the 16-bit real mode code makes a SW interrupt, then the caller is responsible for making sure
- the IDT at address 0 is initialized to handle any HW or SW interrupts that may occur while in 16-bit real mode.
-
- If EFLAGS specifies interrupts enabled, or any of the 16-bit real mode code enables interrupts,
- then the caller is responsible for making sure the 8259 PIC is in a state compatible with 16-bit real mode.
+
+ If EFLAGS specifies interrupts enabled, or any of the 16-bit real mode code enables interrupts,
+ or any of the 16-bit real mode code makes a SW interrupt, then the caller is responsible for making sure
+ the IDT at address 0 is initialized to handle any HW or SW interrupts that may occur while in 16-bit real mode.
+
+ If EFLAGS specifies interrupts enabled, or any of the 16-bit real mode code enables interrupts,
+ then the caller is responsible for making sure the 8259 PIC is in a state compatible with 16-bit real mode.
This includes the base vectors, the interrupt masks, and the edge/level trigger mode.
-
- If THUNK_ATTRIBUTE_BIG_REAL_MODE is set in the ThunkAttributes field of ThunkContext, then the user code
+
+ If THUNK_ATTRIBUTE_BIG_REAL_MODE is set in the ThunkAttributes field of ThunkContext, then the user code
is invoked in big real mode. Otherwise, the user code is invoked in 16-bit real mode with 64KB segment limits.
-
- If neither THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 nor THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL are set in
- ThunkAttributes, then it is assumed that the user code did not enable the A20 mask, and no attempt is made to
+
+ If neither THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 nor THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL are set in
+ ThunkAttributes, then it is assumed that the user code did not enable the A20 mask, and no attempt is made to
disable the A20 mask.
-
- If THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 is set and THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL is clear in
- ThunkAttributes, then attempt to use the INT 15 service to disable the A20 mask. If this INT 15 call fails,
+
+ If THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 is set and THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL is clear in
+ ThunkAttributes, then attempt to use the INT 15 service to disable the A20 mask. If this INT 15 call fails,
then attempt to disable the A20 mask by directly accessing the 8042 keyboard controller I/O ports.
-
- If THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 is clear and THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL is set in
+
+ If THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 is clear and THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL is set in
ThunkAttributes, then attempt to disable the A20 mask by directly accessing the 8042 keyboard controller I/O ports.
-
+
If ThunkContext is NULL, then ASSERT().
If AsmPrepareThunk16() was not previously called with ThunkContext, then ASSERT().
- If both THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 and THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL are set in
+ If both THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15 and THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL are set in
ThunkAttributes, then ASSERT().
This interface is limited to be used in either physical mode or virtual modes with paging enabled where the
virtual to physical mappings for ThunkContext.RealModeBuffer are mapped 1:1.
@param ThunkContext A pointer to the context structure that describes the
16-bit real mode code to call.
**/
VOID
EFIAPI
AsmThunk16 (
IN OUT THUNK_CONTEXT *ThunkContext
);
/**
Prepares all structures and code for a 16-bit real mode thunk, transfers
control to a 16-bit real mode entry point, and returns the results.
Prepares all structures and code for a 16-bit real mode thunk, transfers
control to a 16-bit real mode entry point, and returns the results. If the
caller only need to perform a single 16-bit real mode thunk, then this
service should be used. If the caller intends to make more than one 16-bit
real mode thunk, then it is more efficient if AsmPrepareThunk16() is called
once and AsmThunk16() can be called for each 16-bit real mode thunk.
This interface is limited to be used in either physical mode or virtual modes with paging enabled where the
virtual to physical mappings for ThunkContext.RealModeBuffer is mapped 1:1.
See AsmPrepareThunk16() and AsmThunk16() for the detailed description and ASSERT() conditions.
@param ThunkContext A pointer to the context structure that describes the
16-bit real mode code to call.
**/
VOID
EFIAPI
AsmPrepareAndThunk16 (
IN OUT THUNK_CONTEXT *ThunkContext
);
/**
Generates a 16-bit random number through RDRAND instruction.
if Rand is NULL, then ASSERT().
@param[out] Rand Buffer pointer to store the random result.
@retval TRUE RDRAND call was successful.
@retval FALSE Failed attempts to call RDRAND.
**/
BOOLEAN
EFIAPI
AsmRdRand16 (
OUT UINT16 *Rand
);
/**
Generates a 32-bit random number through RDRAND instruction.
if Rand is NULL, then ASSERT().
@param[out] Rand Buffer pointer to store the random result.
@retval TRUE RDRAND call was successful.
@retval FALSE Failed attempts to call RDRAND.
**/
BOOLEAN
EFIAPI
AsmRdRand32 (
OUT UINT32 *Rand
);
/**
Generates a 64-bit random number through RDRAND instruction.
if Rand is NULL, then ASSERT().
@param[out] Rand Buffer pointer to store the random result.
@retval TRUE RDRAND call was successful.
@retval FALSE Failed attempts to call RDRAND.
**/
BOOLEAN
EFIAPI
AsmRdRand64 (
OUT UINT64 *Rand
);
-#endif
-#endif
+/**
+ Load given selector into TR register.
+ @param[in] Selector Task segment selector
+**/
+VOID
+EFIAPI
+AsmWriteTr (
+ IN UINT16 Selector
+ );
+/**
+ Performs a serializing operation on all load-from-memory instructions that
+ were issued prior the AsmLfence function.
+
+ Executes a LFENCE instruction. This function is only available on IA-32 and x64.
+
+**/
+VOID
+EFIAPI
+AsmLfence (
+ VOID
+ );
+
+/**
+ Patch the immediate operand of an IA32 or X64 instruction such that the byte,
+ word, dword or qword operand is encoded at the end of the instruction's
+ binary representation.
+
+ This function should be used to update object code that was compiled with
+ NASM from assembly source code. Example:
+
+ NASM source code:
+
+ mov eax, strict dword 0 ; the imm32 zero operand will be patched
+ ASM_PFX(gPatchCr3):
+ mov cr3, eax
+
+ C source code:
+
+ X86_ASSEMBLY_PATCH_LABEL gPatchCr3;
+ PatchInstructionX86 (gPatchCr3, AsmReadCr3 (), 4);
+
+ @param[out] InstructionEnd Pointer right past the instruction to patch. The
+ immediate operand to patch is expected to
+ comprise the trailing bytes of the instruction.
+ If InstructionEnd is closer to address 0 than
+ ValueSize permits, then ASSERT().
+
+ @param[in] PatchValue The constant to write to the immediate operand.
+ The caller is responsible for ensuring that
+ PatchValue can be represented in the byte, word,
+ dword or qword operand (as indicated through
+ ValueSize); otherwise ASSERT().
+
+ @param[in] ValueSize The size of the operand in bytes; must be 1, 2,
+ 4, or 8. ASSERT() otherwise.
+**/
+VOID
+EFIAPI
+PatchInstructionX86 (
+ OUT X86_ASSEMBLY_PATCH_LABEL *InstructionEnd,
+ IN UINT64 PatchValue,
+ IN UINTN ValueSize
+ );
+
+#endif // defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
+#endif // !defined (__BASE_LIB__)
Property changes on: head/sys/contrib/edk2/Include/Library/BaseLib.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Library/BaseLib.h:r291227-291228,292618
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Library/BaseLib.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Library/BaseLib.h:r289470-289489
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Library/BaseLib.h:r303899-303984
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Library/BaseLib.h:r298865-299093
Merged /projects/collation/sys/contrib/edk2/Include/Library/BaseLib.h:r286424-290491
Merged /projects/release-pkg/sys/contrib/edk2/Include/Library/BaseLib.h:r274131-298104
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Library/BaseLib.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Library/BaseLib.h:r233621
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Library/BaseLib.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Library/BaseLib.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/release-arm64/sys/contrib/edk2/Include/Library/BaseLib.h:r281786,281788,281792
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Library/BaseLib.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Library/BaseLib.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Library/BaseLib.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Library/BaseLib.h:r361765
Merged /projects/clang600-import/sys/contrib/edk2/Include/Library/BaseLib.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Library/BaseLib.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Library/BaseLib.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Library/BaseLib.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Library/BaseLib.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Library/BaseLib.h:r351317-353352
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Library/BaseLib.h:r1540-186085
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Library/BaseLib.h:r303985-305318
Merged /projects/clang350-import/sys/contrib/edk2/Include/Library/BaseLib.h:r274961-275126,275128-275133,275135-276476
Merged /projects/clang360-import/sys/contrib/edk2/Include/Library/BaseLib.h:r277327-280030
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Library/BaseLib.h:r230929-231848
Merged /projects/clang370-import/sys/contrib/edk2/Include/Library/BaseLib.h:r287506-288928
Merged /projects/pms/sys/contrib/edk2/Include/Library/BaseLib.h:r285199-285661
Merged /projects/clang380-import/sys/contrib/edk2/Include/Library/BaseLib.h:r292913-296412
Merged /projects/fuse2/sys/contrib/edk2/Include/Library/BaseLib.h:r344558-350621,350944,350955
Merged /projects/clang390-import/sys/contrib/edk2/Include/Library/BaseLib.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Library/BaseLib.h:r309166-310192
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Library/BaseLib.h:r291879-295379
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Library/BaseLib.h:r295193
Merged /projects/bectl/sys/contrib/edk2/Include/Library/BaseLib.h:r336666-337662
Merged /projects/release-embedded/sys/contrib/edk2/Include/Library/BaseLib.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Library/BaseLib.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/openssl111/sys/contrib/edk2/Include/Library/BaseLib.h:r339079
Merged /projects/largeSMP/sys/contrib/edk2/Include/Library/BaseLib.h:r221273-222812,222815-223757
Merged /projects/pf/head/sys/contrib/edk2/Include/Library/BaseLib.h:r263908
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Library/BaseLib.h:r303380
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Library/BaseLib.h:r262185-262527
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Library/BaseLib.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Library/BaseLib.h:r301868
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Library/BaseLib.h:r260687-261245
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Library/BaseLib.h:r266519,269993
Merged /projects/ipfw/sys/contrib/edk2/Include/Library/BaseLib.h:r267383-272837
Merged /projects/quota64/sys/contrib/edk2/Include/Library/BaseLib.h:r184125-207707
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Library/BaseLib.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Library/BaseLib.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Library/BaseLib.h:r286179-290100
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Library/BaseLib.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Library/BaseLib.h:r262258-262612
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Library/BaseLib.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Library/BaseLib.h:r295220
Index: head/sys/contrib/edk2/Include/Library/BaseMemoryLib.h
===================================================================
--- head/sys/contrib/edk2/Include/Library/BaseMemoryLib.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Library/BaseMemoryLib.h (revision 361802)
@@ -1,489 +1,483 @@
/** @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.
-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 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.
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#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
+ 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
Property changes on: head/sys/contrib/edk2/Include/Library/BaseMemoryLib.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r230929-231848
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r303985-305318
Merged /projects/pf/head/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r263908
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r266519,269993
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r262258-262612
Merged /projects/release-embedded/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r295193
Merged /projects/largeSMP/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r221273-222812,222815-223757
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r291227-291228,292618
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r301868
Merged /projects/openssl111/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r339079
Merged /projects/quota64/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r184125-207707
Merged /projects/collation/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r286424-290491
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r286179-290100
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r281786,281788,281792
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r262185-262527
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r303380
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Library/BaseMemoryLib.h:r361765
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r260687-261245
Merged /projects/release-pkg/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r274131-298104
Merged /projects/ipfw/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r283596-287505
Merged /projects/fuse2/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r344558-350621,350944,350955
Merged /projects/building-blocks/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r295220
Merged /projects/clang900-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r326936-327339,327341-327933
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r303899-303984
Merged /projects/clang350-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r1540-186085
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r319973-326168
Merged /projects/clang360-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r277327-280030
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r289470-289489
Merged /projects/head_mfi/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r233621
Merged /projects/bectl/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r336666-337662
Merged /projects/clang370-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r309166-310192
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r298865-299093
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Library/BaseMemoryLib.h:r291879-295379
Index: head/sys/contrib/edk2/Include/Library/DebugLib.h
===================================================================
--- head/sys/contrib/edk2/Include/Library/DebugLib.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Library/DebugLib.h (revision 361802)
@@ -1,529 +1,577 @@
/** @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.
-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.
+Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
-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
+ 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
+ @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.
+ 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 Format string for the debug message to print.
+ @param VaListMarker VA_LIST marker for the variable argument list.
+
+**/
+VOID
+EFIAPI
+DebugVPrint (
+ IN UINTN ErrorLevel,
+ IN CONST CHAR8 *Format,
+ IN VA_LIST VaListMarker
+ );
+
+
+/**
+ Prints a debug message to the debug output device if the specified
+ error level is enabled.
+ This function use BASE_LIST which would provide a more compatible
+ service than VA_LIST.
+
+ 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 Format string for the debug message to print.
+ @param BaseListMarker BASE_LIST marker for the variable argument list.
+
+**/
+VOID
+EFIAPI
+DebugBPrint (
+ IN UINTN ErrorLevel,
+ IN CONST CHAR8 *Format,
+ IN BASE_LIST BaseListMarker
+ );
+
+
+/**
+ 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 (): \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
+ 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 string of "(NULL) Filename" is printed.
If Description is NULL, then a 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
+ 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().
+ 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.
+ @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
+ 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
+ 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
+ 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
+ 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
**/
+#if defined(__clang__) && defined(__FILE_NAME__)
+#define _ASSERT(Expression) DebugAssert (__FILE_NAME__, __LINE__, #Expression)
+#else
#define _ASSERT(Expression) DebugAssert (__FILE__, __LINE__, #Expression)
+#endif
-/**
+/**
Internal worker macro that calls DebugPrint().
- This macro calls DebugPrint() passing in the debug error level, a format
+ 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,
+ @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,
+ 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)
+#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
+ 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,
+ @param Expression Expression containing an error level, a format string,
and a variable argument list based on the format string.
-
+
**/
-#if !defined(MDEPKG_NDEBUG)
+#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
+ 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
+/**
+ 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
+ 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()
+ 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
+ @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,
+ 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()
+ 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()
+ 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.
+ 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,
+ 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
+ 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
+ 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
+ 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
+ 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.
+ 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,
+ 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
+ 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
+ @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 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
+ @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
Property changes on: head/sys/contrib/edk2/Include/Library/DebugLib.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Library/DebugLib.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Library/DebugLib.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Library/DebugLib.h:r295220
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Library/DebugLib.h:r295193
Merged /projects/clang350-import/sys/contrib/edk2/Include/Library/DebugLib.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Library/DebugLib.h:r1540-186085
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Library/DebugLib.h:r291227-291228,292618
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Library/DebugLib.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Library/DebugLib.h:r289470-289489
Merged /projects/clang370-import/sys/contrib/edk2/Include/Library/DebugLib.h:r287506-288928
Merged /projects/quota64/sys/contrib/edk2/Include/Library/DebugLib.h:r184125-207707
Merged /projects/release-embedded/sys/contrib/edk2/Include/Library/DebugLib.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/clang390-import/sys/contrib/edk2/Include/Library/DebugLib.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Library/DebugLib.h:r309166-310192
Merged /projects/largeSMP/sys/contrib/edk2/Include/Library/DebugLib.h:r221273-222812,222815-223757
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Library/DebugLib.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/Library/DebugLib.h:r286179-290100
Merged /projects/head_mfi/sys/contrib/edk2/Include/Library/DebugLib.h:r233621
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Library/DebugLib.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /vendor/edk2/dist/MdePkg/Include/Library/DebugLib.h:r361765
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Library/DebugLib.h:r262185-262527
Merged /projects/release-pkg/sys/contrib/edk2/Include/Library/DebugLib.h:r274131-298104
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Library/DebugLib.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Library/DebugLib.h:r230929-231848
Merged /projects/clang600-import/sys/contrib/edk2/Include/Library/DebugLib.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Library/DebugLib.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Library/DebugLib.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Library/DebugLib.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Library/DebugLib.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Library/DebugLib.h:r351317-353352
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Library/DebugLib.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Library/DebugLib.h:r262258-262612
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Library/DebugLib.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Library/DebugLib.h:r277327-280030
Merged /projects/bectl/sys/contrib/edk2/Include/Library/DebugLib.h:r336666-337662
Merged /projects/clang380-import/sys/contrib/edk2/Include/Library/DebugLib.h:r292913-296412
Merged /projects/openssl111/sys/contrib/edk2/Include/Library/DebugLib.h:r339079
Merged /projects/pms/sys/contrib/edk2/Include/Library/DebugLib.h:r285199-285661
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Library/DebugLib.h:r298865-299093
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Library/DebugLib.h:r303899-303984
Merged /projects/collation/sys/contrib/edk2/Include/Library/DebugLib.h:r286424-290491
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Library/DebugLib.h:r254613-256243
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Library/DebugLib.h:r319973-326168
Merged /projects/release-arm64/sys/contrib/edk2/Include/Library/DebugLib.h:r281786,281788,281792
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Library/DebugLib.h:r303380
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Library/DebugLib.h:r276164,276167,276170-276172
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Library/DebugLib.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Library/DebugLib.h:r303985-305318
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Library/DebugLib.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/Library/DebugLib.h:r263908
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Library/DebugLib.h:r260687-261245
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Library/DebugLib.h:r283596-287505
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Library/DebugLib.h:r266519,269993
Merged /projects/ipfw/sys/contrib/edk2/Include/Library/DebugLib.h:r267383-272837
Merged /projects/fuse2/sys/contrib/edk2/Include/Library/DebugLib.h:r344558-350621,350944,350955
Merged /projects/building-blocks/sys/contrib/edk2/Include/Library/DebugLib.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Index: head/sys/contrib/edk2/Include/Library/DevicePathLib.h
===================================================================
--- head/sys/contrib/edk2/Include/Library/DevicePathLib.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Library/DevicePathLib.h (revision 361802)
@@ -1,566 +1,561 @@
/** @file
Provides library functions to construct and parse UEFI Device Paths.
- This library provides defines, macros, and functions to help create and parse
+ 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.
-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.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
-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 DevicePath is NULL.
+ @retval FALSE Maxsize is less than sizeof(EFI_DEVICE_PATH_PROTOCOL).
@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.
+ 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
+ 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
+ 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,
+ 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
+ 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.
+ 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().
+ 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
+ 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.
-
+ 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.
+ 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.
+ 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.
+ 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
+ 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.
+ 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.
+ 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.
+ 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.
+ 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
Property changes on: head/sys/contrib/edk2/Include/Library/DevicePathLib.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Library/DevicePathLib.h:r303899-303984
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Library/DevicePathLib.h:r262258-262612
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Library/DevicePathLib.h:r301868
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Library/DevicePathLib.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Library/DevicePathLib.h:r233621
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Library/DevicePathLib.h:r291227-291228,292618
Merged /projects/quota64/sys/contrib/edk2/Include/Library/DevicePathLib.h:r184125-207707
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Library/DevicePathLib.h:r254613-256243
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Library/DevicePathLib.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Library/DevicePathLib.h:r289470-289489
Merged /projects/mpsutil/sys/contrib/edk2/Include/Library/DevicePathLib.h:r286179-290100
Merged /projects/collation/sys/contrib/edk2/Include/Library/DevicePathLib.h:r286424-290491
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Library/DevicePathLib.h:r298865-299093
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Library/DevicePathLib.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/Library/DevicePathLib.h:r281786,281788,281792
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Library/DevicePathLib.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Library/DevicePathLib.h:r361765
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Library/DevicePathLib.h:r230929-231848
Merged /projects/release-pkg/sys/contrib/edk2/Include/Library/DevicePathLib.h:r274131-298104
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Library/DevicePathLib.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Library/DevicePathLib.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Library/DevicePathLib.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Library/DevicePathLib.h:r303985-305318
Merged /projects/fuse2/sys/contrib/edk2/Include/Library/DevicePathLib.h:r344558-350621,350944,350955
Merged /projects/clang600-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r351317-353352
Merged /projects/release-embedded/sys/contrib/edk2/Include/Library/DevicePathLib.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/Library/DevicePathLib.h:r221273-222812,222815-223757
Merged /projects/clang350-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Library/DevicePathLib.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Library/DevicePathLib.h:r285199-285661
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Library/DevicePathLib.h:r295193
Merged /projects/bectl/sys/contrib/edk2/Include/Library/DevicePathLib.h:r336666-337662
Merged /projects/clang390-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r309166-310192
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Library/DevicePathLib.h:r291879-295379
Merged /projects/openssl111/sys/contrib/edk2/Include/Library/DevicePathLib.h:r339079
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Library/DevicePathLib.h:r262185-262527
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Library/DevicePathLib.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Library/DevicePathLib.h:r260687-261245
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Library/DevicePathLib.h:r303380
Merged /projects/ipfw/sys/contrib/edk2/Include/Library/DevicePathLib.h:r267383-272837
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Library/DevicePathLib.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Library/DevicePathLib.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/pf/head/sys/contrib/edk2/Include/Library/DevicePathLib.h:r263908
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Library/DevicePathLib.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Library/DevicePathLib.h:r295220
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Library/DevicePathLib.h:r266519,269993
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Library/DevicePathLib.h:r312125-313435
Index: head/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h
===================================================================
--- head/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h (revision 361802)
@@ -1,493 +1,487 @@
/** @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.
-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.
+ 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 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
**/
#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
+ 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().
+ 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().
+ 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().
+ 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
+ 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
+ @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
+ 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
+ @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
+ 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
+ @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
Property changes on: head/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/release-embedded/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/fuse2/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r344558-350621,350944,350955
Merged /projects/largeSMP/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r221273-222812,222815-223757
Merged /projects/clang900-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r326936-327339,327341-327933
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r303380
Merged /projects/clang350-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r287506-288928
Merged /projects/pms/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r285199-285661
Merged /projects/clang380-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r292913-296412
Merged /projects/clang391-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r309166-310192
Merged /projects/clang390-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r303250-308866,308868-309123
Merged /projects/bectl/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r336666-337662
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r262185-262527
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r291879-295379
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r267383-272837
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r344081-345031,345036,345038,345042,345045,345047
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r289470-289489
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r281754
Merged /projects/vnet/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r295220
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r356848-358850
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r298865-299093
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/pf/head/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r263908
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r266519,269993
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r233621
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r312125-313435
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r301868
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r262258-262612
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r291227-291228,292618
Merged /projects/quota64/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r184125-207707
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r303985-305318
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r286179-290100
Merged /projects/collation/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r286424-290491
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r230929-231848
Merged /projects/release-arm64/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r281786,281788,281792
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r295193
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r276164,276167,276170-276172
Merged /projects/release-pkg/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r274131-298104
Merged /vendor/edk2/dist/MdePkg/Include/Library/MemoryAllocationLib.h:r361765
Merged /projects/openssl111/sys/contrib/edk2/Include/Library/MemoryAllocationLib.h:r339079
Index: head/sys/contrib/edk2/Include/Library/PcdLib.h
===================================================================
--- head/sys/contrib/edk2/Include/Library/PcdLib.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Library/PcdLib.h (revision 361802)
@@ -1,2260 +1,2254 @@
/** @file
Provides library services to get and set Platform Configuration Database entries.
PCD Library Class provides a PCD usage macro interface for all PCD types.
It should be included in any module that uses PCD. If a module uses dynamic/dynamicex
PCD, module should be linked to a PEIM/DXE library instance to access that PCD.
If a module uses PatchableInModule type PCD, it also needs the library instance to produce
LibPatchPcdSetPtr() interface. For FeatureFlag/Fixed PCD, the macro interface is
translated to a variable or macro that is auto-generated by build tool in
module's autogen.h/autogen.c.
- The PcdGetXX(), PcdSetXX(), PcdToken(), and PcdGetNextTokenSpace() operations are
- only available prior to ExitBootServices(). If access to PCD values are required
+ The PcdGetXX(), PcdSetXX(), PcdToken(), and PcdGetNextTokenSpace() operations are
+ only available prior to ExitBootServices(). If access to PCD values are required
at runtime, then their values must be collected prior to ExitBootServices().
There are no restrictions on the use of FeaturePcd(), FixedPcdGetXX(),
PatchPcdGetXX(), and PatchPcdSetXX().
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
-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
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
-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 __PCD_LIB_H__
#define __PCD_LIB_H__
/**
Retrieves a token number based on a token name.
Returns the token number associated with the PCD token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve the token number for.
@return The token number associated with the PCD.
**/
#define PcdToken(TokenName) _PCD_TOKEN_##TokenName
/**
Retrieves a Boolean PCD feature flag based on a token name.
Returns the Boolean value for the PCD feature flag specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a feature flag PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return Boolean value for the PCD feature flag.
**/
#define FeaturePcdGet(TokenName) _PCD_GET_MODE_BOOL_##TokenName
/**
Retrieves an 8-bit fixed PCD token value based on a token name.
Returns the 8-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a fixed at build PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return 8-bit value for the token specified by TokenName.
**/
#define FixedPcdGet8(TokenName) _PCD_VALUE_##TokenName
/**
Retrieves a 16-bit fixed PCD token value based on a token name.
Returns the 16-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a fixed at build PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return 16-bit value for the token specified by TokenName.
**/
#define FixedPcdGet16(TokenName) _PCD_VALUE_##TokenName
/**
Retrieves a 32-bit fixed PCD token value based on a token name.
Returns the 32-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a fixed at build PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return 32-bit value for the token specified by TokenName.
**/
#define FixedPcdGet32(TokenName) _PCD_VALUE_##TokenName
/**
Retrieves a 64-bit fixed PCD token value based on a token name.
Returns the 64-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a fixed at build PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return 64-bit value for the token specified by TokenName.
**/
#define FixedPcdGet64(TokenName) _PCD_VALUE_##TokenName
/**
Retrieves a Boolean fixed PCD token value based on a token name.
Returns the Boolean value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a fixed at build PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
- @return The Boolean value for the token.
+ @return The Boolean value for the token.
**/
#define FixedPcdGetBool(TokenName) _PCD_VALUE_##TokenName
/**
Retrieves a pointer to a fixed PCD token buffer based on a token name.
Returns a pointer to the buffer for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a fixed at build PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
- @return A pointer to the buffer.
+ @return A pointer to the buffer.
**/
#define FixedPcdGetPtr(TokenName) ((VOID *)_PCD_VALUE_##TokenName)
/**
Retrieves an 8-bit binary patchable PCD token value based on a token name.
Returns the 8-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return An 8-bit binary patchable PCD token value.
**/
#define PatchPcdGet8(TokenName) _gPcd_BinaryPatch_##TokenName
/**
Retrieves a 16-bit binary patchable PCD token value based on a token name.
Returns the 16-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return A 16-bit binary patchable PCD token value.
**/
#define PatchPcdGet16(TokenName) _gPcd_BinaryPatch_##TokenName
/**
Retrieves a 32-bit binary patchable PCD token value based on a token name.
Returns the 32-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return A 32-bit binary patchable PCD token value.
**/
#define PatchPcdGet32(TokenName) _gPcd_BinaryPatch_##TokenName
/**
Retrieves a 64-bit binary patchable PCD token value based on a token name.
Returns the 64-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return A 64-bit binary patchable PCD token value.
**/
#define PatchPcdGet64(TokenName) _gPcd_BinaryPatch_##TokenName
/**
Retrieves a Boolean binary patchable PCD token value based on a token name.
Returns the Boolean value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return The Boolean value for the token.
**/
#define PatchPcdGetBool(TokenName) _gPcd_BinaryPatch_##TokenName
/**
Retrieves a pointer to a binary patchable PCD token buffer based on a token name.
Returns a pointer to the buffer for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return A pointer to the buffer for the token.
**/
#define PatchPcdGetPtr(TokenName) ((VOID *)_gPcd_BinaryPatch_##TokenName)
/**
Sets an 8-bit binary patchable PCD token value based on a token name.
Sets the 8-bit value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the binary patchable PCD token to set the current value for.
@param Value The 8-bit value to set.
-
+
@return Return the Value that was set.
**/
#define PatchPcdSet8(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
/**
Sets a 16-bit binary patchable PCD token value based on a token name.
Sets the 16-bit value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the binary patchable PCD token to set the current value for.
@param Value The 16-bit value to set.
@return Return the Value that was set.
**/
#define PatchPcdSet16(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
/**
Sets a 32-bit binary patchable PCD token value based on a token name.
Sets the 32-bit value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the binary patchable PCD token to set the current value for.
@param Value The 32-bit value to set.
@return Return the Value that was set.
**/
#define PatchPcdSet32(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
/**
Sets a 64-bit binary patchable PCD token value based on a token name.
Sets the 64-bit value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the binary patchable PCD token to set the current value for.
@param Value The 64-bit value to set.
@return Return the Value that was set.
**/
#define PatchPcdSet64(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
/**
Sets a Boolean binary patchable PCD token value based on a token name.
Sets the Boolean value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
@param TokenName The name of the binary patchable PCD token to set the current value for.
@param Value The boolean value to set.
@return Return the Value that was set.
**/
#define PatchPcdSetBool(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
/**
Sets a pointer to a binary patchable PCD token buffer based on a token name.
- Sets the buffer for the token specified by TokenName. Buffer is returned.
+ Sets the buffer for the token specified by TokenName. Buffer is returned.
If SizeOfBuffer is greater than the maximum size supported by TokenName, then set SizeOfBuffer
- to the maximum size supported by TokenName and return NULL to indicate that the set operation
- was not actually performed. If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be
+ to the maximum size supported by TokenName and return NULL to indicate that the set operation
+ was not actually performed. If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be
set to the maximum size supported by TokenName and NULL must be returned.
If TokenName is not a valid token in the token space, then the module will not build.
If TokenName is not a patchable in module PCD, then the module will not build.
-
+
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
-
+
@param TokenName The name of the binary patchable PCD token to set the current value for.
@param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
@param Buffer Pointer to the value to set.
@return Return the pointer to the Buffer that was set.
**/
#define PatchPcdSetPtr(TokenName, Size, Buffer) \
LibPatchPcdSetPtrAndSize ( \
(VOID *)_gPcd_BinaryPatch_##TokenName, \
&_gPcd_BinaryPatch_Size_##TokenName, \
(UINTN)_PCD_PATCHABLE_##TokenName##_SIZE, \
(Size), \
(Buffer) \
)
/**
Retrieves an 8-bit PCD token value based on a token name.
-
+
Returns the 8-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
-
+
@param TokenName The name of the PCD token to retrieve a current value for.
@return 8-bit value for the token specified by TokenName.
**/
#define PcdGet8(TokenName) _PCD_GET_MODE_8_##TokenName
/**
Retrieves a 16-bit PCD token value based on a token name.
Returns the 16-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return 16-bit value for the token specified by TokenName.
**/
#define PcdGet16(TokenName) _PCD_GET_MODE_16_##TokenName
/**
Retrieves a 32-bit PCD token value based on a token name.
Returns the 32-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return 32-bit value for the token specified by TokenName.
**/
#define PcdGet32(TokenName) _PCD_GET_MODE_32_##TokenName
/**
Retrieves a 64-bit PCD token value based on a token name.
Returns the 64-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return 64-bit value for the token specified by TokenName.
**/
#define PcdGet64(TokenName) _PCD_GET_MODE_64_##TokenName
/**
Retrieves a pointer to a PCD token buffer based on a token name.
Returns a pointer to the buffer for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return A pointer to the buffer.
**/
#define PcdGetPtr(TokenName) _PCD_GET_MODE_PTR_##TokenName
/**
Retrieves a Boolean PCD token value based on a token name.
Returns the Boolean value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@return A Boolean PCD token value.
**/
#define PcdGetBool(TokenName) _PCD_GET_MODE_BOOL_##TokenName
/**
Retrieves the size of a fixed PCD token based on a token name.
Returns the size of the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param[in] TokenName The name of the PCD token to retrieve a current value size for.
@return Return the size
**/
#define FixedPcdGetSize(TokenName) _PCD_SIZE_##TokenName
/**
Retrieves the size of a binary patchable PCD token based on a token name.
Returns the size of the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param[in] TokenName The name of the PCD token to retrieve a current value size for.
@return Return the size
**/
#define PatchPcdGetSize(TokenName) _gPcd_BinaryPatch_Size_##TokenName
/**
Retrieves the size of the PCD token based on a token name.
-
+
Returns the size of the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
-
+
@param[in] TokenName The name of the PCD token to retrieve a current value size for.
@return Return the size
**/
#define PcdGetSize(TokenName) _PCD_GET_MODE_SIZE_##TokenName
/**
Retrieve the size of a given PCD token.
-
- Returns the size of the token specified by TokenNumber and Guid.
- If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates
+ Returns the size of the token specified by TokenNumber and Guid.
+ If Guid is NULL, then ASSERT().
+
+ @param[in] Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param[in] TokenNumber The PCD token number to retrieve a current value size for.
@return Return the size.
**/
#define PcdGetExSize(Guid, TokenName) LibPcdGetExSize ((Guid), PcdTokenEx(Guid,TokenName))
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
Sets an 8-bit PCD token value based on a token name.
Sets the 8-bit value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@param Value The 8-bit value to set.
-
+
@return Return the Value that was set.
**/
#define PcdSet8(TokenName, Value) _PCD_SET_MODE_8_##TokenName ((Value))
/**
Sets a 16-bit PCD token value based on a token name.
Sets the 16-bit value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@param Value The 16-bit value to set.
@return Return the Value that was set.
**/
#define PcdSet16(TokenName, Value) _PCD_SET_MODE_16_##TokenName ((Value))
/**
Sets a 32-bit PCD token value based on a token name.
Sets the 32-bit value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@param Value The 32-bit value to set.
@return Return the Value that was set.
**/
#define PcdSet32(TokenName, Value) _PCD_SET_MODE_32_##TokenName ((Value))
/**
Sets a 64-bit PCD token value based on a token name.
Sets the 64-bit value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@param Value The 64-bit value to set.
@return Return the Value that was set.
**/
#define PcdSet64(TokenName, Value) _PCD_SET_MODE_64_##TokenName ((Value))
/**
Sets a pointer to a PCD token buffer based on a token name.
- Sets the buffer for the token specified by TokenName. Buffer is returned.
- If SizeOfBuffer is greater than the maximum size supported by TokenName,
- then set SizeOfBuffer to the maximum size supported by TokenName and return NULL
- to indicate that the set operation was not actually performed. If SizeOfBuffer
- is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size supported
+ Sets the buffer for the token specified by TokenName. Buffer is returned.
+ If SizeOfBuffer is greater than the maximum size supported by TokenName,
+ then set SizeOfBuffer to the maximum size supported by TokenName and return NULL
+ to indicate that the set operation was not actually performed. If SizeOfBuffer
+ is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size supported
by TokenName and NULL must be returned.
If TokenName is not a valid token in the token space, then the module will not build.
-
+
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
-
+
@param TokenName The name of the PCD token to set the current value for.
@param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
@param Buffer A pointer to the buffer to set.
@return Return the pointer to the Buffer that was set.
**/
#define PcdSetPtr(TokenName, SizeOfBuffer, Buffer) \
_PCD_SET_MODE_PTR_##TokenName ((SizeOfBuffer), (Buffer))
-
+
/**
Sets a Boolean PCD token value based on a token name.
- Sets the Boolean value for the token specified by TokenName. Value is returned.
+ Sets the Boolean value for the token specified by TokenName. Value is returned.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to set the current value for.
@param Buffer The Boolean value to set.
@return Return the Value that was set.
**/
#define PcdSetBool(TokenName, Value) _PCD_SET_MODE_BOOL_##TokenName ((Value))
#endif
/**
Sets a 8-bit PCD token value based on a token name.
Sets the 8-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@param Value The 8-bit value to set.
@return The status of the set operation.
**/
#define PcdSet8S(TokenName, Value) _PCD_SET_MODE_8_S_##TokenName ((Value))
/**
Sets a 16-bit PCD token value based on a token name.
Sets the 16-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@param Value The 16-bit value to set.
@return The status of the set operation.
**/
#define PcdSet16S(TokenName, Value) _PCD_SET_MODE_16_S_##TokenName ((Value))
/**
Sets a 32-bit PCD token value based on a token name.
Sets the 32-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@param Value The 32-bit value to set.
@return The status of the set operation.
**/
#define PcdSet32S(TokenName, Value) _PCD_SET_MODE_32_S_##TokenName ((Value))
/**
Sets a 64-bit PCD token value based on a token name.
Sets the 64-bit value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@param Value The 64-bit value to set.
@return The status of the set operation.
**/
#define PcdSet64S(TokenName, Value) _PCD_SET_MODE_64_S_##TokenName ((Value))
/**
Sets a pointer to a PCD token buffer based on a token name.
Sets the buffer for the token specified by TokenName.
If SizeOfBuffer is greater than the maximum size supported by TokenName,
then set SizeOfBuffer to the maximum size supported by TokenName and return
RETURN_INVALID_PARAMETER to indicate that the set operation was not actually performed.
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size
supported by TokenName and RETURN_INVALID_PARAMETER must be returned.
If TokenName is not a valid token in the token space, then the module will not build.
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
@param TokenName The name of the PCD token to set the current value for.
@param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
@param Buffer A pointer to the buffer to set.
@return The status of the set operation.
**/
#define PcdSetPtrS(TokenName, SizeOfBuffer, Buffer) \
_PCD_SET_MODE_PTR_S_##TokenName ((SizeOfBuffer), (Buffer))
/**
Sets a boolean PCD token value based on a token name.
Sets the boolean value for the token specified by TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
@param TokenName The name of the PCD token to retrieve a current value for.
@param Value The boolean value to set.
@return The status of the set operation.
**/
#define PcdSetBoolS(TokenName, Value) _PCD_SET_MODE_BOOL_S_##TokenName ((Value))
/**
Retrieves a token number based on a GUID and a token name.
Returns the token number for the token specified by Guid and TokenName.
If TokenName is not a valid token in the token space, then the module will not build.
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
- @param TokenName The name of the PCD token to retrieve a current value for.
+ @param TokenName The name of the PCD token to retrieve a current value for.
@return Return the token number.
**/
#define PcdTokenEx(Guid,TokenName) _PCD_TOKEN_EX_##TokenName(Guid)
/**
Retrieves an 8-bit PCD token value based on a GUID and a token name.
Returns the 8-bit value for the token specified by Guid and TokenName.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
-
+
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
- @param TokenName The name of the PCD token to retrieve a current value for.
+ @param TokenName The name of the PCD token to retrieve a current value for.
@return An 8-bit PCD token value.
**/
#define PcdGetEx8(Guid, TokenName) LibPcdGetEx8 ((Guid), PcdTokenEx(Guid,TokenName))
/**
Retrieves a 16-bit PCD token value based on a GUID and a token name.
Returns the 16-bit value for the token specified by Guid and TokenName.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
- @param TokenName The name of the PCD token to retrieve a current value for.
+ @param TokenName The name of the PCD token to retrieve a current value for.
@return A 16-bit PCD token value.
**/
#define PcdGetEx16(Guid, TokenName) LibPcdGetEx16 ((Guid), PcdTokenEx(Guid,TokenName))
/**
Retrieves a 32-bit PCD token value based on a GUID and a token name.
Returns the 32-bit value for the token specified by Guid and TokenName.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
- @param TokenName The name of the PCD token to retrieve a current value for.
+ @param TokenName The name of the PCD token to retrieve a current value for.
@return A 32-bit PCD token value.
**/
#define PcdGetEx32(Guid, TokenName) LibPcdGetEx32 ((Guid), PcdTokenEx(Guid,TokenName))
/**
Retrieves a 64-bit PCD token value based on a GUID and a token name.
Returns the 64-bit value for the token specified by Guid and TokenName.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
- @param TokenName The name of the PCD token to retrieve a current value for.
+ @param TokenName The name of the PCD token to retrieve a current value for.
@return A 64-bit PCD token value.
**/
#define PcdGetEx64(Guid, TokenName) LibPcdGetEx64 ((Guid), PcdTokenEx(Guid,TokenName))
/**
Retrieves a pointer to a PCD token buffer based on a GUID and a token name.
Returns a pointer to the buffer for the token specified by Guid and TokenName.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
- @param TokenName The name of the PCD token to retrieve a current value for.
+ @param TokenName The name of the PCD token to retrieve a current value for.
@return A pointer to a PCD token buffer.
**/
#define PcdGetExPtr(Guid, TokenName) LibPcdGetExPtr ((Guid), PcdTokenEx(Guid,TokenName))
/**
Retrieves a Boolean PCD token value based on a GUID and a token name.
Returns the Boolean value for the token specified by Guid and TokenName.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
- @param TokenName The name of the PCD token to retrieve a current value for.
+ @param TokenName The name of the PCD token to retrieve a current value for.
@return A Boolean PCD token value.
**/
#define PcdGetExBool(Guid, TokenName) LibPcdGetExBool ((Guid), PcdTokenEx(Guid,TokenName))
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
Sets an 8-bit PCD token value based on a GUID and a token name.
Sets the 8-bit value for the token specified by Guid and TokenName. Value is returned.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
- @param Value The 8-bit value to set.
+ @param Value The 8-bit value to set.
@return Return the Value that was set.
**/
#define PcdSetEx8(Guid, TokenName, Value) LibPcdSetEx8 ((Guid), PcdTokenEx(Guid,TokenName), (Value))
/**
Sets a 16-bit PCD token value based on a GUID and a token name.
Sets the 16-bit value for the token specified by Guid and TokenName. Value is returned.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
- @param Value The 16-bit value to set.
+ @param Value The 16-bit value to set.
@return Return the Value that was set.
**/
#define PcdSetEx16(Guid, TokenName, Value) LibPcdSetEx16 ((Guid), PcdTokenEx(Guid,TokenName), (Value))
/**
Sets a 32-bit PCD token value based on a GUID and a token name.
Sets the 32-bit value for the token specified by Guid and TokenName. Value is returned.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
- @param Value The 32-bit value to set.
+ @param Value The 32-bit value to set.
@return Return the Value that was set.
**/
#define PcdSetEx32(Guid, TokenName, Value) LibPcdSetEx32 ((Guid), PcdTokenEx(Guid,TokenName), (Value))
/**
Sets a 64-bit PCD token value based on a GUID and a token name.
Sets the 64-bit value for the token specified by Guid and TokenName. Value is returned.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
- @param Value The 64-bit value to set.
+ @param Value The 64-bit value to set.
@return Return the Value that was set.
**/
#define PcdSetEx64(Guid, TokenName, Value) LibPcdSetEx64 ((Guid), PcdTokenEx(Guid,TokenName), (Value))
/**
Sets a pointer to a PCD token buffer based on a GUID and a token name.
- Sets the buffer for the token specified by Guid and TokenName. Buffer is returned.
- If SizeOfBuffer is greater than the maximum size supported by Guid and TokenName,
- then set SizeOfBuffer to the maximum size supported by Guid and TokenName and return
- NULL to indicate that the set operation was not actually performed. If SizeOfBuffer
+ Sets the buffer for the token specified by Guid and TokenName. Buffer is returned.
+ If SizeOfBuffer is greater than the maximum size supported by Guid and TokenName,
+ then set SizeOfBuffer to the maximum size supported by Guid and TokenName and return
+ NULL to indicate that the set operation was not actually performed. If SizeOfBuffer
is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size supported by
Guid and TokenName and NULL must be returned.
- If TokenName is not a valid token in the token space specified by Guid,
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
-
+
If Guid is NULL, then ASSERT().
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
- @param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
+ @param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
@param Buffer Pointer to the buffer to set.
-
+
@return Return the pointer to the Buffer that was set.
**/
#define PcdSetExPtr(Guid, TokenName, SizeOfBuffer, Buffer) \
LibPcdSetExPtr ((Guid), PcdTokenEx(Guid,TokenName), (SizeOfBuffer), (Buffer))
/**
Sets a Boolean PCD token value based on a GUID and a token name.
- Sets the Boolean value for the token specified by Guid and TokenName. Value is returned.
- If TokenName is not a valid token in the token space specified by Guid,
+ Sets the Boolean value for the token specified by Guid and TokenName. Value is returned.
+ If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
- @param Guid Pointer to a 128-bit unique value that designates
+ @param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
- @param TokenName The name of the PCD token to set the current value for.
+ @param TokenName The name of the PCD token to set the current value for.
@param Value The Boolean value to set.
@return Return the Value that was set.
-**/
+**/
#define PcdSetExBool(Guid, TokenName, Value) \
LibPcdSetExBool((Guid), PcdTokenEx(Guid,TokenName), (Value))
#endif
/**
Sets an 8-bit PCD token value based on a GUID and a token name.
Sets the 8-bit value for the token specified by Guid and TokenName.
If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
@param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
@param Value The 8-bit value to set.
@return The status of the set operation.
**/
#define PcdSetEx8S(Guid, TokenName, Value) LibPcdSetEx8S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
/**
Sets an 16-bit PCD token value based on a GUID and a token name.
Sets the 16-bit value for the token specified by Guid and TokenName.
If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
@param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
@param Value The 16-bit value to set.
@return The status of the set operation.
**/
#define PcdSetEx16S(Guid, TokenName, Value) LibPcdSetEx16S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
/**
Sets an 32-bit PCD token value based on a GUID and a token name.
Sets the 32-bit value for the token specified by Guid and TokenName.
If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
@param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
@param Value The 32-bit value to set.
@return The status of the set operation.
**/
#define PcdSetEx32S(Guid, TokenName, Value) LibPcdSetEx32S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
/**
Sets an 64-bit PCD token value based on a GUID and a token name.
Sets the 64-bit value for the token specified by Guid and TokenName.
If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
@param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
@param Value The 64-bit value to set.
@return The status of the set operation.
**/
#define PcdSetEx64S(Guid, TokenName, Value) LibPcdSetEx64S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
/**
Sets a pointer to a PCD token buffer based on a GUID and a token name.
Sets the buffer for the token specified by Guid and TokenName.
If SizeOfBuffer is greater than the maximum size supported by Guid and TokenName,
then set SizeOfBuffer to the maximum size supported by Guid and TokenName and return
RETURN_INVALID_PARAMETER to indicate that the set operation was not actually performed.
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size
supported by Guid and TokenName and RETURN_INVALID_PARAMETER must be returned.
If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
@param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
@param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
@param Buffer Pointer to the buffer to set.
@return The status of the set operation.
**/
#define PcdSetExPtrS(Guid, TokenName, SizeOfBuffer, Buffer) \
LibPcdSetExPtrS ((Guid), PcdTokenEx(Guid,TokenName), (SizeOfBuffer), (Buffer))
/**
Sets an boolean PCD token value based on a GUID and a token name.
Sets the boolean value for the token specified by Guid and TokenName.
If TokenName is not a valid token in the token space specified by Guid,
then the module will not build.
If Guid is NULL, then ASSERT().
@param Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param TokenName The name of the PCD token to set the current value for.
@param Value The boolean value to set.
@return The status of the set operation.
**/
#define PcdSetExBoolS(Guid, TokenName, Value) \
LibPcdSetExBoolS ((Guid), PcdTokenEx(Guid,TokenName), (Value))
/**
This function provides a means by which SKU support can be established in the PCD infrastructure.
Sets the current SKU in the PCD database to the value specified by SkuId. SkuId is returned.
@param SkuId The SKU value that will be used when the PCD service retrieves and sets values
associated with a PCD token.
@return Return the SKU ID that was set.
**/
UINTN
EFIAPI
LibPcdSetSku (
IN UINTN SkuId
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
- Returns the 8-bit value for the token specified by TokenNumber.
+ Returns the 8-bit value for the token specified by TokenNumber.
+
@param[in] TokenNumber The PCD token number to retrieve a current value for.
- @return Returns the 8-bit value for the token specified by TokenNumber.
+ @return Returns the 8-bit value for the token specified by TokenNumber.
**/
UINT8
EFIAPI
LibPcdGet8 (
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
- Returns the 16-bit value for the token specified by TokenNumber.
+ Returns the 16-bit value for the token specified by TokenNumber.
+
@param[in] TokenNumber The PCD token number to retrieve a current value for.
- @return Returns the 16-bit value for the token specified by TokenNumber.
+ @return Returns the 16-bit value for the token specified by TokenNumber.
**/
UINT16
EFIAPI
LibPcdGet16 (
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
- Returns the 32-bit value for the token specified by TokenNumber.
+ Returns the 32-bit value for the token specified by TokenNumber.
+
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Returns the 32-bit value for the token specified by TokenNumber.
**/
UINT32
EFIAPI
LibPcdGet32 (
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
+
Returns the 64-bit value for the token specified by TokenNumber.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Returns the 64-bit value for the token specified by TokenNumber.
**/
UINT64
EFIAPI
LibPcdGet64 (
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
+
Returns the pointer to the buffer of the token specified by TokenNumber.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Returns the pointer to the token specified by TokenNumber.
**/
VOID *
EFIAPI
LibPcdGetPtr (
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
- Returns the Boolean value of the token specified by TokenNumber.
+ Returns the Boolean value of the token specified by TokenNumber.
+
@param[in] TokenNumber The PCD token number to retrieve a current value for.
- @return Returns the Boolean value of the token specified by TokenNumber.
+ @return Returns the Boolean value of the token specified by TokenNumber.
**/
-BOOLEAN
+BOOLEAN
EFIAPI
LibPcdGetBool (
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve the size of a given PCD token.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
- @return Returns the size of the token specified by TokenNumber.
+ @return Returns the size of the token specified by TokenNumber.
**/
UINTN
EFIAPI
LibPcdGetSize (
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
+
Returns the 8-bit value for the token specified by TokenNumber and Guid.
-
- If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates
+ If Guid is NULL, then ASSERT().
+
+ @param[in] Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Return the UINT8.
**/
UINT8
EFIAPI
LibPcdGetEx8 (
IN CONST GUID *Guid,
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
Returns the 16-bit value for the token specified by TokenNumber and Guid.
-
- If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates
+ If Guid is NULL, then ASSERT().
+
+ @param[in] Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Return the UINT16.
**/
UINT16
EFIAPI
LibPcdGetEx16 (
IN CONST GUID *Guid,
IN UINTN TokenNumber
);
/**
Returns the 32-bit value for the token specified by TokenNumber and Guid.
- If Guid is NULL, then ASSERT().
+ If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates
+ @param[in] Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Return the UINT32.
**/
UINT32
EFIAPI
LibPcdGetEx32 (
IN CONST GUID *Guid,
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
+
Returns the 64-bit value for the token specified by TokenNumber and Guid.
-
- If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates
+ If Guid is NULL, then ASSERT().
+
+ @param[in] Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Return the UINT64.
**/
UINT64
EFIAPI
LibPcdGetEx64 (
IN CONST GUID *Guid,
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
+
Returns the pointer to the buffer of token specified by TokenNumber and Guid.
-
- If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates
+ If Guid is NULL, then ASSERT().
+
+ @param[in] Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Return the VOID* pointer.
**/
VOID *
EFIAPI
LibPcdGetExPtr (
IN CONST GUID *Guid,
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve a value for a given PCD token.
-
- Returns the Boolean value of the token specified by TokenNumber and Guid.
-
- If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates
+ Returns the Boolean value of the token specified by TokenNumber and Guid.
+
+ If Guid is NULL, then ASSERT().
+
+ @param[in] Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Return the BOOLEAN.
**/
BOOLEAN
EFIAPI
LibPcdGetExBool (
IN CONST GUID *Guid,
IN UINTN TokenNumber
);
/**
This function provides a means by which to retrieve the size of a given PCD token.
-
- Returns the size of the token specified by TokenNumber and Guid.
-
- If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates
+ Returns the size of the token specified by TokenNumber and Guid.
+
+ If Guid is NULL, then ASSERT().
+
+ @param[in] Guid Pointer to a 128-bit unique value that designates
which namespace to retrieve a value from.
@param[in] TokenNumber The PCD token number to retrieve a current value for.
@return Return the size.
**/
UINTN
EFIAPI
LibPcdGetExSize (
IN CONST GUID *Guid,
IN UINTN TokenNumber
);
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the 8-bit value for the token specified by TokenNumber
+
+ Sets the 8-bit value for the token specified by TokenNumber
to the value specified by Value. Value is returned.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 8-bit value to set.
@return Return the Value that was set.
**/
UINT8
EFIAPI
LibPcdSet8 (
IN UINTN TokenNumber,
IN UINT8 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the 16-bit value for the token specified by TokenNumber
+
+ Sets the 16-bit value for the token specified by TokenNumber
to the value specified by Value. Value is returned.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 16-bit value to set.
@return Return the Value that was set.
**/
UINT16
EFIAPI
LibPcdSet16 (
IN UINTN TokenNumber,
IN UINT16 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the 32-bit value for the token specified by TokenNumber
+
+ Sets the 32-bit value for the token specified by TokenNumber
to the value specified by Value. Value is returned.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 32-bit value to set.
@return Return the Value that was set.
**/
UINT32
EFIAPI
LibPcdSet32 (
IN UINTN TokenNumber,
IN UINT32 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the 64-bit value for the token specified by TokenNumber
+
+ Sets the 64-bit value for the token specified by TokenNumber
to the value specified by Value. Value is returned.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 64-bit value to set.
@return Return the Value that was set.
**/
UINT64
EFIAPI
LibPcdSet64 (
IN UINTN TokenNumber,
IN UINT64 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets a buffer for the token specified by TokenNumber to the value
- specified by Buffer and SizeOfBuffer. Buffer is returned.
- If SizeOfBuffer is greater than the maximum size support by TokenNumber,
- then set SizeOfBuffer to the maximum size supported by TokenNumber and
+
+ Sets a buffer for the token specified by TokenNumber to the value
+ specified by Buffer and SizeOfBuffer. Buffer is returned.
+ If SizeOfBuffer is greater than the maximum size support by TokenNumber,
+ then set SizeOfBuffer to the maximum size supported by TokenNumber and
return NULL to indicate that the set operation was not actually performed.
- If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the
+ If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the
maximum size supported by TokenName and NULL must be returned.
-
+
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
-
+
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in, out] SizeOfBuffer The size, in bytes, of Buffer.
@param[in] Buffer A pointer to the buffer to set.
@return Return the pointer for the Buffer that was set.
**/
VOID *
EFIAPI
LibPcdSetPtr (
IN UINTN TokenNumber,
IN OUT UINTN *SizeOfBuffer,
IN CONST VOID *Buffer
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the Boolean value for the token specified by TokenNumber
+
+ Sets the Boolean value for the token specified by TokenNumber
to the value specified by Value. Value is returned.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The boolean value to set.
@return Return the Value that was set.
**/
BOOLEAN
EFIAPI
LibPcdSetBool (
IN UINTN TokenNumber,
IN BOOLEAN Value
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the 8-bit value for the token specified by TokenNumber and
+
+ Sets the 8-bit value for the token specified by TokenNumber and
Guid to the value specified by Value. Value is returned.
If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that
+ @param[in] Guid Pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 8-bit value to set.
@return Return the Value that was set.
**/
UINT8
EFIAPI
LibPcdSetEx8 (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN UINT8 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the 16-bit value for the token specified by TokenNumber and
+
+ Sets the 16-bit value for the token specified by TokenNumber and
Guid to the value specified by Value. Value is returned.
If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that
+ @param[in] Guid Pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 16-bit value to set.
@return Return the Value that was set.
**/
UINT16
EFIAPI
LibPcdSetEx16 (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN UINT16 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the 32-bit value for the token specified by TokenNumber and
+
+ Sets the 32-bit value for the token specified by TokenNumber and
Guid to the value specified by Value. Value is returned.
If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that
+ @param[in] Guid Pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 32-bit value to set.
@return Return the Value that was set.
**/
UINT32
EFIAPI
LibPcdSetEx32 (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN UINT32 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the 64-bit value for the token specified by TokenNumber and
+
+ Sets the 64-bit value for the token specified by TokenNumber and
Guid to the value specified by Value. Value is returned.
If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that
+ @param[in] Guid Pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 64-bit value to set.
@return Return the Value that was set.
**/
UINT64
EFIAPI
LibPcdSetEx64 (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN UINT64 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets a buffer for the token specified by TokenNumber to the value specified by
- Buffer and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than
- the maximum size support by TokenNumber, then set SizeOfBuffer to the maximum size
- supported by TokenNumber and return NULL to indicate that the set operation
+
+ Sets a buffer for the token specified by TokenNumber to the value specified by
+ Buffer and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than
+ the maximum size support by TokenNumber, then set SizeOfBuffer to the maximum size
+ supported by TokenNumber and return NULL to indicate that the set operation
was not actually performed.
-
+
If Guid is NULL, then ASSERT().
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
-
- @param[in] Guid Pointer to a 128-bit unique value that
+
+ @param[in] Guid Pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in, out] SizeOfBuffer The size, in bytes, of Buffer.
@param[in] Buffer A pointer to the buffer to set.
@return Return the pointer to the Buffer that was set.
**/
VOID *
EFIAPI
LibPcdSetExPtr (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN OUT UINTN *SizeOfBuffer,
IN VOID *Buffer
);
/**
This function provides a means by which to set a value for a given PCD token.
-
- Sets the Boolean value for the token specified by TokenNumber and
+
+ Sets the Boolean value for the token specified by TokenNumber and
Guid to the value specified by Value. Value is returned.
If Guid is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that
+ @param[in] Guid Pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The Boolean value to set.
@return Return the Value that was set.
**/
BOOLEAN
EFIAPI
LibPcdSetExBool (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN BOOLEAN Value
);
#endif
/**
This function provides a means by which to set a value for a given PCD token.
Sets the 8-bit value for the token specified by TokenNumber
to the value specified by Value.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 8-bit value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSet8S (
IN UINTN TokenNumber,
IN UINT8 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets the 16-bit value for the token specified by TokenNumber
to the value specified by Value.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 16-bit value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSet16S (
IN UINTN TokenNumber,
IN UINT16 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets the 32-bit value for the token specified by TokenNumber
to the value specified by Value.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 32-bit value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSet32S (
IN UINTN TokenNumber,
IN UINT32 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets the 64-bit value for the token specified by TokenNumber
to the value specified by Value.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 64-bit value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSet64S (
IN UINTN TokenNumber,
IN UINT64 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets a buffer for the token specified by TokenNumber to the value specified
by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size
support by TokenNumber, then set SizeOfBuffer to the maximum size supported by
TokenNumber and return RETURN_INVALID_PARAMETER to indicate that the set operation
was not actually performed.
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the
maximum size supported by TokenName and RETURN_INVALID_PARAMETER must be returned.
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in, out] SizeOfBuffer The size, in bytes, of Buffer.
@param[in] Buffer A pointer to the buffer to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSetPtrS (
IN UINTN TokenNumber,
IN OUT UINTN *SizeOfBuffer,
IN CONST VOID *Buffer
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets the boolean value for the token specified by TokenNumber
to the value specified by Value.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The boolean value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSetBoolS (
IN UINTN TokenNumber,
IN BOOLEAN Value
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets the 8-bit value for the token specified by TokenNumber
to the value specified by Value.
If Guid is NULL, then ASSERT().
@param[in] Guid The pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 8-bit value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSetEx8S (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN UINT8 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets the 16-bit value for the token specified by TokenNumber
to the value specified by Value.
If Guid is NULL, then ASSERT().
@param[in] Guid The pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 16-bit value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSetEx16S (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN UINT16 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets the 32-bit value for the token specified by TokenNumber
to the value specified by Value.
If Guid is NULL, then ASSERT().
@param[in] Guid The pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 32-bit value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSetEx32S (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN UINT32 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets the 64-bit value for the token specified by TokenNumber
to the value specified by Value.
If Guid is NULL, then ASSERT().
@param[in] Guid The pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The 64-bit value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSetEx64S (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN UINT64 Value
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets a buffer for the token specified by TokenNumber to the value specified by
Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size
support by TokenNumber, then set SizeOfBuffer to the maximum size supported by
TokenNumber and return RETURN_INVALID_PARAMETER to indicate that the set operation
was not actually performed.
If Guid is NULL, then ASSERT().
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
@param[in] Guid Pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in, out] SizeOfBuffer The size, in bytes, of Buffer.
@param[in] Buffer A pointer to the buffer to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSetExPtrS (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN OUT UINTN *SizeOfBuffer,
IN VOID *Buffer
);
/**
This function provides a means by which to set a value for a given PCD token.
Sets the boolean value for the token specified by TokenNumber
to the value specified by Value.
If Guid is NULL, then ASSERT().
@param[in] Guid The pointer to a 128-bit unique value that
designates which namespace to set a value from.
@param[in] TokenNumber The PCD token number to set a current value for.
@param[in] Value The boolean value to set.
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPcdSetExBoolS (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
IN BOOLEAN Value
);
/**
This notification function serves two purposes.
Firstly, it notifies the module that did the registration that the value of this
PCD token has been set.
Secondly, it provides a mechanism for the module that did the registration to intercept
the set operation and override the value been set if necessary. After the invocation of
the callback function, TokenData will be used by PCD service PEIM or driver to modify th
- internal data in PCD database.
+ internal data in PCD database.
@param[in] CallBackGuid The PCD token GUID being set.
@param[in] CallBackToken The PCD token number being set.
@param[in, out] TokenData A pointer to the token data being set.
@param[in] TokenDataSize The size, in bytes, of the data being set.
**/
typedef
VOID
(EFIAPI *PCD_CALLBACK)(
IN CONST GUID *CallBackGuid, OPTIONAL
IN UINTN CallBackToken,
IN OUT VOID *TokenData,
IN UINTN TokenDataSize
);
/**
Set up a notification function that is called when a specified token is set.
-
- When the token specified by TokenNumber and Guid is set,
- then notification function specified by NotificationFunction is called.
+
+ When the token specified by TokenNumber and Guid is set,
+ then notification function specified by NotificationFunction is called.
If Guid is NULL, then the default token space is used.
If NotificationFunction is NULL, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates which
- namespace to set a value from. If NULL, then the default
+ @param[in] Guid Pointer to a 128-bit unique value that designates which
+ namespace to set a value from. If NULL, then the default
token space is used.
@param[in] TokenNumber The PCD token number to monitor.
- @param[in] NotificationFunction The function to call when the token
+ @param[in] NotificationFunction The function to call when the token
specified by Guid and TokenNumber is set.
**/
VOID
EFIAPI
LibPcdCallbackOnSet (
IN CONST GUID *Guid, OPTIONAL
IN UINTN TokenNumber,
IN PCD_CALLBACK NotificationFunction
);
/**
Disable a notification function that was established with LibPcdCallbackonSet().
-
+
Disable a notification function that was previously established with LibPcdCallbackOnSet().
If NotificationFunction is NULL, then ASSERT().
- If LibPcdCallbackOnSet() was not previously called with Guid, TokenNumber,
+ If LibPcdCallbackOnSet() was not previously called with Guid, TokenNumber,
and NotificationFunction, then ASSERT().
-
+
@param[in] Guid Specify the GUID token space.
@param[in] TokenNumber Specify the token number.
@param[in] NotificationFunction The callback function to be unregistered.
**/
VOID
EFIAPI
LibPcdCancelCallback (
IN CONST GUID *Guid, OPTIONAL
IN UINTN TokenNumber,
IN PCD_CALLBACK NotificationFunction
);
/**
Retrieves the next token in a token space.
-
- Retrieves the next PCD token number from the token space specified by Guid.
- If Guid is NULL, then the default token space is used. If TokenNumber is 0,
- then the first token number is returned. Otherwise, the token number that
- follows TokenNumber in the token space is returned. If TokenNumber is the last
- token number in the token space, then 0 is returned.
-
+
+ Retrieves the next PCD token number from the token space specified by Guid.
+ If Guid is NULL, then the default token space is used. If TokenNumber is 0,
+ then the first token number is returned. Otherwise, the token number that
+ follows TokenNumber in the token space is returned. If TokenNumber is the last
+ token number in the token space, then 0 is returned.
+
If TokenNumber is not 0 and is not in the token space specified by Guid, then ASSERT().
- @param[in] Guid Pointer to a 128-bit unique value that designates which namespace
+ @param[in] Guid Pointer to a 128-bit unique value that designates which namespace
to set a value from. If NULL, then the default token space is used.
- @param[in] TokenNumber The previous PCD token number. If 0, then retrieves the first PCD
+ @param[in] TokenNumber The previous PCD token number. If 0, then retrieves the first PCD
token number.
@return The next valid token number.
**/
-UINTN
+UINTN
EFIAPI
LibPcdGetNextToken (
IN CONST GUID *Guid, OPTIONAL
IN UINTN TokenNumber
);
/**
Used to retrieve the list of available PCD token space GUIDs.
-
+
Returns the PCD token space GUID that follows TokenSpaceGuid in the list of token spaces
in the platform.
If TokenSpaceGuid is NULL, then a pointer to the first PCD token spaces returned.
If TokenSpaceGuid is the last PCD token space GUID in the list, then NULL is returned.
-
+
@param TokenSpaceGuid Pointer to the a PCD token space GUID
@return The next valid token namespace.
**/
GUID *
EFIAPI
LibPcdGetNextTokenSpace (
IN CONST GUID *TokenSpaceGuid
);
/**
Sets a value of a patchable PCD entry that is type pointer.
-
- Sets the PCD entry specified by PatchVariable to the value specified by Buffer
- and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than
- MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return
- NULL to indicate that the set operation was not actually performed.
- If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
+
+ Sets the PCD entry specified by PatchVariable to the value specified by Buffer
+ and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than
+ MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return
+ NULL to indicate that the set operation was not actually performed.
+ If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
MaximumDatumSize and NULL must be returned.
-
+
If PatchVariable is NULL, then ASSERT().
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
- @param[out] PatchVariable A pointer to the global variable in a module that is
+ @param[out] PatchVariable A pointer to the global variable in a module that is
the target of the set operation.
@param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable.
@param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer.
@param[in] Buffer A pointer to the buffer to used to set the target variable.
-
+
@return Return the pointer to the Buffer that was set.
**/
VOID *
EFIAPI
LibPatchPcdSetPtr (
OUT VOID *PatchVariable,
IN UINTN MaximumDatumSize,
IN OUT UINTN *SizeOfBuffer,
IN CONST VOID *Buffer
);
/**
Sets a value of a patchable PCD entry that is type pointer.
Sets the PCD entry specified by PatchVariable to the value specified
by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize,
then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER
to indicate that the set operation was not actually performed.
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned.
If PatchVariable is NULL, then ASSERT().
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
@param[out] PatchVariable A pointer to the global variable in a module that is
the target of the set operation.
@param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable.
@param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer.
@param[in] Buffer A pointer to the buffer to used to set the target variable.
-
+
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPatchPcdSetPtrS (
OUT VOID *PatchVariable,
IN UINTN MaximumDatumSize,
IN OUT UINTN *SizeOfBuffer,
IN CONST VOID *Buffer
);
/**
Sets a value and size of a patchable PCD entry that is type pointer.
-
- Sets the PCD entry specified by PatchVariable to the value specified by Buffer
- and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than
- MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return
- NULL to indicate that the set operation was not actually performed.
- If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
+
+ Sets the PCD entry specified by PatchVariable to the value specified by Buffer
+ and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than
+ MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return
+ NULL to indicate that the set operation was not actually performed.
+ If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
MaximumDatumSize and NULL must be returned.
-
+
If PatchVariable is NULL, then ASSERT().
If SizeOfPatchVariable is NULL, then ASSERT().
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
- @param[out] PatchVariable A pointer to the global variable in a module that is
+ @param[out] PatchVariable A pointer to the global variable in a module that is
the target of the set operation.
@param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable.
@param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable.
@param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer.
@param[in] Buffer A pointer to the buffer to used to set the target variable.
-
+
@return Return the pointer to the Buffer that was set.
**/
VOID *
EFIAPI
LibPatchPcdSetPtrAndSize (
OUT VOID *PatchVariable,
OUT UINTN *SizeOfPatchVariable,
IN UINTN MaximumDatumSize,
IN OUT UINTN *SizeOfBuffer,
IN CONST VOID *Buffer
);
/**
Sets a value and size of a patchable PCD entry that is type pointer.
Sets the PCD entry specified by PatchVariable to the value specified
by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize,
then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER
to indicate that the set operation was not actually performed.
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned.
If PatchVariable is NULL, then ASSERT().
If SizeOfPatchVariable is NULL, then ASSERT().
If SizeOfBuffer is NULL, then ASSERT().
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
@param[out] PatchVariable A pointer to the global variable in a module that is
the target of the set operation.
@param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable.
@param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable.
@param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer.
@param[in] Buffer A pointer to the buffer to used to set the target variable.
-
+
@return The status of the set operation.
**/
RETURN_STATUS
EFIAPI
LibPatchPcdSetPtrAndSizeS (
OUT VOID *PatchVariable,
OUT UINTN *SizeOfPatchVariable,
IN UINTN MaximumDatumSize,
IN OUT UINTN *SizeOfBuffer,
IN CONST VOID *Buffer
);
typedef enum {
PCD_TYPE_8,
PCD_TYPE_16,
PCD_TYPE_32,
PCD_TYPE_64,
PCD_TYPE_BOOL,
PCD_TYPE_PTR
} PCD_TYPE;
typedef struct {
///
/// The returned information associated with the requested TokenNumber. If
/// TokenNumber is 0, then PcdType is set to PCD_TYPE_8.
///
PCD_TYPE PcdType;
///
/// The size of the data in bytes associated with the TokenNumber specified. If
/// TokenNumber is 0, then PcdSize is set 0.
///
UINTN PcdSize;
///
/// The null-terminated ASCII string associated with a given token. If the
/// TokenNumber specified was 0, then this field corresponds to the null-terminated
/// ASCII string associated with the token's namespace Guid. If NULL, there is no
/// name associated with this request.
///
CHAR8 *PcdName;
} PCD_INFO;
/**
Retrieve additional information associated with a PCD token.
This includes information such as the type of value the TokenNumber is associated with as well as possible
human readable name that is associated with the token.
If TokenNumber is not in the default token space specified, then ASSERT().
@param[in] TokenNumber The PCD token number.
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
**/
VOID
EFIAPI
LibPcdGetInfo (
IN UINTN TokenNumber,
OUT PCD_INFO *PcdInfo
);
/**
Retrieve additional information associated with a PCD token.
This includes information such as the type of value the TokenNumber is associated with as well as possible
human readable name that is associated with the token.
If TokenNumber is not in the token space specified by Guid, then ASSERT().
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param[in] TokenNumber The PCD token number.
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
**/
VOID
EFIAPI
LibPcdGetInfoEx (
IN CONST GUID *Guid,
IN UINTN TokenNumber,
OUT PCD_INFO *PcdInfo
);
/**
Retrieve the currently set SKU Id.
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
Id is returned.
**/
UINTN
EFIAPI
LibPcdGetSku (
VOID
);
#endif
Property changes on: head/sys/contrib/edk2/Include/Library/PcdLib.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Library/PcdLib.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Library/PcdLib.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Library/PcdLib.h:r277327-280030
Merged /projects/clang380-import/sys/contrib/edk2/Include/Library/PcdLib.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Library/PcdLib.h:r285199-285661
Merged /vendor/edk2/dist/MdePkg/Include/Library/PcdLib.h:r361765
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Library/PcdLib.h:r303899-303984
Merged /projects/openssl111/sys/contrib/edk2/Include/Library/PcdLib.h:r339079
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Library/PcdLib.h:r319973-326168
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Library/PcdLib.h:r254613-256243
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Library/PcdLib.h:r298865-299093
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Library/PcdLib.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Library/PcdLib.h:r303380
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Library/PcdLib.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Library/PcdLib.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Library/PcdLib.h:r262258-262612
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Library/PcdLib.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/Library/PcdLib.h:r263908
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Library/PcdLib.h:r260687-261245
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Library/PcdLib.h:r303985-305318
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Library/PcdLib.h:r283596-287505
Merged /projects/bectl/sys/contrib/edk2/Include/Library/PcdLib.h:r336666-337662
Merged /projects/ipfw/sys/contrib/edk2/Include/Library/PcdLib.h:r267383-272837
Merged /projects/building-blocks/sys/contrib/edk2/Include/Library/PcdLib.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Library/PcdLib.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/collation/sys/contrib/edk2/Include/Library/PcdLib.h:r286424-290491
Merged /projects/vnet/sys/contrib/edk2/Include/Library/PcdLib.h:r295220
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Library/PcdLib.h:r356848-358850
Merged /projects/release-arm64/sys/contrib/edk2/Include/Library/PcdLib.h:r281786,281788,281792
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Library/PcdLib.h:r1540-186085
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Library/PcdLib.h:r295193
Merged /projects/clang350-import/sys/contrib/edk2/Include/Library/PcdLib.h:r274961-275126,275128-275133,275135-276476
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Library/PcdLib.h:r276164,276167,276170-276172
Merged /projects/clang370-import/sys/contrib/edk2/Include/Library/PcdLib.h:r287506-288928
Merged /projects/release-embedded/sys/contrib/edk2/Include/Library/PcdLib.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/quota64/sys/contrib/edk2/Include/Library/PcdLib.h:r184125-207707
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Library/PcdLib.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Library/PcdLib.h:r289470-289489
Merged /projects/largeSMP/sys/contrib/edk2/Include/Library/PcdLib.h:r221273-222812,222815-223757
Merged /projects/clang390-import/sys/contrib/edk2/Include/Library/PcdLib.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Library/PcdLib.h:r309166-310192
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Library/PcdLib.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/Library/PcdLib.h:r286179-290100
Merged /projects/head_mfi/sys/contrib/edk2/Include/Library/PcdLib.h:r233621
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Library/PcdLib.h:r266519,269993
Merged /projects/fuse2/sys/contrib/edk2/Include/Library/PcdLib.h:r344558-350621,350944,350955
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Library/PcdLib.h:r262185-262527
Merged /projects/release-pkg/sys/contrib/edk2/Include/Library/PcdLib.h:r274131-298104
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Library/PcdLib.h:r230929-231848
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Library/PcdLib.h:r291227-291228,292618
Merged /projects/clang900-import/sys/contrib/edk2/Include/Library/PcdLib.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Library/PcdLib.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Library/PcdLib.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Library/PcdLib.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Library/PcdLib.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Library/PcdLib.h:r326936-327339,327341-327933
Index: head/sys/contrib/edk2/Include/Library/PrintLib.h
===================================================================
--- head/sys/contrib/edk2/Include/Library/PrintLib.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Library/PrintLib.h (revision 361802)
@@ -1,1052 +1,1045 @@
/** @file
Provides services to print a formatted string to a buffer. All combinations of
Unicode and ASCII strings are supported.
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
-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.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- The Print Library functions provide a simple means to produce formatted output
- strings. Many of the output functions use a format string to describe how to
- format the output of variable arguments. The format string consists of normal
- text and argument descriptors. There are no restrictions for how the normal
- text and argument descriptors can be mixed. The following end of line(EOL)
+ The Print Library functions provide a simple means to produce formatted output
+ strings. Many of the output functions use a format string to describe how to
+ format the output of variable arguments. The format string consists of normal
+ text and argument descriptors. There are no restrictions for how the normal
+ text and argument descriptors can be mixed. The following end of line(EOL)
translations must be performed on the contents of the format string:
-
+
- '\\r' is translated to '\\r'
- '\\r\\n' is translated to '\\r\\n'
- - '\\n' is translated to '\\r\\n'
+ - '\\n' is translated to '\\r\\n'
- '\\n\\r' is translated to '\\r\\n'
-
- This does not follow the ANSI C standard for sprint(). The format of argument
- descriptors is described below. The ANSI C standard for sprint() has been
- followed for some of the format types, and has not been followed for others.
+
+ This does not follow the ANSI C standard for sprint(). The format of argument
+ descriptors is described below. The ANSI C standard for sprint() has been
+ followed for some of the format types, and has not been followed for others.
The exceptions are noted below.
%[flags][width][.precision]type
[flags]:
- - -
- - The field is left justified. If not flag is not specified, then the
+ - -
+ - The field is left justified. If not flag is not specified, then the
field is right justified.
- - space
+ - space
- Prefix a space character to a number. Only valid for types X, x, and d.
- - +
- - Prefix a plus character to a number. Only valid for types X, x, and d.
+ - +
+ - Prefix a plus character to a number. Only valid for types X, x, and d.
If both space and + are specified, then space is ignored.
- 0
- - Pad with 0 characters to the left of a number. Only valid for types
+ - Pad with 0 characters to the left of a number. Only valid for types
X, x, and d.
- ,
- Place a comma every 3rd digit of the number. Only valid for type d.
If 0 is also specified, then 0 is ignored.
- L, l
- The number being printed is size UINT64. Only valid for types X, x, and d.
If this flag is not specified, then the number being printed is size int.
- NOTE: All invalid flags are ignored.
[width]:
- *
- - The width of the field is specified by a UINTN argument in the
+ - The width of the field is specified by a UINTN argument in the
argument list.
- number
- - The number specified as a decimal value represents the width of
+ - The number specified as a decimal value represents the width of
the field.
- NOTE: If [width] is not specified, then a field width of 0 is assumed.
[.precision]:
- *
- - The precision of the field is specified by a UINTN argument in the
+ - The precision of the field is specified by a UINTN argument in the
argument list.
- number
- - The number specified as a decimal value represents the precision of
+ - The number specified as a decimal value represents the precision of
the field.
- NOTE: If [.precision] is not specified, then a precision of 0 is assumed.
type:
- %
- Print a %%.
- c
- - The argument is a Unicode character. ASCII characters can be printed
+ - The argument is a Unicode character. ASCII characters can be printed
using this type too by making sure bits 8..15 of the argument are set to 0.
- x
- - The argument is an unsigned hexadecimal number. The characters used are 0..9 and
- A..F. If the flag 'L' is not specified, then the argument is assumed
+ - The argument is an unsigned hexadecimal number. The characters used are 0..9 and
+ A..F. If the flag 'L' is not specified, then the argument is assumed
to be size int. This does not follow ANSI C.
- X
- - The argument is an unsigned hexadecimal number and the number is padded with
- zeros. This is equivalent to a format string of "0x". If the flag
- 'L' is not specified, then the argument is assumed to be size int.
+ - The argument is an unsigned hexadecimal number and the number is padded with
+ zeros. This is equivalent to a format string of "0x". If the flag
+ 'L' is not specified, then the argument is assumed to be size int.
This does not follow ANSI C.
- d
- - The argument is a signed decimal number. If the flag 'L' is not specified,
- then the argument is assumed to be size int.
+ - The argument is a signed decimal number. If the flag 'L' is not specified,
+ then the argument is assumed to be size int.
- u
- - The argument is a unsigned decimal number. If the flag 'L' is not specified,
+ - The argument is a unsigned decimal number. If the flag 'L' is not specified,
then the argument is assumed to be size int.
- p
- - The argument is a pointer that is a (VOID *), and it is printed as an
+ - The argument is a pointer that is a (VOID *), and it is printed as an
unsigned hexadecimal number The characters used are 0..9 and A..F.
- a
- - The argument is a pointer to an ASCII string.
+ - The argument is a pointer to an ASCII string.
This does not follow ANSI C.
- S, s
- - The argument is a pointer to a Unicode string.
+ - The argument is a pointer to a Unicode string.
This does not follow ANSI C.
- g
- - The argument is a pointer to a GUID structure. The GUID is printed
- in the format XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.
+ - The argument is a pointer to a GUID structure. The GUID is printed
+ in the format XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.
This does not follow ANSI C.
- t
- - The argument is a pointer to an EFI_TIME structure. The time and
- date are printed in the format "mm/dd/yyyy hh:mm" where mm is the
- month zero padded, dd is the day zero padded, yyyy is the year zero
- padded, hh is the hour zero padded, and mm is minutes zero padded.
- This does not follow ANSI C.
+ - The argument is a pointer to an EFI_TIME structure. The time and
+ date are printed in the format "mm/dd/yyyy hh:mm" where mm is the
+ month zero padded, dd is the day zero padded, yyyy is the year zero
+ padded, hh is the hour zero padded, and mm is minutes zero padded.
+ This does not follow ANSI C.
- r
- - The argument is a RETURN_STATUS value. This value is converted to
- a string following the table below. This does not follow ANSI C.
- - RETURN_SUCCESS
+ - The argument is a RETURN_STATUS value. This value is converted to
+ a string following the table below. This does not follow ANSI C.
+ - RETURN_SUCCESS
- "Success"
- - RETURN_LOAD_ERROR
+ - RETURN_LOAD_ERROR
- "Load Error"
- - RETURN_INVALID_PARAMETER
+ - RETURN_INVALID_PARAMETER
- "Invalid Parameter"
- - RETURN_UNSUPPORTED
+ - RETURN_UNSUPPORTED
- "Unsupported"
- - RETURN_BAD_BUFFER_SIZE
+ - RETURN_BAD_BUFFER_SIZE
- "Bad Buffer Size"
- - RETURN_BUFFER_TOO_SMALL
+ - RETURN_BUFFER_TOO_SMALL
- "Buffer Too Small"
- - RETURN_NOT_READY
+ - RETURN_NOT_READY
- "Not Ready"
- - RETURN_DEVICE_ERROR
+ - RETURN_DEVICE_ERROR
- "Device Error"
- - RETURN_WRITE_PROTECTED
+ - RETURN_WRITE_PROTECTED
- "Write Protected"
- - RETURN_OUT_OF_RESOURCES
+ - RETURN_OUT_OF_RESOURCES
- "Out of Resources"
- - RETURN_VOLUME_CORRUPTED
+ - RETURN_VOLUME_CORRUPTED
- "Volume Corrupt"
- - RETURN_VOLUME_FULL
+ - RETURN_VOLUME_FULL
- "Volume Full"
- - RETURN_NO_MEDIA
+ - RETURN_NO_MEDIA
- "No Media"
- - RETURN_MEDIA_CHANGED
+ - RETURN_MEDIA_CHANGED
- "Media changed"
- - RETURN_NOT_FOUND
+ - RETURN_NOT_FOUND
- "Not Found"
- - RETURN_ACCESS_DENIED
+ - RETURN_ACCESS_DENIED
- "Access Denied"
- - RETURN_NO_RESPONSE
+ - RETURN_NO_RESPONSE
- "No Response"
- - RETURN_NO_MAPPING
+ - RETURN_NO_MAPPING
- "No mapping"
- - RETURN_TIMEOUT
+ - RETURN_TIMEOUT
- "Time out"
- - RETURN_NOT_STARTED
+ - RETURN_NOT_STARTED
- "Not started"
- - RETURN_ALREADY_STARTED
+ - RETURN_ALREADY_STARTED
- "Already started"
- - RETURN_ABORTED
+ - RETURN_ABORTED
- "Aborted"
- - RETURN_ICMP_ERROR
+ - RETURN_ICMP_ERROR
- "ICMP Error"
- - RETURN_TFTP_ERROR
+ - RETURN_TFTP_ERROR
- "TFTP Error"
- - RETURN_PROTOCOL_ERROR
+ - RETURN_PROTOCOL_ERROR
- "Protocol Error"
- - RETURN_WARN_UNKNOWN_GLYPH
+ - RETURN_WARN_UNKNOWN_GLYPH
- "Warning Unknown Glyph"
- - RETURN_WARN_DELETE_FAILURE
+ - RETURN_WARN_DELETE_FAILURE
- "Warning Delete Failure"
- - RETURN_WARN_WRITE_FAILURE
+ - RETURN_WARN_WRITE_FAILURE
- "Warning Write Failure"
- - RETURN_WARN_BUFFER_TOO_SMALL
+ - RETURN_WARN_BUFFER_TOO_SMALL
- "Warning Buffer Too Small"
**/
#ifndef __PRINT_LIB_H__
#define __PRINT_LIB_H__
///
/// Define the maximum number of characters that are required to
-/// encode with a NULL terminator a decimal, hexadecimal, GUID,
+/// encode with a NULL terminator a decimal, hexadecimal, GUID,
/// or TIME value.
-///
+///
/// Maximum Length Decimal String = 28
/// "-9,223,372,036,854,775,808"
/// Maximum Length Hexadecimal String = 17
/// "FFFFFFFFFFFFFFFF"
/// Maximum Length GUID = 37
/// "00000000-0000-0000-0000-000000000000"
/// Maximum Length TIME = 18
/// "12/12/2006 12:12"
///
#define MAXIMUM_VALUE_CHARACTERS 38
///
-/// Flags bitmask values use in UnicodeValueToString() and
+/// Flags bitmask values use in UnicodeValueToString() and
/// AsciiValueToString()
///
#define LEFT_JUSTIFY 0x01
#define COMMA_TYPE 0x08
#define PREFIX_ZERO 0x20
#define RADIX_HEX 0x80
/**
Produces a Null-terminated Unicode string in an output buffer based on
a Null-terminated Unicode format string and a VA_LIST argument list.
This function is similar as vsnprintf_s defined in C11.
Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
and BufferSize.
The Unicode string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list specified by Marker based on the
contents of the format string.
The number of Unicode characters in the produced output buffer is returned not including
the Null-terminator.
If StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 1 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and BufferSize >
(PcdMaximumUnicodeStringLength * sizeof (CHAR16) + 1), then ASSERT(). Also, the output
buffer is unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0 or 1, then the output buffer is unmodified and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
Unicode string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated Unicode format string.
@param Marker VA_LIST marker for the variable argument list.
@return The number of Unicode characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
UnicodeVSPrint (
OUT CHAR16 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR16 *FormatString,
IN VA_LIST Marker
);
/**
Produces a Null-terminated Unicode string in an output buffer based on
a Null-terminated Unicode format string and a BASE_LIST argument list.
Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
and BufferSize.
The Unicode string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list specified by Marker based on the
contents of the format string.
The number of Unicode characters in the produced output buffer is returned not including
the Null-terminator.
If StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 1 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and BufferSize >
(PcdMaximumUnicodeStringLength * sizeof (CHAR16) + 1), then ASSERT(). Also, the output
buffer is unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0 or 1, then the output buffer is unmodified and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
Unicode string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated Unicode format string.
@param Marker BASE_LIST marker for the variable argument list.
@return The number of Unicode characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
UnicodeBSPrint (
OUT CHAR16 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR16 *FormatString,
IN BASE_LIST Marker
);
/**
Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
Unicode format string and variable argument list.
This function is similar as snprintf_s defined in C11.
Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
and BufferSize.
The Unicode string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list based on the contents of the format string.
The number of Unicode characters in the produced output buffer is returned not including
the Null-terminator.
If StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 1 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and BufferSize >
(PcdMaximumUnicodeStringLength * sizeof (CHAR16) + 1), then ASSERT(). Also, the output
buffer is unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0 or 1, then the output buffer is unmodified and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
Unicode string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated Unicode format string.
@param ... Variable argument list whose contents are accessed based on the
format string specified by FormatString.
@return The number of Unicode characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
UnicodeSPrint (
OUT CHAR16 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR16 *FormatString,
...
);
/**
Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
ASCII format string and a VA_LIST argument list.
This function is similar as vsnprintf_s defined in C11.
Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
and BufferSize.
The Unicode string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list specified by Marker based on the
contents of the format string.
The number of Unicode characters in the produced output buffer is returned not including
the Null-terminator.
If StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().
If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 1 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and BufferSize >
(PcdMaximumUnicodeStringLength * sizeof (CHAR16) + 1), then ASSERT(). Also, the output
buffer is unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and FormatString contains more than
PcdMaximumAsciiStringLength Ascii characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0 or 1, then no output buffer is produced and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
Unicode string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated ASCII format string.
@param Marker VA_LIST marker for the variable argument list.
@return The number of Unicode characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
UnicodeVSPrintAsciiFormat (
OUT CHAR16 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR8 *FormatString,
IN VA_LIST Marker
);
/**
Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
ASCII format string and a BASE_LIST argument list.
Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
and BufferSize.
The Unicode string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list specified by Marker based on the
contents of the format string.
The number of Unicode characters in the produced output buffer is returned not including
the Null-terminator.
If StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().
If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 1 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and BufferSize >
(PcdMaximumUnicodeStringLength * sizeof (CHAR16) + 1), then ASSERT(). Also, the output
buffer is unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and FormatString contains more than
PcdMaximumAsciiStringLength Ascii characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0 or 1, then no output buffer is produced and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
Unicode string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated ASCII format string.
@param Marker BASE_LIST marker for the variable argument list.
@return The number of Unicode characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
UnicodeBSPrintAsciiFormat (
OUT CHAR16 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR8 *FormatString,
IN BASE_LIST Marker
);
/**
Produces a Null-terminated Unicode string in an output buffer based on a Null-terminated
ASCII format string and variable argument list.
This function is similar as snprintf_s defined in C11.
Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
and BufferSize.
The Unicode string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list based on the contents of the
format string.
The number of Unicode characters in the produced output buffer is returned not including
the Null-terminator.
If StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().
If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 1 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and BufferSize >
(PcdMaximumUnicodeStringLength * sizeof (CHAR16) + 1), then ASSERT(). Also, the output
buffer is unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and FormatString contains more than
PcdMaximumAsciiStringLength Ascii characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0 or 1, then no output buffer is produced and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
Unicode string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated ASCII format string.
@param ... Variable argument list whose contents are accessed based on the
format string specified by FormatString.
@return The number of Unicode characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
UnicodeSPrintAsciiFormat (
OUT CHAR16 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR8 *FormatString,
...
);
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
[ATTENTION] This function is deprecated for security reason.
Converts a decimal value to a Null-terminated Unicode string.
-
- Converts the decimal number specified by Value to a Null-terminated Unicode
- string specified by Buffer containing at most Width characters. No padding of spaces
+
+ Converts the decimal number specified by Value to a Null-terminated Unicode
+ string specified by Buffer containing at most Width characters. No padding of spaces
is ever performed. If Width is 0 then a width of MAXIMUM_VALUE_CHARACTERS is assumed.
The number of Unicode characters in Buffer is returned, not including the Null-terminator.
If the conversion contains more than Width characters, then only the first
- Width characters are returned, and the total number of characters
+ Width characters are returned, and the total number of characters
required to perform the conversion is returned.
- Additional conversion parameters are specified in Flags.
-
+ Additional conversion parameters are specified in Flags.
+
The Flags bit LEFT_JUSTIFY is always ignored.
All conversions are left justified in Buffer.
If Width is 0, PREFIX_ZERO is ignored in Flags.
If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas
are inserted every 3rd digit starting from the right.
- If RADIX_HEX is set in Flags, then the output buffer will be
+ If RADIX_HEX is set in Flags, then the output buffer will be
formatted in hexadecimal format.
If Value is < 0 and RADIX_HEX is not set in Flags, then the fist character in Buffer is a '-'.
- If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored,
- then Buffer is padded with '0' characters so the combination of the optional '-'
+ If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored,
+ then Buffer is padded with '0' characters so the combination of the optional '-'
sign character, '0' characters, digit characters for Value, and the Null-terminator
add up to Width characters.
If both COMMA_TYPE and RADIX_HEX are set in Flags, then ASSERT().
If Buffer is NULL, then ASSERT().
If Buffer is not aligned on a 16-bit boundary, then ASSERT().
If unsupported bits are set in Flags, then ASSERT().
If both COMMA_TYPE and RADIX_HEX are set in Flags, then ASSERT().
If Width >= MAXIMUM_VALUE_CHARACTERS, then ASSERT()
@param Buffer The pointer to the output buffer for the produced Null-terminated
Unicode string.
@param Flags The bitmask of flags that specify left justification, zero pad, and commas.
@param Value The 64-bit signed value to convert to a string.
@param Width The maximum number of Unicode characters to place in Buffer, not including
the Null-terminator.
-
+
@return The number of Unicode characters in Buffer, not including the Null-terminator.
**/
UINTN
EFIAPI
UnicodeValueToString (
IN OUT CHAR16 *Buffer,
IN UINTN Flags,
IN INT64 Value,
IN UINTN Width
);
#endif
/**
Converts a decimal value to a Null-terminated Unicode string.
Converts the decimal number specified by Value to a Null-terminated Unicode
string specified by Buffer containing at most Width characters. No padding of
spaces is ever performed. If Width is 0 then a width of
MAXIMUM_VALUE_CHARACTERS is assumed. If the conversion contains more than
Width characters, then only the first Width characters are placed in Buffer.
Additional conversion parameters are specified in Flags.
The Flags bit LEFT_JUSTIFY is always ignored.
All conversions are left justified in Buffer.
If Width is 0, PREFIX_ZERO is ignored in Flags.
If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and
commas are inserted every 3rd digit starting from the right.
If RADIX_HEX is set in Flags, then the output buffer will be formatted in
hexadecimal format.
If Value is < 0 and RADIX_HEX is not set in Flags, then the fist character in
Buffer is a '-'.
If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, then
Buffer is padded with '0' characters so the combination of the optional '-'
sign character, '0' characters, digit characters for Value, and the
Null-terminator add up to Width characters.
If Buffer is not aligned on a 16-bit boundary, then ASSERT().
If an error would be returned, then the function will also ASSERT().
@param Buffer The pointer to the output buffer for the produced
Null-terminated Unicode string.
@param BufferSize The size of Buffer in bytes, including the
Null-terminator.
@param Flags The bitmask of flags that specify left justification,
zero pad, and commas.
@param Value The 64-bit signed value to convert to a string.
@param Width The maximum number of Unicode characters to place in
Buffer, not including the Null-terminator.
@retval RETURN_SUCCESS The decimal value is converted.
@retval RETURN_BUFFER_TOO_SMALL If BufferSize cannot hold the converted
value.
@retval RETURN_INVALID_PARAMETER If Buffer is NULL.
If PcdMaximumUnicodeStringLength is not
zero, and BufferSize is greater than
(PcdMaximumUnicodeStringLength *
sizeof (CHAR16) + 1).
If unsupported bits are set in Flags.
If both COMMA_TYPE and RADIX_HEX are set in
Flags.
If Width >= MAXIMUM_VALUE_CHARACTERS.
**/
RETURN_STATUS
EFIAPI
UnicodeValueToStringS (
IN OUT CHAR16 *Buffer,
IN UINTN BufferSize,
IN UINTN Flags,
IN INT64 Value,
IN UINTN Width
);
/**
Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
ASCII format string and a VA_LIST argument list.
This function is similar as vsnprintf_s defined in C11.
Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
and BufferSize.
The ASCII string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list specified by Marker based on
the contents of the format string.
The number of ASCII characters in the produced output buffer is returned not including
the Null-terminator.
If BufferSize > 0 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 0 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and BufferSize >
(PcdMaximumAsciiStringLength * sizeof (CHAR8)), then ASSERT(). Also, the output buffer
is unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and FormatString contains more than
PcdMaximumAsciiStringLength Ascii characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0, then no output buffer is produced and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
ASCII string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated ASCII format string.
@param Marker VA_LIST marker for the variable argument list.
@return The number of ASCII characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
AsciiVSPrint (
OUT CHAR8 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR8 *FormatString,
IN VA_LIST Marker
);
/**
Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
ASCII format string and a BASE_LIST argument list.
Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
and BufferSize.
The ASCII string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list specified by Marker based on
the contents of the format string.
The number of ASCII characters in the produced output buffer is returned not including
the Null-terminator.
If BufferSize > 0 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 0 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and BufferSize >
(PcdMaximumAsciiStringLength * sizeof (CHAR8)), then ASSERT(). Also, the output buffer
is unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and FormatString contains more than
PcdMaximumAsciiStringLength Ascii characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0, then no output buffer is produced and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
ASCII string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated ASCII format string.
@param Marker BASE_LIST marker for the variable argument list.
@return The number of ASCII characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
AsciiBSPrint (
OUT CHAR8 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR8 *FormatString,
IN BASE_LIST Marker
);
/**
Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
ASCII format string and variable argument list.
This function is similar as snprintf_s defined in C11.
Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
and BufferSize.
The ASCII string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list based on the contents of the
format string.
The number of ASCII characters in the produced output buffer is returned not including
the Null-terminator.
If BufferSize > 0 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 0 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and BufferSize >
(PcdMaximumAsciiStringLength * sizeof (CHAR8)), then ASSERT(). Also, the output buffer
is unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and FormatString contains more than
PcdMaximumAsciiStringLength Ascii characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0, then no output buffer is produced and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
ASCII string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated ASCII format string.
@param ... Variable argument list whose contents are accessed based on the
format string specified by FormatString.
@return The number of ASCII characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
AsciiSPrint (
OUT CHAR8 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR8 *FormatString,
...
);
/**
Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
Unicode format string and a VA_LIST argument list.
This function is similar as vsnprintf_s defined in C11.
Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
and BufferSize.
The ASCII string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list specified by Marker based on
the contents of the format string.
The number of ASCII characters in the produced output buffer is returned not including
the Null-terminator.
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
If BufferSize > 0 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 0 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and BufferSize >
(PcdMaximumAsciiStringLength * sizeof (CHAR8)), then ASSERT(). Also, the output buffer
is unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0, then no output buffer is produced and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
ASCII string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated Unicode format string.
@param Marker VA_LIST marker for the variable argument list.
@return The number of ASCII characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
AsciiVSPrintUnicodeFormat (
OUT CHAR8 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR16 *FormatString,
IN VA_LIST Marker
);
/**
Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
Unicode format string and a BASE_LIST argument list.
Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
and BufferSize.
The ASCII string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list specified by Marker based on
the contents of the format string.
The number of ASCII characters in the produced output buffer is returned not including
the Null-terminator.
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
If BufferSize > 0 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 0 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and BufferSize >
(PcdMaximumAsciiStringLength * sizeof (CHAR8)), then ASSERT(). Also, the output buffer
is unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0, then no output buffer is produced and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
ASCII string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated Unicode format string.
@param Marker BASE_LIST marker for the variable argument list.
@return The number of ASCII characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
AsciiBSPrintUnicodeFormat (
OUT CHAR8 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR16 *FormatString,
IN BASE_LIST Marker
);
/**
Produces a Null-terminated ASCII string in an output buffer based on a Null-terminated
Unicode format string and variable argument list.
This function is similar as snprintf_s defined in C11.
Produces a Null-terminated ASCII string in the output buffer specified by StartOfBuffer
and BufferSize.
The ASCII string is produced by parsing the format string specified by FormatString.
Arguments are pulled from the variable argument list based on the contents of the
format string.
The number of ASCII characters in the produced output buffer is returned not including
the Null-terminator.
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
If BufferSize > 0 and StartOfBuffer is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If BufferSize > 0 and FormatString is NULL, then ASSERT(). Also, the output buffer is
unmodified and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and BufferSize >
(PcdMaximumAsciiStringLength * sizeof (CHAR8)), then ASSERT(). Also, the output buffer
is unmodified and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then
ASSERT(). Also, the output buffer is unmodified and 0 is returned.
If BufferSize is 0, then no output buffer is produced and 0 is returned.
@param StartOfBuffer A pointer to the output buffer for the produced Null-terminated
ASCII string.
@param BufferSize The size, in bytes, of the output buffer specified by StartOfBuffer.
@param FormatString A Null-terminated Unicode format string.
@param ... Variable argument list whose contents are accessed based on the
format string specified by FormatString.
@return The number of ASCII characters in the produced output buffer not including the
Null-terminator.
**/
UINTN
EFIAPI
AsciiSPrintUnicodeFormat (
OUT CHAR8 *StartOfBuffer,
IN UINTN BufferSize,
IN CONST CHAR16 *FormatString,
...
);
#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
/**
[ATTENTION] This function is deprecated for security reason.
Converts a decimal value to a Null-terminated ASCII string.
-
- Converts the decimal number specified by Value to a Null-terminated ASCII string
- specified by Buffer containing at most Width characters. No padding of spaces
+
+ Converts the decimal number specified by Value to a Null-terminated ASCII string
+ specified by Buffer containing at most Width characters. No padding of spaces
is ever performed.
If Width is 0 then a width of MAXIMUM_VALUE_CHARACTERS is assumed.
The number of ASCII characters in Buffer is returned, not including the Null-terminator.
If the conversion contains more than Width characters, then only the first Width
characters are returned, and the total number of characters required to perform
the conversion is returned.
- Additional conversion parameters are specified in Flags.
+ Additional conversion parameters are specified in Flags.
The Flags bit LEFT_JUSTIFY is always ignored.
All conversions are left justified in Buffer.
If Width is 0, PREFIX_ZERO is ignored in Flags.
If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and commas
are inserted every 3rd digit starting from the right.
- If RADIX_HEX is set in Flags, then the output buffer will be
+ If RADIX_HEX is set in Flags, then the output buffer will be
formatted in hexadecimal format.
If Value is < 0 and RADIX_HEX is not set in Flags, then the fist character in Buffer is a '-'.
- If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored,
- then Buffer is padded with '0' characters so the combination of the optional '-'
+ If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored,
+ then Buffer is padded with '0' characters so the combination of the optional '-'
sign character, '0' characters, digit characters for Value, and the Null-terminator
add up to Width characters.
-
+
If Buffer is NULL, then ASSERT().
If unsupported bits are set in Flags, then ASSERT().
If both COMMA_TYPE and RADIX_HEX are set in Flags, then ASSERT().
If Width >= MAXIMUM_VALUE_CHARACTERS, then ASSERT()
@param Buffer A pointer to the output buffer for the produced Null-terminated
ASCII string.
@param Flags The bitmask of flags that specify left justification, zero pad, and commas.
@param Value The 64-bit signed value to convert to a string.
@param Width The maximum number of ASCII characters to place in Buffer, not including
the Null-terminator.
-
+
@return The number of ASCII characters in Buffer, not including the Null-terminator.
**/
UINTN
EFIAPI
AsciiValueToString (
OUT CHAR8 *Buffer,
IN UINTN Flags,
IN INT64 Value,
IN UINTN Width
);
#endif
/**
Converts a decimal value to a Null-terminated Ascii string.
Converts the decimal number specified by Value to a Null-terminated Ascii
string specified by Buffer containing at most Width characters. No padding of
spaces is ever performed. If Width is 0 then a width of
MAXIMUM_VALUE_CHARACTERS is assumed. If the conversion contains more than
Width characters, then only the first Width characters are placed in Buffer.
Additional conversion parameters are specified in Flags.
The Flags bit LEFT_JUSTIFY is always ignored.
All conversions are left justified in Buffer.
If Width is 0, PREFIX_ZERO is ignored in Flags.
If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and
commas are inserted every 3rd digit starting from the right.
If RADIX_HEX is set in Flags, then the output buffer will be formatted in
hexadecimal format.
If Value is < 0 and RADIX_HEX is not set in Flags, then the fist character in
Buffer is a '-'.
If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, then
Buffer is padded with '0' characters so the combination of the optional '-'
sign character, '0' characters, digit characters for Value, and the
Null-terminator add up to Width characters.
- If Buffer is not aligned on a 16-bit boundary, then ASSERT().
- If an error would be returned, then the function will also ASSERT().
+ If an error would be returned, then the function will ASSERT().
@param Buffer The pointer to the output buffer for the produced
Null-terminated Ascii string.
@param BufferSize The size of Buffer in bytes, including the
Null-terminator.
@param Flags The bitmask of flags that specify left justification,
zero pad, and commas.
@param Value The 64-bit signed value to convert to a string.
@param Width The maximum number of Ascii characters to place in
Buffer, not including the Null-terminator.
@retval RETURN_SUCCESS The decimal value is converted.
@retval RETURN_BUFFER_TOO_SMALL If BufferSize cannot hold the converted
value.
@retval RETURN_INVALID_PARAMETER If Buffer is NULL.
If PcdMaximumAsciiStringLength is not
zero, and BufferSize is greater than
PcdMaximumAsciiStringLength.
If unsupported bits are set in Flags.
If both COMMA_TYPE and RADIX_HEX are set in
Flags.
If Width >= MAXIMUM_VALUE_CHARACTERS.
**/
RETURN_STATUS
EFIAPI
AsciiValueToStringS (
IN OUT CHAR8 *Buffer,
IN UINTN BufferSize,
IN UINTN Flags,
IN INT64 Value,
IN UINTN Width
);
/**
- Returns the number of characters that would be produced by if the formatted
+ Returns the number of characters that would be produced by if the formatted
output were produced not including the Null-terminator.
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
If FormatString is NULL, then ASSERT() and 0 is returned.
If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT() and 0 is returned.
@param[in] FormatString A Null-terminated Unicode format string.
@param[in] Marker VA_LIST marker for the variable argument list.
- @return The number of characters that would be produced, not including the
+ @return The number of characters that would be produced, not including the
Null-terminator.
**/
UINTN
EFIAPI
SPrintLength (
IN CONST CHAR16 *FormatString,
IN VA_LIST Marker
);
/**
- Returns the number of characters that would be produced by if the formatted
+ Returns the number of characters that would be produced by if the formatted
output were produced not including the Null-terminator.
If FormatString is NULL, then ASSERT() and 0 is returned.
If PcdMaximumAsciiStringLength is not zero, and FormatString contains more
than PcdMaximumAsciiStringLength Ascii characters not including the
Null-terminator, then ASSERT() and 0 is returned.
@param[in] FormatString A Null-terminated ASCII format string.
@param[in] Marker VA_LIST marker for the variable argument list.
- @return The number of characters that would be produced, not including the
+ @return The number of characters that would be produced, not including the
Null-terminator.
**/
UINTN
EFIAPI
SPrintLengthAsciiFormat (
IN CONST CHAR8 *FormatString,
IN VA_LIST Marker
);
#endif
Property changes on: head/sys/contrib/edk2/Include/Library/PrintLib.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Library/PrintLib.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/Library/PrintLib.h:r263908
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Library/PrintLib.h:r303380
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Library/PrintLib.h:r283596-287505
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Library/PrintLib.h:r291227-291228,292618
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Library/PrintLib.h:r303899-303984
Merged /projects/building-blocks/sys/contrib/edk2/Include/Library/PrintLib.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Library/PrintLib.h:r319973-326168
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Library/PrintLib.h:r303985-305318
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Library/PrintLib.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/clang350-import/sys/contrib/edk2/Include/Library/PrintLib.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Library/PrintLib.h:r1540-186085
Merged /projects/clang370-import/sys/contrib/edk2/Include/Library/PrintLib.h:r287506-288928
Merged /projects/quota64/sys/contrib/edk2/Include/Library/PrintLib.h:r184125-207707
Merged /projects/clang390-import/sys/contrib/edk2/Include/Library/PrintLib.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Library/PrintLib.h:r309166-310192
Merged /vendor/edk2/dist/MdePkg/Include/Library/PrintLib.h:r361765
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Library/PrintLib.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/Library/PrintLib.h:r286179-290100
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Library/PrintLib.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Library/PrintLib.h:r295193
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Library/PrintLib.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/Library/PrintLib.h:r267383-272837
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Library/PrintLib.h:r289470-289489
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Library/PrintLib.h:r281754
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Library/PrintLib.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/vnet/sys/contrib/edk2/Include/Library/PrintLib.h:r295220
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Library/PrintLib.h:r356848-358850
Merged /projects/release-pkg/sys/contrib/edk2/Include/Library/PrintLib.h:r274131-298104
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Library/PrintLib.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Library/PrintLib.h:r262258-262612
Merged /projects/release-embedded/sys/contrib/edk2/Include/Library/PrintLib.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/Library/PrintLib.h:r221273-222812,222815-223757
Merged /projects/bectl/sys/contrib/edk2/Include/Library/PrintLib.h:r336666-337662
Merged /projects/head_mfi/sys/contrib/edk2/Include/Library/PrintLib.h:r233621
Merged /projects/clang900-import/sys/contrib/edk2/Include/Library/PrintLib.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Library/PrintLib.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Library/PrintLib.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Library/PrintLib.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Library/PrintLib.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Library/PrintLib.h:r326936-327339,327341-327933
Merged /projects/collation/sys/contrib/edk2/Include/Library/PrintLib.h:r286424-290491
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Library/PrintLib.h:r301868
Merged /projects/release-arm64/sys/contrib/edk2/Include/Library/PrintLib.h:r281786,281788,281792
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Library/PrintLib.h:r262185-262527
Merged /projects/clang360-import/sys/contrib/edk2/Include/Library/PrintLib.h:r277327-280030
Merged /projects/clang380-import/sys/contrib/edk2/Include/Library/PrintLib.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Library/PrintLib.h:r285199-285661
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Library/PrintLib.h:r276164,276167,276170-276172
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Library/PrintLib.h:r254613-256243
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Library/PrintLib.h:r230929-231848
Merged /projects/openssl111/sys/contrib/edk2/Include/Library/PrintLib.h:r339079
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Library/PrintLib.h:r266519,269993
Merged /projects/fuse2/sys/contrib/edk2/Include/Library/PrintLib.h:r344558-350621,350944,350955
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Library/PrintLib.h:r298865-299093
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Library/PrintLib.h:r344081-345031,345036,345038,345042,345045,345047
Index: head/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h
===================================================================
--- head/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h (revision 361802)
@@ -1,34 +1,28 @@
/** @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.
-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.
+SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#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
Property changes on: head/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/clang390-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r309166-310192
Merged /projects/largeSMP/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r221273-222812,222815-223757
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r286179-290100
Merged /projects/head_mfi/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r233621
Merged /projects/openssl111/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r339079
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r298865-299093
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r312125-313435
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r262185-262527
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r262258-262612
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r303380
Merged /projects/release-pkg/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r274131-298104
Merged /projects/bectl/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r336666-337662
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r230929-231848
Merged /projects/collation/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r286424-290491
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r303985-305318
Merged /projects/release-arm64/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r281786,281788,281792
Merged /projects/clang600-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r351317-353352
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r276164,276167,276170-276172
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r277327-280030
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r295193
Merged /projects/pms/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r285199-285661
Merged /projects/clang380-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r292913-296412
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r303899-303984
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r254613-256243
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r289470-289489
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r319973-326168
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r266519,269993
Merged /projects/fuse2/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r344558-350621,350944,350955
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r291227-291228,292618
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r263908
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r260687-261245
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r283596-287505
Merged /projects/ipfw/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r267383-272837
Merged /projects/building-blocks/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r295220
Merged /projects/clang350-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/edk2/dist/MdePkg/Include/Library/UefiBootServicesTableLib.h:r361765
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r1540-186085
Merged /projects/clang370-import/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r287506-288928
Merged /projects/quota64/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r184125-207707
Merged /projects/release-embedded/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Library/UefiBootServicesTableLib.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Index: head/sys/contrib/edk2/Include/Protocol/DebugPort.h
===================================================================
--- head/sys/contrib/edk2/Include/Protocol/DebugPort.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Protocol/DebugPort.h (revision 361802)
@@ -1,146 +1,140 @@
/** @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.
- 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.
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#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.
-
+ @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
Property changes on: head/sys/contrib/edk2/Include/Protocol/DebugPort.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Protocol/DebugPort.h:r312125-313435
Merged /projects/head_mfi/sys/contrib/edk2/Include/Protocol/DebugPort.h:r233621
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Protocol/DebugPort.h:r262258-262612
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Protocol/DebugPort.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/bectl/sys/contrib/edk2/Include/Protocol/DebugPort.h:r336666-337662
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Protocol/DebugPort.h:r262185-262527
Merged /projects/collation/sys/contrib/edk2/Include/Protocol/DebugPort.h:r286424-290491
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Protocol/DebugPort.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/Protocol/DebugPort.h:r263908
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Protocol/DebugPort.h:r283596-287505
Merged /projects/release-arm64/sys/contrib/edk2/Include/Protocol/DebugPort.h:r281786,281788,281792
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Protocol/DebugPort.h:r230929-231848
Merged /projects/building-blocks/sys/contrib/edk2/Include/Protocol/DebugPort.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Protocol/DebugPort.h:r276164,276167,276170-276172
Merged /projects/openssl111/sys/contrib/edk2/Include/Protocol/DebugPort.h:r339079
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Protocol/DebugPort.h:r298865-299093
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Protocol/DebugPort.h:r1540-186085
Merged /projects/clang350-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Protocol/DebugPort.h:r303380
Merged /projects/clang370-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r287506-288928
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Protocol/DebugPort.h:r266519,269993
Merged /projects/quota64/sys/contrib/edk2/Include/Protocol/DebugPort.h:r184125-207707
Merged /projects/clang391-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r309166-310192
Merged /projects/clang390-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r303250-308866,308868-309123
Merged /projects/fuse2/sys/contrib/edk2/Include/Protocol/DebugPort.h:r344558-350621,350944,350955
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Protocol/DebugPort.h:r291879-295379
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Protocol/DebugPort.h:r303899-303984
Merged /projects/mpsutil/sys/contrib/edk2/Include/Protocol/DebugPort.h:r286179-290100
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Protocol/DebugPort.h:r319973-326168
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Protocol/DebugPort.h:r303985-305318
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Protocol/DebugPort.h:r291227-291228,292618
Merged /projects/release-pkg/sys/contrib/edk2/Include/Protocol/DebugPort.h:r274131-298104
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Protocol/DebugPort.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Protocol/DebugPort.h:r295193
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Protocol/DebugPort.h:r260687-261245
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Protocol/DebugPort.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Protocol/DebugPort.h:r289470-289489
Merged /projects/ipfw/sys/contrib/edk2/Include/Protocol/DebugPort.h:r267383-272837
Merged /projects/clang900-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r326936-327339,327341-327933
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Protocol/DebugPort.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /vendor/edk2/dist/MdePkg/Include/Protocol/DebugPort.h:r361765
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Protocol/DebugPort.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Protocol/DebugPort.h:r295220
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Protocol/DebugPort.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r277327-280030
Merged /projects/clang380-import/sys/contrib/edk2/Include/Protocol/DebugPort.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Protocol/DebugPort.h:r285199-285661
Merged /projects/release-embedded/sys/contrib/edk2/Include/Protocol/DebugPort.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/Protocol/DebugPort.h:r221273-222812,222815-223757
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Protocol/DebugPort.h:r254613-256243
Index: head/sys/contrib/edk2/Include/Protocol/DevicePath.h
===================================================================
--- head/sys/contrib/edk2/Include/Protocol/DevicePath.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Protocol/DevicePath.h (revision 361802)
@@ -1,1331 +1,1379 @@
/** @file
The device path protocol as defined in UEFI 2.0.
The device path represents a programmatic path to a device,
- from a software point of view. The path must persist from boot to boot, so
+ from a software point of view. The path must persist from boot to boot, so
it can not contain things like PCI bus numbers that change from boot to boot.
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-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.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __EFI_DEVICE_PATH_PROTOCOL_H__
#define __EFI_DEVICE_PATH_PROTOCOL_H__
#include
#include
#include
///
/// Device Path protocol.
///
#define EFI_DEVICE_PATH_PROTOCOL_GUID \
{ \
0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
}
///
/// Device Path guid definition for backward-compatible with EFI1.1.
///
#define DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL_GUID
#pragma pack(1)
/**
- This protocol can be used on any device handle to obtain generic path/location
- information concerning the physical device or logical device. If the handle does
- not logically map to a physical device, the handle may not necessarily support
- the device path protocol. The device path describes the location of the device
- the handle is for. The size of the Device Path can be determined from the structures
+ This protocol can be used on any device handle to obtain generic path/location
+ information concerning the physical device or logical device. If the handle does
+ not logically map to a physical device, the handle may not necessarily support
+ the device path protocol. The device path describes the location of the device
+ the handle is for. The size of the Device Path can be determined from the structures
that make up the Device Path.
**/
typedef struct {
UINT8 Type; ///< 0x01 Hardware Device Path.
///< 0x02 ACPI Device Path.
///< 0x03 Messaging Device Path.
///< 0x04 Media Device Path.
///< 0x05 BIOS Boot Specification Device Path.
///< 0x7F End of Hardware Device Path.
-
+
UINT8 SubType; ///< Varies by Type
///< 0xFF End Entire Device Path, or
///< 0x01 End This Instance of a Device Path and start a new
///< Device Path.
-
+
UINT8 Length[2]; ///< Specific Device Path data. Type and Sub-Type define
///< type of data. Size of data is included in Length.
-
+
} EFI_DEVICE_PATH_PROTOCOL;
///
/// Device Path protocol definition for backward-compatible with EFI1.1.
-///
+///
typedef EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH;
///
/// Hardware Device Paths.
///
#define HARDWARE_DEVICE_PATH 0x01
///
/// PCI Device Path SubType.
///
#define HW_PCI_DP 0x01
///
/// PCI Device Path.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// PCI Function Number.
///
UINT8 Function;
///
/// PCI Device Number.
///
UINT8 Device;
} PCI_DEVICE_PATH;
///
/// PCCARD Device Path SubType.
///
#define HW_PCCARD_DP 0x02
///
/// PCCARD Device Path.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Function Number (0 = First Function).
///
UINT8 FunctionNumber;
} PCCARD_DEVICE_PATH;
///
/// Memory Mapped Device Path SubType.
///
#define HW_MEMMAP_DP 0x03
///
/// Memory Mapped Device Path.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// EFI_MEMORY_TYPE
///
UINT32 MemoryType;
///
/// Starting Memory Address.
///
EFI_PHYSICAL_ADDRESS StartingAddress;
///
/// Ending Memory Address.
///
EFI_PHYSICAL_ADDRESS EndingAddress;
} MEMMAP_DEVICE_PATH;
///
/// Hardware Vendor Device Path SubType.
///
#define HW_VENDOR_DP 0x04
///
/// The Vendor Device Path allows the creation of vendor-defined Device Paths. A vendor must
/// allocate a Vendor GUID for a Device Path. The Vendor GUID can then be used to define the
/// contents on the n bytes that follow in the Vendor Device Path node.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Vendor-assigned GUID that defines the data that follows.
///
EFI_GUID Guid;
///
/// Vendor-defined variable size data.
///
} VENDOR_DEVICE_PATH;
///
/// Controller Device Path SubType.
///
#define HW_CONTROLLER_DP 0x05
///
/// Controller Device Path.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Controller number.
///
UINT32 ControllerNumber;
} CONTROLLER_DEVICE_PATH;
///
/// BMC Device Path SubType.
///
#define HW_BMC_DP 0x06
///
/// BMC Device Path.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Interface Type.
///
UINT8 InterfaceType;
///
/// Base Address.
///
UINT8 BaseAddress[8];
} BMC_DEVICE_PATH;
///
/// ACPI Device Paths.
///
#define ACPI_DEVICE_PATH 0x02
///
/// ACPI Device Path SubType.
///
#define ACPI_DP 0x01
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Device's PnP hardware ID stored in a numeric 32-bit
/// compressed EISA-type ID. This value must match the
/// corresponding _HID in the ACPI name space.
///
UINT32 HID;
///
/// Unique ID that is required by ACPI if two devices have the
/// same _HID. This value must also match the corresponding
/// _UID/_HID pair in the ACPI name space. Only the 32-bit
/// numeric value type of _UID is supported. Thus, strings must
/// not be used for the _UID in the ACPI name space.
///
UINT32 UID;
} ACPI_HID_DEVICE_PATH;
///
/// Expanded ACPI Device Path SubType.
///
#define ACPI_EXTENDED_DP 0x02
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Device's PnP hardware ID stored in a numeric 32-bit
/// compressed EISA-type ID. This value must match the
/// corresponding _HID in the ACPI name space.
///
UINT32 HID;
///
/// Unique ID that is required by ACPI if two devices have the
/// same _HID. This value must also match the corresponding
/// _UID/_HID pair in the ACPI name space.
///
UINT32 UID;
///
/// Device's compatible PnP hardware ID stored in a numeric
/// 32-bit compressed EISA-type ID. This value must match at
/// least one of the compatible device IDs returned by the
/// corresponding _CID in the ACPI name space.
///
UINT32 CID;
///
/// Optional variable length _HIDSTR.
/// Optional variable length _UIDSTR.
/// Optional variable length _CIDSTR.
///
} ACPI_EXTENDED_HID_DEVICE_PATH;
//
// EISA ID Macro
// EISA ID Definition 32-bits
// bits[15:0] - three character compressed ASCII EISA ID.
// bits[31:16] - binary number
// Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
//
#define PNP_EISA_ID_CONST 0x41d0
#define EISA_ID(_Name, _Num) ((UINT32)((_Name) | (_Num) << 16))
#define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
#define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
#define PNP_EISA_ID_MASK 0xffff
#define EISA_ID_TO_NUM(_Id) ((_Id) >> 16)
///
/// ACPI _ADR Device Path SubType.
///
#define ACPI_ADR_DP 0x03
///
/// The _ADR device path is used to contain video output device attributes to support the Graphics
/// Output Protocol. The device path can contain multiple _ADR entries if multiple video output
/// devices are displaying the same output.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// _ADR value. For video output devices the value of this
/// field comes from Table B-2 of the ACPI 3.0 specification. At
/// least one _ADR value is required.
///
UINT32 ADR;
//
// This device path may optionally contain more than one _ADR entry.
//
} ACPI_ADR_DEVICE_PATH;
+///
+/// ACPI NVDIMM Device Path SubType.
+///
+#define ACPI_NVDIMM_DP 0x04
+///
+///
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ ///
+ /// NFIT Device Handle, the _ADR of the NVDIMM device.
+ /// The value of this field comes from Section 9.20.3 of the ACPI 6.2A specification.
+ ///
+ UINT32 NFITDeviceHandle;
+} ACPI_NVDIMM_DEVICE_PATH;
+
#define ACPI_ADR_DISPLAY_TYPE_OTHER 0
#define ACPI_ADR_DISPLAY_TYPE_VGA 1
#define ACPI_ADR_DISPLAY_TYPE_TV 2
#define ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL 3
#define ACPI_ADR_DISPLAY_TYPE_INTERNAL_DIGITAL 4
#define ACPI_DISPLAY_ADR(_DeviceIdScheme, _HeadId, _NonVgaOutput, _BiosCanDetect, _VendorInfo, _Type, _Port, _Index) \
((UINT32)( ((UINT32)((_DeviceIdScheme) & 0x1) << 31) | \
(((_HeadId) & 0x7) << 18) | \
(((_NonVgaOutput) & 0x1) << 17) | \
(((_BiosCanDetect) & 0x1) << 16) | \
(((_VendorInfo) & 0xf) << 12) | \
(((_Type) & 0xf) << 8) | \
(((_Port) & 0xf) << 4) | \
((_Index) & 0xf) ))
///
/// Messaging Device Paths.
/// This Device Path is used to describe the connection of devices outside the resource domain of the
/// system. This Device Path can describe physical messaging information like SCSI ID, or abstract
/// information like networking protocol IP addresses.
///
#define MESSAGING_DEVICE_PATH 0x03
///
/// ATAPI Device Path SubType
///
#define MSG_ATAPI_DP 0x01
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Set to zero for primary, or one for secondary.
///
UINT8 PrimarySecondary;
///
/// Set to zero for master, or one for slave mode.
///
UINT8 SlaveMaster;
///
/// Logical Unit Number.
///
UINT16 Lun;
} ATAPI_DEVICE_PATH;
///
/// SCSI Device Path SubType.
///
#define MSG_SCSI_DP 0x02
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Target ID on the SCSI bus (PUN).
///
UINT16 Pun;
///
/// Logical Unit Number (LUN).
///
UINT16 Lun;
} SCSI_DEVICE_PATH;
///
/// Fibre Channel SubType.
///
#define MSG_FIBRECHANNEL_DP 0x03
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Reserved for the future.
///
UINT32 Reserved;
///
/// Fibre Channel World Wide Number.
///
UINT64 WWN;
///
/// Fibre Channel Logical Unit Number.
///
UINT64 Lun;
} FIBRECHANNEL_DEVICE_PATH;
///
/// Fibre Channel Ex SubType.
///
#define MSG_FIBRECHANNELEX_DP 0x15
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Reserved for the future.
///
UINT32 Reserved;
///
/// 8 byte array containing Fibre Channel End Device Port Name.
///
UINT8 WWN[8];
///
/// 8 byte array containing Fibre Channel Logical Unit Number.
///
UINT8 Lun[8];
} FIBRECHANNELEX_DEVICE_PATH;
///
/// 1394 Device Path SubType
///
#define MSG_1394_DP 0x04
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Reserved for the future.
///
UINT32 Reserved;
///
/// 1394 Global Unique ID (GUID).
///
UINT64 Guid;
} F1394_DEVICE_PATH;
///
/// USB Device Path SubType.
///
#define MSG_USB_DP 0x05
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// USB Parent Port Number.
///
UINT8 ParentPortNumber;
///
/// USB Interface Number.
///
UINT8 InterfaceNumber;
} USB_DEVICE_PATH;
///
/// USB Class Device Path SubType.
///
#define MSG_USB_CLASS_DP 0x0f
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Vendor ID assigned by USB-IF. A value of 0xFFFF will
/// match any Vendor ID.
///
UINT16 VendorId;
///
/// Product ID assigned by USB-IF. A value of 0xFFFF will
/// match any Product ID.
///
UINT16 ProductId;
///
/// The class code assigned by the USB-IF. A value of 0xFF
/// will match any class code.
///
UINT8 DeviceClass;
///
/// The subclass code assigned by the USB-IF. A value of
/// 0xFF will match any subclass code.
///
UINT8 DeviceSubClass;
///
/// The protocol code assigned by the USB-IF. A value of
/// 0xFF will match any protocol code.
///
UINT8 DeviceProtocol;
} USB_CLASS_DEVICE_PATH;
///
/// USB WWID Device Path SubType.
///
#define MSG_USB_WWID_DP 0x10
///
/// This device path describes a USB device using its serial number.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// USB interface number.
///
UINT16 InterfaceNumber;
///
/// USB vendor id of the device.
///
UINT16 VendorId;
///
/// USB product id of the device.
///
UINT16 ProductId;
///
/// Last 64-or-fewer UTF-16 characters of the USB
/// serial number. The length of the string is
/// determined by the Length field less the offset of the
/// Serial Number field (10)
///
/// CHAR16 SerialNumber[...];
} USB_WWID_DEVICE_PATH;
///
/// Device Logical Unit SubType.
///
#define MSG_DEVICE_LOGICAL_UNIT_DP 0x11
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Logical Unit Number for the interface.
///
UINT8 Lun;
} DEVICE_LOGICAL_UNIT_DEVICE_PATH;
///
/// SATA Device Path SubType.
///
#define MSG_SATA_DP 0x12
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// The HBA port number that facilitates the connection to the
/// device or a port multiplier. The value 0xFFFF is reserved.
///
UINT16 HBAPortNumber;
///
/// The Port multiplier port number that facilitates the connection
/// to the device. Must be set to 0xFFFF if the device is directly
/// connected to the HBA.
///
UINT16 PortMultiplierPortNumber;
///
/// Logical Unit Number.
///
UINT16 Lun;
} SATA_DEVICE_PATH;
///
/// Flag for if the device is directly connected to the HBA.
///
#define SATA_HBA_DIRECT_CONNECT_FLAG 0x8000
///
/// I2O Device Path SubType.
///
#define MSG_I2O_DP 0x06
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Target ID (TID) for a device.
///
UINT32 Tid;
} I2O_DEVICE_PATH;
///
/// MAC Address Device Path SubType.
///
#define MSG_MAC_ADDR_DP 0x0b
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// The MAC address for a network interface padded with 0s.
///
EFI_MAC_ADDRESS MacAddress;
///
/// Network interface type(i.e. 802.3, FDDI).
///
UINT8 IfType;
} MAC_ADDR_DEVICE_PATH;
///
/// IPv4 Device Path SubType
///
#define MSG_IPv4_DP 0x0c
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// The local IPv4 address.
///
EFI_IPv4_ADDRESS LocalIpAddress;
///
/// The remote IPv4 address.
///
EFI_IPv4_ADDRESS RemoteIpAddress;
///
/// The local port number.
///
UINT16 LocalPort;
///
/// The remote port number.
///
UINT16 RemotePort;
///
/// The network protocol(i.e. UDP, TCP).
///
UINT16 Protocol;
///
/// 0x00 - The Source IP Address was assigned though DHCP.
/// 0x01 - The Source IP Address is statically bound.
///
BOOLEAN StaticIpAddress;
///
/// The gateway IP address
///
EFI_IPv4_ADDRESS GatewayIpAddress;
///
/// The subnet mask
///
EFI_IPv4_ADDRESS SubnetMask;
} IPv4_DEVICE_PATH;
///
/// IPv6 Device Path SubType.
///
#define MSG_IPv6_DP 0x0d
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// The local IPv6 address.
///
EFI_IPv6_ADDRESS LocalIpAddress;
///
/// The remote IPv6 address.
///
EFI_IPv6_ADDRESS RemoteIpAddress;
///
/// The local port number.
///
UINT16 LocalPort;
///
/// The remote port number.
///
UINT16 RemotePort;
///
/// The network protocol(i.e. UDP, TCP).
///
UINT16 Protocol;
///
/// 0x00 - The Local IP Address was manually configured.
/// 0x01 - The Local IP Address is assigned through IPv6
/// stateless auto-configuration.
/// 0x02 - The Local IP Address is assigned through IPv6
/// stateful configuration.
///
UINT8 IpAddressOrigin;
///
/// The prefix length
///
UINT8 PrefixLength;
///
/// The gateway IP address
///
EFI_IPv6_ADDRESS GatewayIpAddress;
} IPv6_DEVICE_PATH;
///
/// InfiniBand Device Path SubType.
///
#define MSG_INFINIBAND_DP 0x09
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Flags to help identify/manage InfiniBand device path elements:
/// Bit 0 - IOC/Service (0b = IOC, 1b = Service).
/// Bit 1 - Extend Boot Environment.
/// Bit 2 - Console Protocol.
/// Bit 3 - Storage Protocol.
/// Bit 4 - Network Protocol.
/// All other bits are reserved.
///
UINT32 ResourceFlags;
///
/// 128-bit Global Identifier for remote fabric port.
///
UINT8 PortGid[16];
///
/// 64-bit unique identifier to remote IOC or server process.
/// Interpretation of field specified by Resource Flags (bit 0).
///
UINT64 ServiceId;
///
/// 64-bit persistent ID of remote IOC port.
///
UINT64 TargetPortId;
///
/// 64-bit persistent ID of remote device.
///
UINT64 DeviceId;
} INFINIBAND_DEVICE_PATH;
#define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01
#define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02
#define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04
#define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08
#define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10
///
/// UART Device Path SubType.
///
#define MSG_UART_DP 0x0e
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Reserved.
///
UINT32 Reserved;
///
/// The baud rate setting for the UART style device. A value of 0
/// means that the device's default baud rate will be used.
///
UINT64 BaudRate;
///
/// The number of data bits for the UART style device. A value
/// of 0 means that the device's default number of data bits will be used.
///
UINT8 DataBits;
///
/// The parity setting for the UART style device.
/// Parity 0x00 - Default Parity.
/// Parity 0x01 - No Parity.
/// Parity 0x02 - Even Parity.
/// Parity 0x03 - Odd Parity.
/// Parity 0x04 - Mark Parity.
/// Parity 0x05 - Space Parity.
///
UINT8 Parity;
///
/// The number of stop bits for the UART style device.
/// Stop Bits 0x00 - Default Stop Bits.
/// Stop Bits 0x01 - 1 Stop Bit.
/// Stop Bits 0x02 - 1.5 Stop Bits.
/// Stop Bits 0x03 - 2 Stop Bits.
///
UINT8 StopBits;
} UART_DEVICE_PATH;
+///
+/// NVDIMM Namespace Device Path SubType.
+///
+#define NVDIMM_NAMESPACE_DP 0x20
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ ///
+ /// Namespace unique label identifier UUID.
+ ///
+ EFI_GUID Uuid;
+} NVDIMM_NAMESPACE_DEVICE_PATH;
+
//
// Use VENDOR_DEVICE_PATH struct
//
#define MSG_VENDOR_DP 0x0a
typedef VENDOR_DEVICE_PATH VENDOR_DEFINED_DEVICE_PATH;
#define DEVICE_PATH_MESSAGING_PC_ANSI EFI_PC_ANSI_GUID
#define DEVICE_PATH_MESSAGING_VT_100 EFI_VT_100_GUID
#define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID
#define DEVICE_PATH_MESSAGING_VT_UTF8 EFI_VT_UTF8_GUID
///
/// A new device path node is defined to declare flow control characteristics.
/// UART Flow Control Messaging Device Path
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL GUID.
///
EFI_GUID Guid;
///
/// Bitmap of supported flow control types.
/// Bit 0 set indicates hardware flow control.
/// Bit 1 set indicates Xon/Xoff flow control.
/// All other bits are reserved and are clear.
///
UINT32 FlowControlMap;
} UART_FLOW_CONTROL_DEVICE_PATH;
#define UART_FLOW_CONTROL_HARDWARE 0x00000001
#define UART_FLOW_CONTROL_XON_XOFF 0x00000010
#define DEVICE_PATH_MESSAGING_SAS EFI_SAS_DEVICE_PATH_GUID
///
/// Serial Attached SCSI (SAS) Device Path.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// DEVICE_PATH_MESSAGING_SAS GUID.
///
EFI_GUID Guid;
///
/// Reserved for future use.
///
UINT32 Reserved;
///
/// SAS Address for Serial Attached SCSI Target.
///
UINT64 SasAddress;
///
/// SAS Logical Unit Number.
///
UINT64 Lun;
///
/// More Information about the device and its interconnect.
///
UINT16 DeviceTopology;
///
/// Relative Target Port (RTP).
///
UINT16 RelativeTargetPort;
} SAS_DEVICE_PATH;
///
/// Serial Attached SCSI (SAS) Ex Device Path SubType
///
#define MSG_SASEX_DP 0x16
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// 8-byte array of the SAS Address for Serial Attached SCSI Target Port.
///
UINT8 SasAddress[8];
///
/// 8-byte array of the SAS Logical Unit Number.
///
UINT8 Lun[8];
///
/// More Information about the device and its interconnect.
///
UINT16 DeviceTopology;
///
/// Relative Target Port (RTP).
///
UINT16 RelativeTargetPort;
} SASEX_DEVICE_PATH;
///
/// NvmExpress Namespace Device Path SubType.
///
#define MSG_NVME_NAMESPACE_DP 0x17
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
UINT32 NamespaceId;
UINT64 NamespaceUuid;
} NVME_NAMESPACE_DEVICE_PATH;
///
+/// DNS Device Path SubType
+///
+#define MSG_DNS_DP 0x1F
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ ///
+ /// Indicates the DNS server address is IPv4 or IPv6 address.
+ ///
+ UINT8 IsIPv6;
+ ///
+ /// Instance of the DNS server address.
+ ///
+ EFI_IP_ADDRESS DnsServerIp[];
+} DNS_DEVICE_PATH;
+
+///
/// Uniform Resource Identifiers (URI) Device Path SubType
///
#define MSG_URI_DP 0x18
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Instance of the URI pursuant to RFC 3986.
///
CHAR8 Uri[];
} URI_DEVICE_PATH;
///
/// Universal Flash Storage (UFS) Device Path SubType.
///
#define MSG_UFS_DP 0x19
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Target ID on the UFS bus (PUN).
///
UINT8 Pun;
///
/// Logical Unit Number (LUN).
///
UINT8 Lun;
} UFS_DEVICE_PATH;
///
/// SD (Secure Digital) Device Path SubType.
///
#define MSG_SD_DP 0x1A
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
UINT8 SlotNumber;
} SD_DEVICE_PATH;
///
/// EMMC (Embedded MMC) Device Path SubType.
///
#define MSG_EMMC_DP 0x1D
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
UINT8 SlotNumber;
} EMMC_DEVICE_PATH;
///
/// iSCSI Device Path SubType
///
#define MSG_ISCSI_DP 0x13
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Network Protocol (0 = TCP, 1+ = reserved).
///
UINT16 NetworkProtocol;
///
/// iSCSI Login Options.
///
UINT16 LoginOption;
///
/// iSCSI Logical Unit Number.
///
UINT64 Lun;
///
/// iSCSI Target Portal group tag the initiator intends
/// to establish a session with.
///
UINT16 TargetPortalGroupTag;
///
/// iSCSI NodeTarget Name. The length of the name
/// is determined by subtracting the offset of this field from Length.
///
/// CHAR8 iSCSI Target Name.
} ISCSI_DEVICE_PATH;
#define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST 0x0000
#define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C 0x0002
#define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST 0x0000
#define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C 0x0008
#define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP 0x0000
#define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON 0x1000
#define ISCSI_LOGIN_OPTION_CHAP_BI 0x0000
#define ISCSI_LOGIN_OPTION_CHAP_UNI 0x2000
///
/// VLAN Device Path SubType.
///
#define MSG_VLAN_DP 0x14
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// VLAN identifier (0-4094).
///
UINT16 VlanId;
} VLAN_DEVICE_PATH;
///
/// Bluetooth Device Path SubType.
///
#define MSG_BLUETOOTH_DP 0x1b
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// 48bit Bluetooth device address.
///
BLUETOOTH_ADDRESS BD_ADDR;
} BLUETOOTH_DEVICE_PATH;
///
/// Wi-Fi Device Path SubType.
///
#define MSG_WIFI_DP 0x1C
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Service set identifier. A 32-byte octets string.
///
UINT8 SSId[32];
} WIFI_DEVICE_PATH;
+///
+/// Bluetooth LE Device Path SubType.
+///
+#define MSG_BLUETOOTH_LE_DP 0x1E
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL Header;
+ BLUETOOTH_LE_ADDRESS Address;
+} BLUETOOTH_LE_DEVICE_PATH;
+
//
// Media Device Path
//
#define MEDIA_DEVICE_PATH 0x04
///
/// Hard Drive Media Device Path SubType.
///
#define MEDIA_HARDDRIVE_DP 0x01
///
/// The Hard Drive Media Device Path is used to represent a partition on a hard drive.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Describes the entry in a partition table, starting with entry 1.
/// Partition number zero represents the entire device. Valid
/// partition numbers for a MBR partition are [1, 4]. Valid
/// partition numbers for a GPT partition are [1, NumberOfPartitionEntries].
///
UINT32 PartitionNumber;
///
/// Starting LBA of the partition on the hard drive.
///
UINT64 PartitionStart;
///
/// Size of the partition in units of Logical Blocks.
///
UINT64 PartitionSize;
///
/// Signature unique to this partition:
/// If SignatureType is 0, this field has to be initialized with 16 zeros.
/// If SignatureType is 1, the MBR signature is stored in the first 4 bytes of this field.
/// The other 12 bytes are initialized with zeros.
/// If SignatureType is 2, this field contains a 16 byte signature.
///
UINT8 Signature[16];
///
/// Partition Format: (Unused values reserved).
/// 0x01 - PC-AT compatible legacy MBR.
/// 0x02 - GUID Partition Table.
///
UINT8 MBRType;
///
/// Type of Disk Signature: (Unused values reserved).
/// 0x00 - No Disk Signature.
/// 0x01 - 32-bit signature from address 0x1b8 of the type 0x01 MBR.
/// 0x02 - GUID signature.
///
UINT8 SignatureType;
} HARDDRIVE_DEVICE_PATH;
#define MBR_TYPE_PCAT 0x01
#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
#define NO_DISK_SIGNATURE 0x00
#define SIGNATURE_TYPE_MBR 0x01
#define SIGNATURE_TYPE_GUID 0x02
///
/// CD-ROM Media Device Path SubType.
///
#define MEDIA_CDROM_DP 0x02
///
/// The CD-ROM Media Device Path is used to define a system partition that exists on a CD-ROM.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Boot Entry number from the Boot Catalog. The Initial/Default entry is defined as zero.
///
UINT32 BootEntry;
///
/// Starting RBA of the partition on the medium. CD-ROMs use Relative logical Block Addressing.
///
UINT64 PartitionStart;
///
/// Size of the partition in units of Blocks, also called Sectors.
///
UINT64 PartitionSize;
} CDROM_DEVICE_PATH;
//
// Use VENDOR_DEVICE_PATH struct
//
#define MEDIA_VENDOR_DP 0x03 ///< Media vendor device path subtype.
///
/// File Path Media Device Path SubType
///
#define MEDIA_FILEPATH_DP 0x04
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// A NULL-terminated Path string including directory and file names.
///
CHAR16 PathName[1];
} FILEPATH_DEVICE_PATH;
#define SIZE_OF_FILEPATH_DEVICE_PATH OFFSET_OF(FILEPATH_DEVICE_PATH,PathName)
///
/// Media Protocol Device Path SubType.
///
#define MEDIA_PROTOCOL_DP 0x05
///
-/// The Media Protocol Device Path is used to denote the protocol that is being
-/// used in a device path at the location of the path specified.
+/// The Media Protocol Device Path is used to denote the protocol that is being
+/// used in a device path at the location of the path specified.
/// Many protocols are inherent to the style of device path.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// The ID of the protocol.
///
EFI_GUID Protocol;
} MEDIA_PROTOCOL_DEVICE_PATH;
///
/// PIWG Firmware File SubType.
///
#define MEDIA_PIWG_FW_FILE_DP 0x06
///
/// This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware file.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Firmware file name
///
EFI_GUID FvFileName;
} MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
///
/// PIWG Firmware Volume Device Path SubType.
///
#define MEDIA_PIWG_FW_VOL_DP 0x07
///
/// This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware volume.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Firmware volume name.
///
EFI_GUID FvName;
} MEDIA_FW_VOL_DEVICE_PATH;
///
/// Media relative offset range device path.
///
#define MEDIA_RELATIVE_OFFSET_RANGE_DP 0x08
///
/// Used to describe the offset range of media relative.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
UINT32 Reserved;
UINT64 StartingOffset;
UINT64 EndingOffset;
} MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH;
///
/// This GUID defines a RAM Disk supporting a raw disk format in volatile memory.
///
#define EFI_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE
extern EFI_GUID gEfiVirtualDiskGuid;
///
/// This GUID defines a RAM Disk supporting an ISO image in volatile memory.
///
#define EFI_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE
extern EFI_GUID gEfiVirtualCdGuid;
///
/// This GUID defines a RAM Disk supporting a raw disk format in persistent memory.
///
#define EFI_PERSISTENT_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT
extern EFI_GUID gEfiPersistentVirtualDiskGuid;
///
/// This GUID defines a RAM Disk supporting an ISO image in persistent memory.
///
#define EFI_PERSISTENT_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT
extern EFI_GUID gEfiPersistentVirtualCdGuid;
///
/// Media ram disk device path.
///
#define MEDIA_RAM_DISK_DP 0x09
///
/// Used to describe the ram disk device path.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Starting Memory Address.
///
UINT32 StartingAddr[2];
///
/// Ending Memory Address.
///
UINT32 EndingAddr[2];
///
/// GUID that defines the type of the RAM Disk.
///
EFI_GUID TypeGuid;
///
/// RAM Diskinstance number, if supported. The default value is zero.
///
UINT16 Instance;
} MEDIA_RAM_DISK_DEVICE_PATH;
///
/// BIOS Boot Specification Device Path.
///
#define BBS_DEVICE_PATH 0x05
///
/// BIOS Boot Specification Device Path SubType.
///
#define BBS_BBS_DP 0x01
///
/// This Device Path is used to describe the booting of non-EFI-aware operating systems.
///
typedef struct {
EFI_DEVICE_PATH_PROTOCOL Header;
///
/// Device Type as defined by the BIOS Boot Specification.
///
UINT16 DeviceType;
///
/// Status Flags as defined by the BIOS Boot Specification.
///
UINT16 StatusFlag;
///
/// Null-terminated ASCII string that describes the boot device to a user.
///
CHAR8 String[1];
} BBS_BBS_DEVICE_PATH;
//
// DeviceType definitions - from BBS specification
//
#define BBS_TYPE_FLOPPY 0x01
#define BBS_TYPE_HARDDRIVE 0x02
#define BBS_TYPE_CDROM 0x03
#define BBS_TYPE_PCMCIA 0x04
#define BBS_TYPE_USB 0x05
#define BBS_TYPE_EMBEDDED_NETWORK 0x06
#define BBS_TYPE_BEV 0x80
#define BBS_TYPE_UNKNOWN 0xFF
///
/// Union of all possible Device Paths and pointers to Device Paths.
///
typedef union {
EFI_DEVICE_PATH_PROTOCOL DevPath;
PCI_DEVICE_PATH Pci;
PCCARD_DEVICE_PATH PcCard;
MEMMAP_DEVICE_PATH MemMap;
VENDOR_DEVICE_PATH Vendor;
CONTROLLER_DEVICE_PATH Controller;
BMC_DEVICE_PATH Bmc;
ACPI_HID_DEVICE_PATH Acpi;
ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi;
ACPI_ADR_DEVICE_PATH AcpiAdr;
ATAPI_DEVICE_PATH Atapi;
SCSI_DEVICE_PATH Scsi;
ISCSI_DEVICE_PATH Iscsi;
FIBRECHANNEL_DEVICE_PATH FibreChannel;
FIBRECHANNELEX_DEVICE_PATH FibreChannelEx;
F1394_DEVICE_PATH F1394;
USB_DEVICE_PATH Usb;
SATA_DEVICE_PATH Sata;
USB_CLASS_DEVICE_PATH UsbClass;
USB_WWID_DEVICE_PATH UsbWwid;
DEVICE_LOGICAL_UNIT_DEVICE_PATH LogicUnit;
I2O_DEVICE_PATH I2O;
MAC_ADDR_DEVICE_PATH MacAddr;
IPv4_DEVICE_PATH Ipv4;
IPv6_DEVICE_PATH Ipv6;
VLAN_DEVICE_PATH Vlan;
INFINIBAND_DEVICE_PATH InfiniBand;
UART_DEVICE_PATH Uart;
UART_FLOW_CONTROL_DEVICE_PATH UartFlowControl;
SAS_DEVICE_PATH Sas;
SASEX_DEVICE_PATH SasEx;
NVME_NAMESPACE_DEVICE_PATH NvmeNamespace;
+ DNS_DEVICE_PATH Dns;
URI_DEVICE_PATH Uri;
BLUETOOTH_DEVICE_PATH Bluetooth;
WIFI_DEVICE_PATH WiFi;
UFS_DEVICE_PATH Ufs;
SD_DEVICE_PATH Sd;
EMMC_DEVICE_PATH Emmc;
HARDDRIVE_DEVICE_PATH HardDrive;
CDROM_DEVICE_PATH CD;
FILEPATH_DEVICE_PATH FilePath;
MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;
MEDIA_FW_VOL_DEVICE_PATH FirmwareVolume;
MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FirmwareFile;
MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH Offset;
MEDIA_RAM_DISK_DEVICE_PATH RamDisk;
BBS_BBS_DEVICE_PATH Bbs;
} EFI_DEV_PATH;
typedef union {
EFI_DEVICE_PATH_PROTOCOL *DevPath;
PCI_DEVICE_PATH *Pci;
PCCARD_DEVICE_PATH *PcCard;
MEMMAP_DEVICE_PATH *MemMap;
VENDOR_DEVICE_PATH *Vendor;
CONTROLLER_DEVICE_PATH *Controller;
BMC_DEVICE_PATH *Bmc;
ACPI_HID_DEVICE_PATH *Acpi;
ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
ACPI_ADR_DEVICE_PATH *AcpiAdr;
ATAPI_DEVICE_PATH *Atapi;
SCSI_DEVICE_PATH *Scsi;
ISCSI_DEVICE_PATH *Iscsi;
FIBRECHANNEL_DEVICE_PATH *FibreChannel;
FIBRECHANNELEX_DEVICE_PATH *FibreChannelEx;
F1394_DEVICE_PATH *F1394;
USB_DEVICE_PATH *Usb;
SATA_DEVICE_PATH *Sata;
USB_CLASS_DEVICE_PATH *UsbClass;
USB_WWID_DEVICE_PATH *UsbWwid;
DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicUnit;
I2O_DEVICE_PATH *I2O;
MAC_ADDR_DEVICE_PATH *MacAddr;
IPv4_DEVICE_PATH *Ipv4;
IPv6_DEVICE_PATH *Ipv6;
VLAN_DEVICE_PATH *Vlan;
INFINIBAND_DEVICE_PATH *InfiniBand;
UART_DEVICE_PATH *Uart;
UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl;
SAS_DEVICE_PATH *Sas;
SASEX_DEVICE_PATH *SasEx;
NVME_NAMESPACE_DEVICE_PATH *NvmeNamespace;
+ DNS_DEVICE_PATH *Dns;
URI_DEVICE_PATH *Uri;
BLUETOOTH_DEVICE_PATH *Bluetooth;
WIFI_DEVICE_PATH *WiFi;
UFS_DEVICE_PATH *Ufs;
SD_DEVICE_PATH *Sd;
EMMC_DEVICE_PATH *Emmc;
HARDDRIVE_DEVICE_PATH *HardDrive;
CDROM_DEVICE_PATH *CD;
FILEPATH_DEVICE_PATH *FilePath;
MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;
MEDIA_FW_VOL_DEVICE_PATH *FirmwareVolume;
MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FirmwareFile;
MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *Offset;
MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;
BBS_BBS_DEVICE_PATH *Bbs;
UINT8 *Raw;
} EFI_DEV_PATH_PTR;
#pragma pack()
-
+
#define END_DEVICE_PATH_TYPE 0x7f
#define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xFF
#define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01
extern EFI_GUID gEfiDevicePathProtocolGuid;
#endif
Property changes on: head/sys/contrib/edk2/Include/Protocol/DevicePath.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Protocol/DevicePath.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Protocol/DevicePath.h:r230929-231848
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Protocol/DevicePath.h:r312125-313435
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Protocol/DevicePath.h:r298865-299093
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Protocol/DevicePath.h:r262258-262612
Merged /projects/pf/head/sys/contrib/edk2/Include/Protocol/DevicePath.h:r263908
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Protocol/DevicePath.h:r291227-291228,292618
Merged /projects/collation/sys/contrib/edk2/Include/Protocol/DevicePath.h:r286424-290491
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Protocol/DevicePath.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-embedded/sys/contrib/edk2/Include/Protocol/DevicePath.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/release-arm64/sys/contrib/edk2/Include/Protocol/DevicePath.h:r281786,281788,281792
Merged /projects/largeSMP/sys/contrib/edk2/Include/Protocol/DevicePath.h:r221273-222812,222815-223757
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Protocol/DevicePath.h:r301868
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Protocol/DevicePath.h:r303985-305318
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Protocol/DevicePath.h:r276164,276167,276170-276172
Merged /projects/quota64/sys/contrib/edk2/Include/Protocol/DevicePath.h:r184125-207707
Merged /vendor/edk2/dist/MdePkg/Include/Protocol/DevicePath.h:r361765
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Protocol/DevicePath.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Protocol/DevicePath.h:r286179-290100
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Protocol/DevicePath.h:r262185-262527
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Protocol/DevicePath.h:r295193
Merged /projects/fuse2/sys/contrib/edk2/Include/Protocol/DevicePath.h:r344558-350621,350944,350955
Merged /projects/openssl111/sys/contrib/edk2/Include/Protocol/DevicePath.h:r339079
Merged /projects/release-pkg/sys/contrib/edk2/Include/Protocol/DevicePath.h:r274131-298104
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Protocol/DevicePath.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/Protocol/DevicePath.h:r267383-272837
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Protocol/DevicePath.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Protocol/DevicePath.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Protocol/DevicePath.h:r283596-287505
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Protocol/DevicePath.h:r303380
Merged /projects/building-blocks/sys/contrib/edk2/Include/Protocol/DevicePath.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/bectl/sys/contrib/edk2/Include/Protocol/DevicePath.h:r336666-337662
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Protocol/DevicePath.h:r295220
Merged /projects/clang900-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r326936-327339,327341-327933
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Protocol/DevicePath.h:r303899-303984
Merged /projects/clang350-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Protocol/DevicePath.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r277327-280030
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Protocol/DevicePath.h:r319973-326168
Merged /projects/clang370-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r287506-288928
Merged /projects/head_mfi/sys/contrib/edk2/Include/Protocol/DevicePath.h:r233621
Merged /projects/clang380-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Protocol/DevicePath.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Protocol/DevicePath.h:r309166-310192
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Protocol/DevicePath.h:r291879-295379
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Protocol/DevicePath.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Protocol/DevicePath.h:r266519,269993
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Protocol/DevicePath.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Protocol/DevicePath.h:r289470-289489
Index: head/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h
===================================================================
--- head/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h (revision 361802)
@@ -1,72 +1,66 @@
/** @file
- EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL as defined in UEFI 2.0.
+ 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.
- 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
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
- 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
Property changes on: head/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r262185-262527
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r301868
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/quota64/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r184125-207707
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r260687-261245
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r266519,269993
Merged /projects/ipfw/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r267383-272837
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r254613-256243
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r289470-289489
Merged /projects/mpsutil/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r286179-290100
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r298865-299093
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r312125-313435
Merged /projects/vnet/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r295220
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r262258-262612
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r356848-358850
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r291227-291228,292618
Merged /projects/release-pkg/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r274131-298104
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r303899-303984
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/collation/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r286424-290491
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r319973-326168
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r283596-287505
Merged /projects/head_mfi/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r233621
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r281786,281788,281792
Merged /projects/building-blocks/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r303985-305318
Merged /projects/clang700-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r351317-353352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r326936-327339,327341-327933
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Protocol/DevicePathFromText.h:r361765
Merged /projects/clang350-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r285199-285661
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r295193
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r230929-231848
Merged /projects/clang390-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r309166-310192
Merged /projects/fuse2/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r344558-350621,350944,350955
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r291879-295379
Merged /projects/openssl111/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r339079
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r344081-345031,345036,345038,345042,345045,345047
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r303380
Merged /projects/bectl/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r336666-337662
Merged /projects/release-embedded/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r221273-222812,222815-223757
Merged /projects/pf/head/sys/contrib/edk2/Include/Protocol/DevicePathFromText.h:r263908
Index: head/sys/contrib/edk2/Include/Protocol/DevicePathToText.h
===================================================================
--- head/sys/contrib/edk2/Include/Protocol/DevicePathToText.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Protocol/DevicePathToText.h (revision 361802)
@@ -1,85 +1,79 @@
/** @file
- EFI_DEVICE_PATH_TO_TEXT_PROTOCOL as defined in UEFI 2.0.
+ 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.
- 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
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
- 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.
+ 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
Property changes on: head/sys/contrib/edk2/Include/Protocol/DevicePathToText.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/collation/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r286424-290491
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r295193
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r260687-261245
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/ipfw/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r267383-272837
Merged /projects/release-arm64/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r281786,281788,281792
Merged /projects/openssl111/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r339079
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r301868
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Protocol/DevicePathToText.h:r361765
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r356848-358850
Merged /projects/quota64/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r184125-207707
Merged /projects/vnet/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r295220
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r254613-256243
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r303380
Merged /projects/mpsutil/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r286179-290100
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r303899-303984
Merged /projects/fuse2/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r344558-350621,350944,350955
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r233621
Merged /projects/release-pkg/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r274131-298104
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r283596-287505
Merged /projects/bectl/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r336666-337662
Merged /projects/building-blocks/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/clang500-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r351317-353352
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r230929-231848
Merged /projects/clang600-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r326936-327339,327341-327933
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r289470-289489
Merged /projects/clang350-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r274961-275126,275128-275133,275135-276476
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r298865-299093
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r309166-310192
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r291879-295379
Merged /projects/release-embedded/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r221273-222812,222815-223757
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r266519,269993
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r312125-313435
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r303985-305318
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r262258-262612
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r262185-262527
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r291227-291228,292618
Merged /projects/pf/head/sys/contrib/edk2/Include/Protocol/DevicePathToText.h:r263908
Index: head/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h
===================================================================
--- head/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h (revision 361802)
@@ -1,192 +1,186 @@
/** @file
- EFI_DEVICE_PATH_UTILITIES_PROTOCOL as defined in UEFI 2.0.
+ 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.
- 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
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
- 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
+ @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 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 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.
+ 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;
+extern EFI_GUID gEfiDevicePathUtilitiesProtocolGuid;
#endif
Property changes on: head/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r230929-231848
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r291227-291228,292618
Merged /projects/pf/head/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r263908
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/openssl111/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r339079
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r298865-299093
Merged /projects/clang350-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r1540-186085
Merged /projects/clang370-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r287506-288928
Merged /projects/quota64/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r184125-207707
Merged /vendor/edk2/dist/MdePkg/Include/Protocol/DevicePathUtilities.h:r361765
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r303380
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r303899-303984
Merged /projects/clang390-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r309166-310192
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r291879-295379
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r319973-326168
Merged /projects/mpsutil/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r286179-290100
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r303985-305318
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r312125-313435
Merged /projects/release-pkg/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r274131-298104
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r262258-262612
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r260687-261245
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r295193
Merged /projects/bectl/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r336666-337662
Merged /projects/ipfw/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r281754
Merged /projects/collation/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r286424-290491
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r289470-289489
Merged /projects/clang900-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r326936-327339,327341-327933
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r295220
Merged /projects/release-arm64/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r281786,281788,281792
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r277327-280030
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r276164,276167,276170-276172
Merged /projects/release-embedded/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/clang380-import/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r285199-285661
Merged /projects/largeSMP/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r221273-222812,222815-223757
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r254613-256243
Merged /projects/head_mfi/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r233621
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r266519,269993
Merged /projects/fuse2/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r344558-350621,350944,350955
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r262185-262527
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r344081-345031,345036,345038,345042,345045,345047
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Protocol/DevicePathUtilities.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Index: head/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h
===================================================================
--- head/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h (revision 361802)
@@ -1,133 +1,127 @@
/** @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.
- 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.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#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
Property changes on: head/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r303899-303984
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r298865-299093
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r319973-326168
Merged /projects/pf/head/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r263908
Merged /projects/head_mfi/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r233621
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r301868
Merged /projects/quota64/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r184125-207707
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r266519,269993
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r230929-231848
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r303985-305318
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r286179-290100
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r262258-262612
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r291227-291228,292618
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r295193
Merged /projects/release-pkg/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r274131-298104
Merged /projects/release-embedded/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/collation/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r286424-290491
Merged /projects/openssl111/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r339079
Merged /projects/largeSMP/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r221273-222812,222815-223757
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r281786,281788,281792
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r276164,276167,276170-276172
Merged /projects/clang400-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r351317-353352
Merged /projects/clang500-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r326936-327339,327341-327933
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r303380
Merged /vendor/edk2/dist/MdePkg/Include/Protocol/SimpleTextIn.h:r361765
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r262185-262527
Merged /projects/clang350-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r285199-285661
Merged /projects/fuse2/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r344558-350621,350944,350955
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r260687-261245
Merged /projects/clang390-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r309166-310192
Merged /projects/ipfw/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r267383-272837
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r291879-295379
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r295220
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/bectl/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r336666-337662
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Protocol/SimpleTextIn.h:r289470-289489
Index: head/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h
===================================================================
--- head/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h (revision 361802)
@@ -1,325 +1,317 @@
/** @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.
- 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
+ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
- 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
#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_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.
- @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.
+ pressed. If KeyData.Key, KeyData.KeyState.KeyToggleState
+ and KeyData.KeyState.KeyShiftState are 0, then any incomplete
+ keystroke will trigger a notification of the KeyNotificationFunction.
- @param KeyNotificationFunction Points to the function to be
- called when the key sequence
- is typed specified by KeyData.
+ @param KeyNotificationFunction Points to the function to be called when the key sequence
+ is typed specified by KeyData. This notification function
+ should be called at <=TPL_CALLBACK.
@param NotifyHandle Points to the unique handle assigned to
the registered notification.
- @retval EFI_SUCCESS The device state was set
- appropriately.
+ @retval EFI_SUCCESS Key notify was registered successfully.
@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_SUCCESS Key notify was unregistered successfully.
@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
Property changes on: head/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/collation/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r286424-290491
Merged /projects/ipfw/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r267383-272837
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r295193
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/release-arm64/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r281786,281788,281792
Merged /projects/openssl111/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r339079
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r295220
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r276164,276167,276170-276172
Merged /projects/pf/head/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r263908
Merged /vendor/edk2/dist/MdePkg/Include/Protocol/SimpleTextInEx.h:r361765
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r303899-303984
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r303380
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r233621
Merged /projects/fuse2/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r344558-350621,350944,350955
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r301868
Merged /projects/quota64/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r184125-207707
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r286179-290100
Merged /projects/bectl/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r336666-337662
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r230929-231848
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r289470-289489
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r281754
Merged /projects/release-pkg/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r274131-298104
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r298865-299093
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/release-embedded/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/largeSMP/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r221273-222812,222815-223757
Merged /projects/clang900-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r326936-327339,327341-327933
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r266519,269993
Merged /projects/clang350-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r292913-296412
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r312125-313435
Merged /projects/pms/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r309166-310192
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r303985-305318
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r262185-262527
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r262258-262612
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r291879-295379
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r291227-291228,292618
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Protocol/SimpleTextInEx.h:r260687-261245
Index: head/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h
===================================================================
--- head/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h (revision 361802)
@@ -1,415 +1,409 @@
/** @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.
-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.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#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
+// 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,
+// 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
+ 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
+ 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
+/// 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
Property changes on: head/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r266519,269993
Merged /projects/fuse2/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r344558-350621,350944,350955
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r277327-280030
Merged /projects/clang380-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r285199-285661
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r319973-326168
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r254613-256243
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r291227-291228,292618
Merged /projects/openssl111/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r339079
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r298865-299093
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /vendor/edk2/dist/MdePkg/Include/Protocol/SimpleTextOut.h:r361765
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r303380
Merged /projects/pf/head/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r263908
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r260687-261245
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r283596-287505
Merged /projects/ipfw/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r267383-272837
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/building-blocks/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/vnet/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r295220
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r356848-358850
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r303985-305318
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r1540-186085
Merged /projects/clang350-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r274961-275126,275128-275133,275135-276476
Merged /projects/release-embedded/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r312125-313435
Merged /projects/clang370-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r287506-288928
Merged /projects/quota64/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r184125-207707
Merged /projects/largeSMP/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r221273-222812,222815-223757
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r262258-262612
Merged /projects/clang390-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r309166-310192
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r286179-290100
Merged /projects/head_mfi/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r233621
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r295193
Merged /projects/bectl/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r336666-337662
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r289470-289489
Merged /projects/collation/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r286424-290491
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r262185-262527
Merged /projects/release-arm64/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r281786,281788,281792
Merged /projects/release-pkg/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r274131-298104
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r276164,276167,276170-276172
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r230929-231848
Merged /projects/clang900-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h:r326936-327339,327341-327933
Index: head/sys/contrib/edk2/Include/Uefi/UefiBaseType.h
===================================================================
--- head/sys/contrib/edk2/Include/Uefi/UefiBaseType.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Uefi/UefiBaseType.h (revision 361802)
@@ -1,299 +1,298 @@
/** @file
Defines data types and constants introduced in UEFI.
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
Portions copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.
+Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.
-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.
+SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __UEFI_BASETYPE_H__
#define __UEFI_BASETYPE_H__
#include
//
// 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_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_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_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
+ @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
+ @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
+ @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
+///
+/// PE32+ Machine type for RISC-V 32/64/128
+///
+#define EFI_IMAGE_MACHINE_RISCV32 0x5032
+#define EFI_IMAGE_MACHINE_RISCV64 0x5064
+#define EFI_IMAGE_MACHINE_RISCV128 0x5128
#if defined (MDE_CPU_IA32)
#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
- (((Machine) == EFI_IMAGE_MACHINE_IA32) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
+ ((Machine) == EFI_IMAGE_MACHINE_IA32)
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_X64)
+#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))
+ ((Machine) == EFI_IMAGE_MACHINE_X64)
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_IA32)
+#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_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
#elif defined (MDE_CPU_AARCH64)
#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
- (((Machine) == EFI_IMAGE_MACHINE_AARCH64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
+ ((Machine) == EFI_IMAGE_MACHINE_AARCH64)
#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
+#elif defined (MDE_CPU_RISCV64)
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
+ ((Machine) == EFI_IMAGE_MACHINE_RISCV64)
+
+#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.
+/// 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)
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
#else
#error Unknown Processor Type
#endif
#endif
Property changes on: head/sys/contrib/edk2/Include/Uefi/UefiBaseType.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r262258-262612
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r295220
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r295193
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r291227-291228,292618
Merged /projects/release-pkg/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r274131-298104
Merged /projects/openssl111/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r339079
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r303899-303984
Merged /projects/collation/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r286424-290491
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r319973-326168
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r283596-287505
Merged /projects/head_mfi/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r233621
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/building-blocks/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/release-arm64/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r281786,281788,281792
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r303380
Merged /projects/clang600-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r351317-353352
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Uefi/UefiBaseType.h:r361765
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r1540-186085
Merged /projects/clang350-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r274961-275126,275128-275133,275135-276476
Merged /projects/clang360-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r287506-288928
Merged /projects/pms/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r285199-285661
Merged /projects/clang380-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r292913-296412
Merged /projects/clang390-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r309166-310192
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r230929-231848
Merged /projects/fuse2/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r344558-350621,350944,350955
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r291879-295379
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r344081-345031,345036,345038,345042,345045,345047
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r289470-289489
Merged /projects/bectl/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r336666-337662
Merged /projects/release-embedded/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r298865-299093
Merged /projects/largeSMP/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r221273-222812,222815-223757
Merged /projects/pf/head/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r263908
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r262185-262527
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r301868
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r303985-305318
Merged /projects/quota64/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r184125-207707
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r260687-261245
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r266519,269993
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r286179-290100
Merged /projects/ipfw/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Uefi/UefiBaseType.h:r312125-313435
Index: head/sys/contrib/edk2/Include/Uefi/UefiGpt.h
===================================================================
--- head/sys/contrib/edk2/Include/Uefi/UefiGpt.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Uefi/UefiGpt.h (revision 361802)
@@ -1,141 +1,139 @@
/** @file
EFI Guid Partition Table Format Definition.
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
-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.
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#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')
+///
+/// Minimum bytes reserve for EFI entry array buffer.
+///
+#define EFI_GPT_PART_ENTRY_MIN_SIZE 16384
#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
+ /// 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
Property changes on: head/sys/contrib/edk2/Include/Uefi/UefiGpt.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/clang350-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r1540-186085
Merged /projects/clang370-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r287506-288928
Merged /projects/quota64/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r184125-207707
Merged /projects/clang390-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r309166-310192
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r312125-313435
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r286179-290100
Merged /projects/openssl111/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r339079
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r262258-262612
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r298865-299093
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r319973-326168
Merged /projects/bectl/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r336666-337662
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r303380
Merged /projects/collation/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r286424-290491
Merged /projects/release-pkg/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r274131-298104
Merged /projects/release-arm64/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r281786,281788,281792
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r303985-305318
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r276164,276167,276170-276172
Merged /projects/clang600-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r351317-353352
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r277327-280030
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r266519,269993
Merged /projects/fuse2/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r344558-350621,350944,350955
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r295193
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r356848-358850
Merged /projects/clang380-import/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r285199-285661
Merged /projects/vnet/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r295220
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r289470-289489
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r254613-256243
Merged /projects/release-embedded/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r221273-222812,222815-223757
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r291227-291228,292618
Merged /projects/head_mfi/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r233621
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r262185-262527
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r263908
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /vendor/edk2/dist/MdePkg/Include/Uefi/UefiGpt.h:r361765
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r230929-231848
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Uefi/UefiGpt.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Index: head/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h
===================================================================
--- head/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h (revision 361802)
@@ -1,2135 +1,2130 @@
/** @file
This file defines the encoding for the VFR (Visual Form Representation) language.
IFR is primarily consumed by the EFI presentation engine, and produced by EFI
internal application and drivers as well as all add-in card option-ROM drivers
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
(C) Copyright 2016 Hewlett Packard Enterprise Development LP
-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.
+SPDX-License-Identifier: BSD-2-Clause-Patent
@par Revision Reference:
These definitions are from UEFI 2.1 and 2.2.
**/
#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
#define __UEFI_INTERNAL_FORMREPRESENTATION_H__
#include
///
/// The following types are currently defined:
///
typedef VOID* EFI_HII_HANDLE;
typedef CHAR16* EFI_STRING;
typedef UINT16 EFI_IMAGE_ID;
typedef UINT16 EFI_QUESTION_ID;
typedef UINT16 EFI_STRING_ID;
typedef UINT16 EFI_FORM_ID;
typedef UINT16 EFI_VARSTORE_ID;
typedef UINT16 EFI_ANIMATION_ID;
typedef UINT16 EFI_DEFAULT_ID;
typedef UINT32 EFI_HII_FONT_STYLE;
#pragma pack(1)
//
// Definitions for Package Lists and Package Headers
// Section 27.3.1
//
///
/// The header found at the start of each package list.
///
typedef struct {
EFI_GUID PackageListGuid;
UINT32 PackageLength;
} EFI_HII_PACKAGE_LIST_HEADER;
///
/// The header found at the start of each package.
///
typedef struct {
UINT32 Length:24;
UINT32 Type:8;
// UINT8 Data[...];
} EFI_HII_PACKAGE_HEADER;
//
// Value of HII package type
-//
+//
#define EFI_HII_PACKAGE_TYPE_ALL 0x00
#define EFI_HII_PACKAGE_TYPE_GUID 0x01
#define EFI_HII_PACKAGE_FORMS 0x02
#define EFI_HII_PACKAGE_STRINGS 0x04
#define EFI_HII_PACKAGE_FONTS 0x05
#define EFI_HII_PACKAGE_IMAGES 0x06
#define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07
#define EFI_HII_PACKAGE_DEVICE_PATH 0x08
#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x09
#define EFI_HII_PACKAGE_ANIMATIONS 0x0A
#define EFI_HII_PACKAGE_END 0xDF
#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0
#define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF
//
// Definitions for Simplified Font Package
//
///
/// Contents of EFI_NARROW_GLYPH.Attributes.
///@{
#define EFI_GLYPH_NON_SPACING 0x01
#define EFI_GLYPH_WIDE 0x02
#define EFI_GLYPH_HEIGHT 19
#define EFI_GLYPH_WIDTH 8
///@}
///
/// The EFI_NARROW_GLYPH has a preferred dimension (w x h) of 8 x 19 pixels.
///
typedef struct {
///
- /// The Unicode representation of the glyph. The term weight is the
+ /// The Unicode representation of the glyph. The term weight is the
/// technical term for a character code.
///
CHAR16 UnicodeWeight;
///
/// The data element containing the glyph definitions.
///
UINT8 Attributes;
///
- /// The column major glyph representation of the character. Bits
+ /// The column major glyph representation of the character. Bits
/// with values of one indicate that the corresponding pixel is to be
/// on when normally displayed; those with zero are off.
///
UINT8 GlyphCol1[EFI_GLYPH_HEIGHT];
} EFI_NARROW_GLYPH;
///
-/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough
+/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough
/// to accommodate logographic characters.
///
typedef struct {
///
- /// The Unicode representation of the glyph. The term weight is the
+ /// The Unicode representation of the glyph. The term weight is the
/// technical term for a character code.
///
CHAR16 UnicodeWeight;
///
/// The data element containing the glyph definitions.
///
UINT8 Attributes;
///
- /// The column major glyph representation of the character. Bits
- /// with values of one indicate that the corresponding pixel is to be
+ /// The column major glyph representation of the character. Bits
+ /// with values of one indicate that the corresponding pixel is to be
/// on when normally displayed; those with zero are off.
///
UINT8 GlyphCol1[EFI_GLYPH_HEIGHT];
///
- /// The column major glyph representation of the character. Bits
- /// with values of one indicate that the corresponding pixel is to be
+ /// The column major glyph representation of the character. Bits
+ /// with values of one indicate that the corresponding pixel is to be
/// on when normally displayed; those with zero are off.
///
UINT8 GlyphCol2[EFI_GLYPH_HEIGHT];
///
- /// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the
- /// sizeof (EFI_NARROW_GLYPH). The contents of Pad must
+ /// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the
+ /// sizeof (EFI_NARROW_GLYPH). The contents of Pad must
/// be zero.
///
UINT8 Pad[3];
} EFI_WIDE_GLYPH;
///
/// A simplified font package consists of a font header
/// followed by a series of glyph structures.
///
typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
UINT16 NumberOfNarrowGlyphs;
UINT16 NumberOfWideGlyphs;
// EFI_NARROW_GLYPH NarrowGlyphs[];
// EFI_WIDE_GLYPH WideGlyphs[];
} EFI_HII_SIMPLE_FONT_PACKAGE_HDR;
//
// Definitions for Font Package
// Section 27.3.3
//
//
// Value for font style
//
#define EFI_HII_FONT_STYLE_NORMAL 0x00000000
#define EFI_HII_FONT_STYLE_BOLD 0x00000001
#define EFI_HII_FONT_STYLE_ITALIC 0x00000002
#define EFI_HII_FONT_STYLE_EMBOSS 0x00010000
#define EFI_HII_FONT_STYLE_OUTLINE 0x00020000
#define EFI_HII_FONT_STYLE_SHADOW 0x00040000
#define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000
#define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000
typedef struct _EFI_HII_GLYPH_INFO {
UINT16 Width;
UINT16 Height;
INT16 OffsetX;
INT16 OffsetY;
INT16 AdvanceX;
} EFI_HII_GLYPH_INFO;
///
/// The fixed header consists of a standard record header,
/// then the character values in this section, the flags
/// (including the encoding method) and the offsets of the glyph
/// information, the glyph bitmaps and the character map.
///
typedef struct _EFI_HII_FONT_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
UINT32 HdrSize;
UINT32 GlyphBlockOffset;
EFI_HII_GLYPH_INFO Cell;
EFI_HII_FONT_STYLE FontStyle;
CHAR16 FontFamily[1];
} EFI_HII_FONT_PACKAGE_HDR;
//
// Value of different glyph info block types
//
#define EFI_HII_GIBT_END 0x00
#define EFI_HII_GIBT_GLYPH 0x10
#define EFI_HII_GIBT_GLYPHS 0x11
#define EFI_HII_GIBT_GLYPH_DEFAULT 0x12
#define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13
#define EFI_HII_GIBT_GLYPH_VARIABILITY 0x14
#define EFI_HII_GIBT_DUPLICATE 0x20
#define EFI_HII_GIBT_SKIP2 0x21
#define EFI_HII_GIBT_SKIP1 0x22
#define EFI_HII_GIBT_DEFAULTS 0x23
#define EFI_HII_GIBT_EXT1 0x30
#define EFI_HII_GIBT_EXT2 0x31
#define EFI_HII_GIBT_EXT4 0x32
typedef struct _EFI_HII_GLYPH_BLOCK {
UINT8 BlockType;
} EFI_HII_GLYPH_BLOCK;
//
// Definition of different glyph info block types
//
typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
EFI_HII_GLYPH_INFO Cell;
} EFI_HII_GIBT_DEFAULTS_BLOCK;
typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
CHAR16 CharValue;
} EFI_HII_GIBT_DUPLICATE_BLOCK;
typedef struct _EFI_GLYPH_GIBT_END_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
} EFI_GLYPH_GIBT_END_BLOCK;
typedef struct _EFI_HII_GIBT_EXT1_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
UINT8 BlockType2;
UINT8 Length;
} EFI_HII_GIBT_EXT1_BLOCK;
typedef struct _EFI_HII_GIBT_EXT2_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
UINT8 BlockType2;
UINT16 Length;
} EFI_HII_GIBT_EXT2_BLOCK;
typedef struct _EFI_HII_GIBT_EXT4_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
UINT8 BlockType2;
UINT32 Length;
} EFI_HII_GIBT_EXT4_BLOCK;
typedef struct _EFI_HII_GIBT_GLYPH_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
EFI_HII_GLYPH_INFO Cell;
UINT8 BitmapData[1];
} EFI_HII_GIBT_GLYPH_BLOCK;
typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
EFI_HII_GLYPH_INFO Cell;
- UINT16 Count;
+ UINT16 Count;
UINT8 BitmapData[1];
} EFI_HII_GIBT_GLYPHS_BLOCK;
typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
UINT8 BitmapData[1];
} EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK;
typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
UINT16 Count;
UINT8 BitmapData[1];
} EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK;
typedef struct _EFI_HII_GIBT_VARIABILITY_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
EFI_HII_GLYPH_INFO Cell;
UINT8 GlyphPackInBits;
UINT8 BitmapData [1];
} EFI_HII_GIBT_VARIABILITY_BLOCK;
typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
UINT8 SkipCount;
} EFI_HII_GIBT_SKIP1_BLOCK;
typedef struct _EFI_HII_GIBT_SKIP2_BLOCK {
EFI_HII_GLYPH_BLOCK Header;
UINT16 SkipCount;
} EFI_HII_GIBT_SKIP2_BLOCK;
//
// Definitions for Device Path Package
// Section 27.3.4
//
///
/// The device path package is used to carry a device path
/// associated with the package list.
///
typedef struct _EFI_HII_DEVICE_PATH_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
// EFI_DEVICE_PATH_PROTOCOL DevicePath[];
} EFI_HII_DEVICE_PATH_PACKAGE_HDR;
//
// Definitions for GUID Package
// Section 27.3.5
//
///
/// The GUID package is used to carry data where the format is defined by a GUID.
///
typedef struct _EFI_HII_GUID_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
EFI_GUID Guid;
// Data per GUID definition may follow
} EFI_HII_GUID_PACKAGE_HDR;
//
// Definitions for String Package
// Section 27.3.6
//
#define UEFI_CONFIG_LANG "x-UEFI"
#define UEFI_CONFIG_LANG_2 "x-i-UEFI"
///
/// The fixed header consists of a standard record header and then the string identifiers
/// contained in this section and the offsets of the string and language information.
///
typedef struct _EFI_HII_STRING_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
UINT32 HdrSize;
UINT32 StringInfoOffset;
CHAR16 LanguageWindow[16];
EFI_STRING_ID LanguageName;
CHAR8 Language[1];
} EFI_HII_STRING_PACKAGE_HDR;
typedef struct {
UINT8 BlockType;
} EFI_HII_STRING_BLOCK;
//
// Value of different string information block types
//
#define EFI_HII_SIBT_END 0x00
#define EFI_HII_SIBT_STRING_SCSU 0x10
#define EFI_HII_SIBT_STRING_SCSU_FONT 0x11
#define EFI_HII_SIBT_STRINGS_SCSU 0x12
#define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13
#define EFI_HII_SIBT_STRING_UCS2 0x14
#define EFI_HII_SIBT_STRING_UCS2_FONT 0x15
#define EFI_HII_SIBT_STRINGS_UCS2 0x16
#define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17
#define EFI_HII_SIBT_DUPLICATE 0x20
#define EFI_HII_SIBT_SKIP2 0x21
#define EFI_HII_SIBT_SKIP1 0x22
#define EFI_HII_SIBT_EXT1 0x30
#define EFI_HII_SIBT_EXT2 0x31
#define EFI_HII_SIBT_EXT4 0x32
#define EFI_HII_SIBT_FONT 0x40
//
// Definition of different string information block types
//
typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK {
EFI_HII_STRING_BLOCK Header;
EFI_STRING_ID StringId;
} EFI_HII_SIBT_DUPLICATE_BLOCK;
typedef struct _EFI_HII_SIBT_END_BLOCK {
EFI_HII_STRING_BLOCK Header;
} EFI_HII_SIBT_END_BLOCK;
typedef struct _EFI_HII_SIBT_EXT1_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT8 BlockType2;
UINT8 Length;
} EFI_HII_SIBT_EXT1_BLOCK;
typedef struct _EFI_HII_SIBT_EXT2_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT8 BlockType2;
UINT16 Length;
} EFI_HII_SIBT_EXT2_BLOCK;
typedef struct _EFI_HII_SIBT_EXT4_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT8 BlockType2;
UINT32 Length;
} EFI_HII_SIBT_EXT4_BLOCK;
typedef struct _EFI_HII_SIBT_FONT_BLOCK {
EFI_HII_SIBT_EXT2_BLOCK Header;
UINT8 FontId;
UINT16 FontSize;
EFI_HII_FONT_STYLE FontStyle;
CHAR16 FontName[1];
} EFI_HII_SIBT_FONT_BLOCK;
typedef struct _EFI_HII_SIBT_SKIP1_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT8 SkipCount;
} EFI_HII_SIBT_SKIP1_BLOCK;
typedef struct _EFI_HII_SIBT_SKIP2_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT16 SkipCount;
} EFI_HII_SIBT_SKIP2_BLOCK;
typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT8 StringText[1];
} EFI_HII_SIBT_STRING_SCSU_BLOCK;
typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT8 FontIdentifier;
UINT8 StringText[1];
} EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK;
typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT16 StringCount;
UINT8 StringText[1];
} EFI_HII_SIBT_STRINGS_SCSU_BLOCK;
typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT8 FontIdentifier;
UINT16 StringCount;
UINT8 StringText[1];
} EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK;
typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK {
EFI_HII_STRING_BLOCK Header;
CHAR16 StringText[1];
} EFI_HII_SIBT_STRING_UCS2_BLOCK;
typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT8 FontIdentifier;
CHAR16 StringText[1];
} EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK;
typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT16 StringCount;
CHAR16 StringText[1];
} EFI_HII_SIBT_STRINGS_UCS2_BLOCK;
typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK {
EFI_HII_STRING_BLOCK Header;
UINT8 FontIdentifier;
UINT16 StringCount;
CHAR16 StringText[1];
} EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK;
//
// Definitions for Image Package
// Section 27.3.7
//
typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
UINT32 ImageInfoOffset;
UINT32 PaletteInfoOffset;
} EFI_HII_IMAGE_PACKAGE_HDR;
typedef struct _EFI_HII_IMAGE_BLOCK {
UINT8 BlockType;
} EFI_HII_IMAGE_BLOCK;
//
// Value of different image information block types
//
#define EFI_HII_IIBT_END 0x00
#define EFI_HII_IIBT_IMAGE_1BIT 0x10
#define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11
#define EFI_HII_IIBT_IMAGE_4BIT 0x12
#define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13
#define EFI_HII_IIBT_IMAGE_8BIT 0x14
#define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15
#define EFI_HII_IIBT_IMAGE_24BIT 0x16
#define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17
#define EFI_HII_IIBT_IMAGE_JPEG 0x18
#define EFI_HII_IIBT_IMAGE_PNG 0x19
#define EFI_HII_IIBT_DUPLICATE 0x20
#define EFI_HII_IIBT_SKIP2 0x21
#define EFI_HII_IIBT_SKIP1 0x22
#define EFI_HII_IIBT_EXT1 0x30
#define EFI_HII_IIBT_EXT2 0x31
#define EFI_HII_IIBT_EXT4 0x32
//
// Definition of different image information block types
//
typedef struct _EFI_HII_IIBT_END_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
} EFI_HII_IIBT_END_BLOCK;
typedef struct _EFI_HII_IIBT_EXT1_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 BlockType2;
UINT8 Length;
} EFI_HII_IIBT_EXT1_BLOCK;
typedef struct _EFI_HII_IIBT_EXT2_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 BlockType2;
UINT16 Length;
} EFI_HII_IIBT_EXT2_BLOCK;
typedef struct _EFI_HII_IIBT_EXT4_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 BlockType2;
UINT32 Length;
} EFI_HII_IIBT_EXT4_BLOCK;
typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE {
UINT16 Width;
UINT16 Height;
UINT8 Data[1];
} EFI_HII_IIBT_IMAGE_1BIT_BASE;
typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 PaletteIndex;
EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;
} EFI_HII_IIBT_IMAGE_1BIT_BLOCK;
typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 PaletteIndex;
EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;
} EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK;
typedef struct _EFI_HII_RGB_PIXEL {
UINT8 b;
UINT8 g;
UINT8 r;
} EFI_HII_RGB_PIXEL;
typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE {
UINT16 Width;
UINT16 Height;
EFI_HII_RGB_PIXEL Bitmap[1];
} EFI_HII_IIBT_IMAGE_24BIT_BASE;
typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;
} EFI_HII_IIBT_IMAGE_24BIT_BLOCK;
typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;
} EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK;
typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE {
UINT16 Width;
UINT16 Height;
UINT8 Data[1];
} EFI_HII_IIBT_IMAGE_4BIT_BASE;
typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 PaletteIndex;
EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;
} EFI_HII_IIBT_IMAGE_4BIT_BLOCK;
typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 PaletteIndex;
EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;
} EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK;
typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE {
UINT16 Width;
UINT16 Height;
UINT8 Data[1];
} EFI_HII_IIBT_IMAGE_8BIT_BASE;
typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 PaletteIndex;
EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;
} EFI_HII_IIBT_IMAGE_8BIT_BLOCK;
typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 PaletteIndex;
EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;
} EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK;
typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
EFI_IMAGE_ID ImageId;
} EFI_HII_IIBT_DUPLICATE_BLOCK;
typedef struct _EFI_HII_IIBT_JPEG_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT32 Size;
UINT8 Data[1];
} EFI_HII_IIBT_JPEG_BLOCK;
typedef struct _EFI_HII_IIBT_PNG_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT32 Size;
UINT8 Data[1];
} EFI_HII_IIBT_PNG_BLOCK;
typedef struct _EFI_HII_IIBT_SKIP1_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT8 SkipCount;
} EFI_HII_IIBT_SKIP1_BLOCK;
typedef struct _EFI_HII_IIBT_SKIP2_BLOCK {
EFI_HII_IMAGE_BLOCK Header;
UINT16 SkipCount;
} EFI_HII_IIBT_SKIP2_BLOCK;
//
// Definitions for Palette Information
//
typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER {
UINT16 PaletteCount;
} EFI_HII_IMAGE_PALETTE_INFO_HEADER;
typedef struct _EFI_HII_IMAGE_PALETTE_INFO {
UINT16 PaletteSize;
EFI_HII_RGB_PIXEL PaletteValue[1];
} EFI_HII_IMAGE_PALETTE_INFO;
//
// Definitions for Forms Package
// Section 27.3.8
//
///
/// The Form package is used to carry form-based encoding data.
///
typedef struct _EFI_HII_FORM_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
// EFI_IFR_OP_HEADER OpCodeHeader;
// More op-codes follow
} EFI_HII_FORM_PACKAGE_HDR;
typedef struct {
UINT8 Hour;
UINT8 Minute;
UINT8 Second;
} EFI_HII_TIME;
typedef struct {
UINT16 Year;
UINT8 Month;
UINT8 Day;
} EFI_HII_DATE;
typedef struct {
EFI_QUESTION_ID QuestionId;
EFI_FORM_ID FormId;
EFI_GUID FormSetGuid;
EFI_STRING_ID DevicePath;
} EFI_HII_REF;
typedef union {
UINT8 u8;
UINT16 u16;
UINT32 u32;
UINT64 u64;
BOOLEAN b;
EFI_HII_TIME time;
EFI_HII_DATE date;
EFI_STRING_ID string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION
EFI_HII_REF ref; ///< EFI_IFR_TYPE_REF
// UINT8 buffer[]; ///< EFI_IFR_TYPE_BUFFER
} EFI_IFR_TYPE_VALUE;
//
// IFR Opcodes
//
#define EFI_IFR_FORM_OP 0x01
#define EFI_IFR_SUBTITLE_OP 0x02
#define EFI_IFR_TEXT_OP 0x03
#define EFI_IFR_IMAGE_OP 0x04
#define EFI_IFR_ONE_OF_OP 0x05
#define EFI_IFR_CHECKBOX_OP 0x06
#define EFI_IFR_NUMERIC_OP 0x07
#define EFI_IFR_PASSWORD_OP 0x08
#define EFI_IFR_ONE_OF_OPTION_OP 0x09
#define EFI_IFR_SUPPRESS_IF_OP 0x0A
#define EFI_IFR_LOCKED_OP 0x0B
#define EFI_IFR_ACTION_OP 0x0C
#define EFI_IFR_RESET_BUTTON_OP 0x0D
#define EFI_IFR_FORM_SET_OP 0x0E
#define EFI_IFR_REF_OP 0x0F
#define EFI_IFR_NO_SUBMIT_IF_OP 0x10
#define EFI_IFR_INCONSISTENT_IF_OP 0x11
#define EFI_IFR_EQ_ID_VAL_OP 0x12
#define EFI_IFR_EQ_ID_ID_OP 0x13
#define EFI_IFR_EQ_ID_VAL_LIST_OP 0x14
#define EFI_IFR_AND_OP 0x15
#define EFI_IFR_OR_OP 0x16
#define EFI_IFR_NOT_OP 0x17
#define EFI_IFR_RULE_OP 0x18
#define EFI_IFR_GRAY_OUT_IF_OP 0x19
#define EFI_IFR_DATE_OP 0x1A
#define EFI_IFR_TIME_OP 0x1B
#define EFI_IFR_STRING_OP 0x1C
#define EFI_IFR_REFRESH_OP 0x1D
#define EFI_IFR_DISABLE_IF_OP 0x1E
#define EFI_IFR_ANIMATION_OP 0x1F
#define EFI_IFR_TO_LOWER_OP 0x20
#define EFI_IFR_TO_UPPER_OP 0x21
#define EFI_IFR_MAP_OP 0x22
#define EFI_IFR_ORDERED_LIST_OP 0x23
#define EFI_IFR_VARSTORE_OP 0x24
#define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25
#define EFI_IFR_VARSTORE_EFI_OP 0x26
#define EFI_IFR_VARSTORE_DEVICE_OP 0x27
#define EFI_IFR_VERSION_OP 0x28
#define EFI_IFR_END_OP 0x29
#define EFI_IFR_MATCH_OP 0x2A
#define EFI_IFR_GET_OP 0x2B
#define EFI_IFR_SET_OP 0x2C
#define EFI_IFR_READ_OP 0x2D
#define EFI_IFR_WRITE_OP 0x2E
#define EFI_IFR_EQUAL_OP 0x2F
#define EFI_IFR_NOT_EQUAL_OP 0x30
#define EFI_IFR_GREATER_THAN_OP 0x31
#define EFI_IFR_GREATER_EQUAL_OP 0x32
#define EFI_IFR_LESS_THAN_OP 0x33
#define EFI_IFR_LESS_EQUAL_OP 0x34
#define EFI_IFR_BITWISE_AND_OP 0x35
#define EFI_IFR_BITWISE_OR_OP 0x36
#define EFI_IFR_BITWISE_NOT_OP 0x37
#define EFI_IFR_SHIFT_LEFT_OP 0x38
#define EFI_IFR_SHIFT_RIGHT_OP 0x39
#define EFI_IFR_ADD_OP 0x3A
#define EFI_IFR_SUBTRACT_OP 0x3B
#define EFI_IFR_MULTIPLY_OP 0x3C
#define EFI_IFR_DIVIDE_OP 0x3D
#define EFI_IFR_MODULO_OP 0x3E
#define EFI_IFR_RULE_REF_OP 0x3F
#define EFI_IFR_QUESTION_REF1_OP 0x40
#define EFI_IFR_QUESTION_REF2_OP 0x41
#define EFI_IFR_UINT8_OP 0x42
#define EFI_IFR_UINT16_OP 0x43
#define EFI_IFR_UINT32_OP 0x44
#define EFI_IFR_UINT64_OP 0x45
#define EFI_IFR_TRUE_OP 0x46
#define EFI_IFR_FALSE_OP 0x47
#define EFI_IFR_TO_UINT_OP 0x48
#define EFI_IFR_TO_STRING_OP 0x49
#define EFI_IFR_TO_BOOLEAN_OP 0x4A
#define EFI_IFR_MID_OP 0x4B
#define EFI_IFR_FIND_OP 0x4C
#define EFI_IFR_TOKEN_OP 0x4D
#define EFI_IFR_STRING_REF1_OP 0x4E
#define EFI_IFR_STRING_REF2_OP 0x4F
#define EFI_IFR_CONDITIONAL_OP 0x50
#define EFI_IFR_QUESTION_REF3_OP 0x51
#define EFI_IFR_ZERO_OP 0x52
#define EFI_IFR_ONE_OP 0x53
#define EFI_IFR_ONES_OP 0x54
#define EFI_IFR_UNDEFINED_OP 0x55
#define EFI_IFR_LENGTH_OP 0x56
#define EFI_IFR_DUP_OP 0x57
#define EFI_IFR_THIS_OP 0x58
#define EFI_IFR_SPAN_OP 0x59
#define EFI_IFR_VALUE_OP 0x5A
#define EFI_IFR_DEFAULT_OP 0x5B
#define EFI_IFR_DEFAULTSTORE_OP 0x5C
#define EFI_IFR_FORM_MAP_OP 0x5D
#define EFI_IFR_CATENATE_OP 0x5E
#define EFI_IFR_GUID_OP 0x5F
#define EFI_IFR_SECURITY_OP 0x60
#define EFI_IFR_MODAL_TAG_OP 0x61
#define EFI_IFR_REFRESH_ID_OP 0x62
#define EFI_IFR_WARNING_IF_OP 0x63
#define EFI_IFR_MATCH2_OP 0x64
//
// Definitions of IFR Standard Headers
// Section 27.3.8.2
//
typedef struct _EFI_IFR_OP_HEADER {
UINT8 OpCode;
UINT8 Length:7;
UINT8 Scope:1;
} EFI_IFR_OP_HEADER;
typedef struct _EFI_IFR_STATEMENT_HEADER {
EFI_STRING_ID Prompt;
EFI_STRING_ID Help;
} EFI_IFR_STATEMENT_HEADER;
typedef struct _EFI_IFR_QUESTION_HEADER {
EFI_IFR_STATEMENT_HEADER Header;
EFI_QUESTION_ID QuestionId;
EFI_VARSTORE_ID VarStoreId;
union {
EFI_STRING_ID VarName;
UINT16 VarOffset;
} VarStoreInfo;
UINT8 Flags;
} EFI_IFR_QUESTION_HEADER;
//
// Flag values of EFI_IFR_QUESTION_HEADER
//
#define EFI_IFR_FLAG_READ_ONLY 0x01
#define EFI_IFR_FLAG_CALLBACK 0x04
#define EFI_IFR_FLAG_RESET_REQUIRED 0x10
+#define EFI_IFR_FLAG_REST_STYLE 0x20
#define EFI_IFR_FLAG_RECONNECT_REQUIRED 0x40
#define EFI_IFR_FLAG_OPTIONS_ONLY 0x80
//
// Definition for Opcode Reference
// Section 27.3.8.3
//
typedef struct _EFI_IFR_DEFAULTSTORE {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID DefaultName;
UINT16 DefaultId;
} EFI_IFR_DEFAULTSTORE;
//
-// Default Identifier of default store
+// Default Identifier of default store
//
#define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000
#define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001
#define EFI_HII_DEFAULT_CLASS_SAFE 0x0002
#define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000
#define EFI_HII_DEFAULT_CLASS_PLATFORM_END 0x7fff
#define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000
#define EFI_HII_DEFAULT_CLASS_HARDWARE_END 0xbfff
#define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000
#define EFI_HII_DEFAULT_CLASS_FIRMWARE_END 0xffff
typedef struct _EFI_IFR_VARSTORE {
EFI_IFR_OP_HEADER Header;
EFI_GUID Guid;
EFI_VARSTORE_ID VarStoreId;
UINT16 Size;
UINT8 Name[1];
} EFI_IFR_VARSTORE;
typedef struct _EFI_IFR_VARSTORE_EFI {
EFI_IFR_OP_HEADER Header;
EFI_VARSTORE_ID VarStoreId;
EFI_GUID Guid;
UINT32 Attributes;
UINT16 Size;
UINT8 Name[1];
} EFI_IFR_VARSTORE_EFI;
typedef struct _EFI_IFR_VARSTORE_NAME_VALUE {
EFI_IFR_OP_HEADER Header;
EFI_VARSTORE_ID VarStoreId;
EFI_GUID Guid;
} EFI_IFR_VARSTORE_NAME_VALUE;
typedef struct _EFI_IFR_FORM_SET {
EFI_IFR_OP_HEADER Header;
EFI_GUID Guid;
EFI_STRING_ID FormSetTitle;
EFI_STRING_ID Help;
UINT8 Flags;
// EFI_GUID ClassGuid[];
} EFI_IFR_FORM_SET;
typedef struct _EFI_IFR_END {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_END;
typedef struct _EFI_IFR_FORM {
EFI_IFR_OP_HEADER Header;
UINT16 FormId;
EFI_STRING_ID FormTitle;
} EFI_IFR_FORM;
typedef struct _EFI_IFR_IMAGE {
EFI_IFR_OP_HEADER Header;
EFI_IMAGE_ID Id;
} EFI_IFR_IMAGE;
typedef struct _EFI_IFR_MODAL_TAG {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_MODAL_TAG;
typedef struct _EFI_IFR_LOCKED {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_LOCKED;
typedef struct _EFI_IFR_RULE {
EFI_IFR_OP_HEADER Header;
UINT8 RuleId;
} EFI_IFR_RULE;
typedef struct _EFI_IFR_DEFAULT {
EFI_IFR_OP_HEADER Header;
UINT16 DefaultId;
UINT8 Type;
EFI_IFR_TYPE_VALUE Value;
} EFI_IFR_DEFAULT;
typedef struct _EFI_IFR_DEFAULT_2 {
EFI_IFR_OP_HEADER Header;
UINT16 DefaultId;
UINT8 Type;
} EFI_IFR_DEFAULT_2;
typedef struct _EFI_IFR_VALUE {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_VALUE;
typedef struct _EFI_IFR_SUBTITLE {
EFI_IFR_OP_HEADER Header;
EFI_IFR_STATEMENT_HEADER Statement;
UINT8 Flags;
} EFI_IFR_SUBTITLE;
#define EFI_IFR_FLAGS_HORIZONTAL 0x01
typedef struct _EFI_IFR_CHECKBOX {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
UINT8 Flags;
} EFI_IFR_CHECKBOX;
#define EFI_IFR_CHECKBOX_DEFAULT 0x01
#define EFI_IFR_CHECKBOX_DEFAULT_MFG 0x02
typedef struct _EFI_IFR_TEXT {
EFI_IFR_OP_HEADER Header;
EFI_IFR_STATEMENT_HEADER Statement;
EFI_STRING_ID TextTwo;
} EFI_IFR_TEXT;
typedef struct _EFI_IFR_REF {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
EFI_FORM_ID FormId;
} EFI_IFR_REF;
typedef struct _EFI_IFR_REF2 {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
EFI_FORM_ID FormId;
EFI_QUESTION_ID QuestionId;
} EFI_IFR_REF2;
typedef struct _EFI_IFR_REF3 {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
EFI_FORM_ID FormId;
EFI_QUESTION_ID QuestionId;
EFI_GUID FormSetId;
} EFI_IFR_REF3;
typedef struct _EFI_IFR_REF4 {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
EFI_FORM_ID FormId;
EFI_QUESTION_ID QuestionId;
EFI_GUID FormSetId;
EFI_STRING_ID DevicePath;
} EFI_IFR_REF4;
typedef struct _EFI_IFR_REF5 {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
} EFI_IFR_REF5;
typedef struct _EFI_IFR_RESET_BUTTON {
EFI_IFR_OP_HEADER Header;
EFI_IFR_STATEMENT_HEADER Statement;
EFI_DEFAULT_ID DefaultId;
} EFI_IFR_RESET_BUTTON;
typedef struct _EFI_IFR_ACTION {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
EFI_STRING_ID QuestionConfig;
} EFI_IFR_ACTION;
typedef struct _EFI_IFR_ACTION_1 {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
} EFI_IFR_ACTION_1;
typedef struct _EFI_IFR_DATE {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
UINT8 Flags;
} EFI_IFR_DATE;
//
// Flags that describe the behavior of the question.
//
#define EFI_QF_DATE_YEAR_SUPPRESS 0x01
#define EFI_QF_DATE_MONTH_SUPPRESS 0x02
#define EFI_QF_DATE_DAY_SUPPRESS 0x04
#define EFI_QF_DATE_STORAGE 0x30
#define QF_DATE_STORAGE_NORMAL 0x00
#define QF_DATE_STORAGE_TIME 0x10
#define QF_DATE_STORAGE_WAKEUP 0x20
typedef union {
struct {
UINT8 MinValue;
UINT8 MaxValue;
UINT8 Step;
} u8;
struct {
UINT16 MinValue;
UINT16 MaxValue;
UINT16 Step;
} u16;
struct {
UINT32 MinValue;
UINT32 MaxValue;
UINT32 Step;
} u32;
struct {
UINT64 MinValue;
UINT64 MaxValue;
UINT64 Step;
} u64;
} MINMAXSTEP_DATA;
typedef struct _EFI_IFR_NUMERIC {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
UINT8 Flags;
MINMAXSTEP_DATA data;
} EFI_IFR_NUMERIC;
//
// Flags related to the numeric question
//
#define EFI_IFR_NUMERIC_SIZE 0x03
#define EFI_IFR_NUMERIC_SIZE_1 0x00
#define EFI_IFR_NUMERIC_SIZE_2 0x01
#define EFI_IFR_NUMERIC_SIZE_4 0x02
#define EFI_IFR_NUMERIC_SIZE_8 0x03
#define EFI_IFR_DISPLAY 0x30
#define EFI_IFR_DISPLAY_INT_DEC 0x00
#define EFI_IFR_DISPLAY_UINT_DEC 0x10
#define EFI_IFR_DISPLAY_UINT_HEX 0x20
typedef struct _EFI_IFR_ONE_OF {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
UINT8 Flags;
MINMAXSTEP_DATA data;
} EFI_IFR_ONE_OF;
typedef struct _EFI_IFR_STRING {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
UINT8 MinSize;
UINT8 MaxSize;
UINT8 Flags;
} EFI_IFR_STRING;
#define EFI_IFR_STRING_MULTI_LINE 0x01
typedef struct _EFI_IFR_PASSWORD {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
UINT16 MinSize;
UINT16 MaxSize;
} EFI_IFR_PASSWORD;
typedef struct _EFI_IFR_ORDERED_LIST {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
UINT8 MaxContainers;
UINT8 Flags;
} EFI_IFR_ORDERED_LIST;
#define EFI_IFR_UNIQUE_SET 0x01
#define EFI_IFR_NO_EMPTY_SET 0x02
typedef struct _EFI_IFR_TIME {
EFI_IFR_OP_HEADER Header;
EFI_IFR_QUESTION_HEADER Question;
UINT8 Flags;
} EFI_IFR_TIME;
//
// A bit-mask that determines which unique settings are active for this opcode.
//
#define QF_TIME_HOUR_SUPPRESS 0x01
#define QF_TIME_MINUTE_SUPPRESS 0x02
#define QF_TIME_SECOND_SUPPRESS 0x04
#define QF_TIME_STORAGE 0x30
#define QF_TIME_STORAGE_NORMAL 0x00
#define QF_TIME_STORAGE_TIME 0x10
#define QF_TIME_STORAGE_WAKEUP 0x20
typedef struct _EFI_IFR_DISABLE_IF {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_DISABLE_IF;
typedef struct _EFI_IFR_SUPPRESS_IF {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_SUPPRESS_IF;
typedef struct _EFI_IFR_GRAY_OUT_IF {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_GRAY_OUT_IF;
typedef struct _EFI_IFR_INCONSISTENT_IF {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID Error;
} EFI_IFR_INCONSISTENT_IF;
typedef struct _EFI_IFR_NO_SUBMIT_IF {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID Error;
} EFI_IFR_NO_SUBMIT_IF;
typedef struct _EFI_IFR_WARNING_IF {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID Warning;
UINT8 TimeOut;
} EFI_IFR_WARNING_IF;
typedef struct _EFI_IFR_REFRESH {
EFI_IFR_OP_HEADER Header;
UINT8 RefreshInterval;
} EFI_IFR_REFRESH;
typedef struct _EFI_IFR_VARSTORE_DEVICE {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID DevicePath;
} EFI_IFR_VARSTORE_DEVICE;
typedef struct _EFI_IFR_ONE_OF_OPTION {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID Option;
UINT8 Flags;
UINT8 Type;
EFI_IFR_TYPE_VALUE Value;
} EFI_IFR_ONE_OF_OPTION;
//
// Types of the option's value.
//
#define EFI_IFR_TYPE_NUM_SIZE_8 0x00
#define EFI_IFR_TYPE_NUM_SIZE_16 0x01
#define EFI_IFR_TYPE_NUM_SIZE_32 0x02
#define EFI_IFR_TYPE_NUM_SIZE_64 0x03
#define EFI_IFR_TYPE_BOOLEAN 0x04
#define EFI_IFR_TYPE_TIME 0x05
#define EFI_IFR_TYPE_DATE 0x06
#define EFI_IFR_TYPE_STRING 0x07
#define EFI_IFR_TYPE_OTHER 0x08
#define EFI_IFR_TYPE_UNDEFINED 0x09
#define EFI_IFR_TYPE_ACTION 0x0A
#define EFI_IFR_TYPE_BUFFER 0x0B
#define EFI_IFR_TYPE_REF 0x0C
#define EFI_IFR_OPTION_DEFAULT 0x10
#define EFI_IFR_OPTION_DEFAULT_MFG 0x20
typedef struct _EFI_IFR_GUID {
EFI_IFR_OP_HEADER Header;
EFI_GUID Guid;
//Optional Data Follows
} EFI_IFR_GUID;
typedef struct _EFI_IFR_REFRESH_ID {
EFI_IFR_OP_HEADER Header;
EFI_GUID RefreshEventGroupId;
} EFI_IFR_REFRESH_ID;
typedef struct _EFI_IFR_DUP {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_DUP;
typedef struct _EFI_IFR_EQ_ID_ID {
EFI_IFR_OP_HEADER Header;
EFI_QUESTION_ID QuestionId1;
EFI_QUESTION_ID QuestionId2;
} EFI_IFR_EQ_ID_ID;
typedef struct _EFI_IFR_EQ_ID_VAL {
EFI_IFR_OP_HEADER Header;
EFI_QUESTION_ID QuestionId;
UINT16 Value;
} EFI_IFR_EQ_ID_VAL;
typedef struct _EFI_IFR_EQ_ID_VAL_LIST {
EFI_IFR_OP_HEADER Header;
EFI_QUESTION_ID QuestionId;
UINT16 ListLength;
UINT16 ValueList[1];
} EFI_IFR_EQ_ID_VAL_LIST;
typedef struct _EFI_IFR_UINT8 {
EFI_IFR_OP_HEADER Header;
UINT8 Value;
} EFI_IFR_UINT8;
typedef struct _EFI_IFR_UINT16 {
EFI_IFR_OP_HEADER Header;
UINT16 Value;
} EFI_IFR_UINT16;
typedef struct _EFI_IFR_UINT32 {
EFI_IFR_OP_HEADER Header;
UINT32 Value;
} EFI_IFR_UINT32;
typedef struct _EFI_IFR_UINT64 {
EFI_IFR_OP_HEADER Header;
UINT64 Value;
} EFI_IFR_UINT64;
typedef struct _EFI_IFR_QUESTION_REF1 {
EFI_IFR_OP_HEADER Header;
EFI_QUESTION_ID QuestionId;
} EFI_IFR_QUESTION_REF1;
typedef struct _EFI_IFR_QUESTION_REF2 {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_QUESTION_REF2;
typedef struct _EFI_IFR_QUESTION_REF3 {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_QUESTION_REF3;
typedef struct _EFI_IFR_QUESTION_REF3_2 {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID DevicePath;
} EFI_IFR_QUESTION_REF3_2;
typedef struct _EFI_IFR_QUESTION_REF3_3 {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID DevicePath;
EFI_GUID Guid;
} EFI_IFR_QUESTION_REF3_3;
typedef struct _EFI_IFR_RULE_REF {
EFI_IFR_OP_HEADER Header;
UINT8 RuleId;
} EFI_IFR_RULE_REF;
typedef struct _EFI_IFR_STRING_REF1 {
EFI_IFR_OP_HEADER Header;
EFI_STRING_ID StringId;
} EFI_IFR_STRING_REF1;
typedef struct _EFI_IFR_STRING_REF2 {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_STRING_REF2;
typedef struct _EFI_IFR_THIS {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_THIS;
typedef struct _EFI_IFR_TRUE {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_TRUE;
typedef struct _EFI_IFR_FALSE {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_FALSE;
typedef struct _EFI_IFR_ONE {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_ONE;
typedef struct _EFI_IFR_ONES {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_ONES;
typedef struct _EFI_IFR_ZERO {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_ZERO;
typedef struct _EFI_IFR_UNDEFINED {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_UNDEFINED;
typedef struct _EFI_IFR_VERSION {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_VERSION;
typedef struct _EFI_IFR_LENGTH {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_LENGTH;
typedef struct _EFI_IFR_NOT {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_NOT;
typedef struct _EFI_IFR_BITWISE_NOT {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_BITWISE_NOT;
typedef struct _EFI_IFR_TO_BOOLEAN {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_TO_BOOLEAN;
///
/// For EFI_IFR_TO_STRING, when converting from
/// unsigned integers, these flags control the format:
/// 0 = unsigned decimal.
/// 1 = signed decimal.
/// 2 = hexadecimal (lower-case alpha).
/// 3 = hexadecimal (upper-case alpha).
///@{
#define EFI_IFR_STRING_UNSIGNED_DEC 0
#define EFI_IFR_STRING_SIGNED_DEC 1
#define EFI_IFR_STRING_LOWERCASE_HEX 2
#define EFI_IFR_STRING_UPPERCASE_HEX 3
///@}
///
/// When converting from a buffer, these flags control the format:
/// 0 = ASCII.
/// 8 = Unicode.
///@{
#define EFI_IFR_STRING_ASCII 0
#define EFI_IFR_STRING_UNICODE 8
///@}
typedef struct _EFI_IFR_TO_STRING {
EFI_IFR_OP_HEADER Header;
UINT8 Format;
} EFI_IFR_TO_STRING;
typedef struct _EFI_IFR_TO_UINT {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_TO_UINT;
typedef struct _EFI_IFR_TO_UPPER {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_TO_UPPER;
typedef struct _EFI_IFR_TO_LOWER {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_TO_LOWER;
typedef struct _EFI_IFR_ADD {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_ADD;
typedef struct _EFI_IFR_AND {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_AND;
typedef struct _EFI_IFR_BITWISE_AND {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_BITWISE_AND;
typedef struct _EFI_IFR_BITWISE_OR {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_BITWISE_OR;
typedef struct _EFI_IFR_CATENATE {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_CATENATE;
typedef struct _EFI_IFR_DIVIDE {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_DIVIDE;
typedef struct _EFI_IFR_EQUAL {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_EQUAL;
typedef struct _EFI_IFR_GREATER_EQUAL {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_GREATER_EQUAL;
typedef struct _EFI_IFR_GREATER_THAN {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_GREATER_THAN;
typedef struct _EFI_IFR_LESS_EQUAL {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_LESS_EQUAL;
typedef struct _EFI_IFR_LESS_THAN {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_LESS_THAN;
typedef struct _EFI_IFR_MATCH {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_MATCH;
typedef struct _EFI_IFR_MATCH2 {
EFI_IFR_OP_HEADER Header;
EFI_GUID SyntaxType;
} EFI_IFR_MATCH2;
typedef struct _EFI_IFR_MULTIPLY {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_MULTIPLY;
typedef struct _EFI_IFR_MODULO {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_MODULO;
typedef struct _EFI_IFR_NOT_EQUAL {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_NOT_EQUAL;
typedef struct _EFI_IFR_OR {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_OR;
typedef struct _EFI_IFR_SHIFT_LEFT {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_SHIFT_LEFT;
typedef struct _EFI_IFR_SHIFT_RIGHT {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_SHIFT_RIGHT;
typedef struct _EFI_IFR_SUBTRACT {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_SUBTRACT;
typedef struct _EFI_IFR_CONDITIONAL {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_CONDITIONAL;
//
// Flags governing the matching criteria of EFI_IFR_FIND
//
#define EFI_IFR_FF_CASE_SENSITIVE 0x00
#define EFI_IFR_FF_CASE_INSENSITIVE 0x01
typedef struct _EFI_IFR_FIND {
EFI_IFR_OP_HEADER Header;
UINT8 Format;
} EFI_IFR_FIND;
typedef struct _EFI_IFR_MID {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_MID;
typedef struct _EFI_IFR_TOKEN {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_TOKEN;
//
// Flags specifying whether to find the first matching string
// or the first non-matching string.
//
#define EFI_IFR_FLAGS_FIRST_MATCHING 0x00
#define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01
typedef struct _EFI_IFR_SPAN {
EFI_IFR_OP_HEADER Header;
UINT8 Flags;
} EFI_IFR_SPAN;
typedef struct _EFI_IFR_SECURITY {
///
/// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.
///
EFI_IFR_OP_HEADER Header;
///
/// Security permission level.
///
EFI_GUID Permissions;
} EFI_IFR_SECURITY;
typedef struct _EFI_IFR_FORM_MAP_METHOD {
///
- /// The string identifier which provides the human-readable name of
+ /// The string identifier which provides the human-readable name of
/// the configuration method for this standards map form.
///
EFI_STRING_ID MethodTitle;
///
- /// Identifier which uniquely specifies the configuration methods
+ /// Identifier which uniquely specifies the configuration methods
/// associated with this standards map form.
///
EFI_GUID MethodIdentifier;
} EFI_IFR_FORM_MAP_METHOD;
typedef struct _EFI_IFR_FORM_MAP {
///
- /// The sequence that defines the type of opcode as well as the length
- /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.
+ /// The sequence that defines the type of opcode as well as the length
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.
///
EFI_IFR_OP_HEADER Header;
///
/// The unique identifier for this particular form.
///
EFI_FORM_ID FormId;
///
/// One or more configuration method's name and unique identifier.
///
// EFI_IFR_FORM_MAP_METHOD Methods[];
} EFI_IFR_FORM_MAP;
typedef struct _EFI_IFR_SET {
///
- /// The sequence that defines the type of opcode as well as the length
- /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.
+ /// The sequence that defines the type of opcode as well as the length
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.
///
EFI_IFR_OP_HEADER Header;
///
- /// Specifies the identifier of a previously declared variable store to
- /// use when storing the question's value.
+ /// Specifies the identifier of a previously declared variable store to
+ /// use when storing the question's value.
///
EFI_VARSTORE_ID VarStoreId;
union {
///
/// A 16-bit Buffer Storage offset.
///
EFI_STRING_ID VarName;
///
/// A Name Value or EFI Variable name (VarName).
///
UINT16 VarOffset;
} VarStoreInfo;
///
- /// Specifies the type used for storage.
+ /// Specifies the type used for storage.
///
UINT8 VarStoreType;
} EFI_IFR_SET;
typedef struct _EFI_IFR_GET {
///
- /// The sequence that defines the type of opcode as well as the length
- /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.
+ /// The sequence that defines the type of opcode as well as the length
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.
///
EFI_IFR_OP_HEADER Header;
///
- /// Specifies the identifier of a previously declared variable store to
- /// use when retrieving the value.
+ /// Specifies the identifier of a previously declared variable store to
+ /// use when retrieving the value.
///
EFI_VARSTORE_ID VarStoreId;
union {
///
/// A 16-bit Buffer Storage offset.
///
EFI_STRING_ID VarName;
///
/// A Name Value or EFI Variable name (VarName).
///
UINT16 VarOffset;
} VarStoreInfo;
///
- /// Specifies the type used for storage.
+ /// Specifies the type used for storage.
///
UINT8 VarStoreType;
} EFI_IFR_GET;
typedef struct _EFI_IFR_READ {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_READ;
typedef struct _EFI_IFR_WRITE {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_WRITE;
typedef struct _EFI_IFR_MAP {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_MAP;
//
// Definitions for Keyboard Package
// Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL
//
///
/// Each enumeration values maps a physical key on a keyboard.
///
-typedef enum {
+typedef enum {
EfiKeyLCtrl,
- EfiKeyA0,
+ EfiKeyA0,
EfiKeyLAlt,
EfiKeySpaceBar,
EfiKeyA2,
EfiKeyA3,
EfiKeyA4,
EfiKeyRCtrl,
EfiKeyLeftArrow,
EfiKeyDownArrow,
EfiKeyRightArrow,
EfiKeyZero,
EfiKeyPeriod,
EfiKeyEnter,
EfiKeyLShift,
EfiKeyB0,
EfiKeyB1,
EfiKeyB2,
EfiKeyB3,
EfiKeyB4,
EfiKeyB5,
EfiKeyB6,
EfiKeyB7,
EfiKeyB8,
EfiKeyB9,
EfiKeyB10,
EfiKeyRShift,
EfiKeyUpArrow,
EfiKeyOne,
EfiKeyTwo,
EfiKeyThree,
EfiKeyCapsLock,
EfiKeyC1,
EfiKeyC2,
EfiKeyC3,
EfiKeyC4,
EfiKeyC5,
EfiKeyC6,
EfiKeyC7,
EfiKeyC8,
EfiKeyC9,
EfiKeyC10,
EfiKeyC11,
EfiKeyC12,
EfiKeyFour,
EfiKeyFive,
EfiKeySix,
EfiKeyPlus,
EfiKeyTab,
EfiKeyD1,
EfiKeyD2,
EfiKeyD3,
EfiKeyD4,
EfiKeyD5,
EfiKeyD6,
EfiKeyD7,
EfiKeyD8,
EfiKeyD9,
EfiKeyD10,
EfiKeyD11,
EfiKeyD12,
EfiKeyD13,
EfiKeyDel,
EfiKeyEnd,
EfiKeyPgDn,
EfiKeySeven,
EfiKeyEight,
EfiKeyNine,
EfiKeyE0,
EfiKeyE1,
EfiKeyE2,
EfiKeyE3,
EfiKeyE4,
EfiKeyE5,
EfiKeyE6,
EfiKeyE7,
EfiKeyE8,
EfiKeyE9,
EfiKeyE10,
EfiKeyE11,
EfiKeyE12,
EfiKeyBackSpace,
EfiKeyIns,
EfiKeyHome,
EfiKeyPgUp,
EfiKeyNLck,
EfiKeySlash,
EfiKeyAsterisk,
EfiKeyMinus,
EfiKeyEsc,
EfiKeyF1,
EfiKeyF2,
EfiKeyF3,
EfiKeyF4,
EfiKeyF5,
EfiKeyF6,
EfiKeyF7,
EfiKeyF8,
EfiKeyF9,
EfiKeyF10,
EfiKeyF11,
EfiKeyF12,
EfiKeyPrint,
EfiKeySLck,
EfiKeyPause
} EFI_KEY;
typedef struct {
///
/// Used to describe a physical key on a keyboard.
///
EFI_KEY Key;
///
/// Unicode character code for the Key.
///
CHAR16 Unicode;
///
/// Unicode character code for the key with the shift key being held down.
///
CHAR16 ShiftedUnicode;
///
/// Unicode character code for the key with the Alt-GR being held down.
///
CHAR16 AltGrUnicode;
///
/// Unicode character code for the key with the Alt-GR and shift keys being held down.
///
CHAR16 ShiftedAltGrUnicode;
///
- /// Modifier keys are defined to allow for special functionality that is not necessarily
- /// accomplished by a printable character. Many of these modifier keys are flags to toggle
+ /// Modifier keys are defined to allow for special functionality that is not necessarily
+ /// accomplished by a printable character. Many of these modifier keys are flags to toggle
/// certain state bits on and off inside of a keyboard driver.
///
UINT16 Modifier;
UINT16 AffectedAttribute;
} EFI_KEY_DESCRIPTOR;
///
-/// A key which is affected by all the standard shift modifiers.
+/// A key which is affected by all the standard shift modifiers.
/// Most keys would be expected to have this bit active.
///
#define EFI_AFFECTED_BY_STANDARD_SHIFT 0x0001
///
/// This key is affected by the caps lock so that if a keyboard driver
/// would need to disambiguate between a key which had a "1" defined
/// versus an "a" character. Having this bit turned on would tell
/// the keyboard driver to use the appropriate shifted state or not.
///
#define EFI_AFFECTED_BY_CAPS_LOCK 0x0002
///
/// Similar to the case of CAPS lock, if this bit is active, the key
/// is affected by the num lock being turned on.
///
#define EFI_AFFECTED_BY_NUM_LOCK 0x0004
typedef struct {
UINT16 LayoutLength;
EFI_GUID Guid;
UINT32 LayoutDescriptorStringOffset;
UINT8 DescriptorCount;
// EFI_KEY_DESCRIPTOR Descriptors[];
} EFI_HII_KEYBOARD_LAYOUT;
typedef struct {
EFI_HII_PACKAGE_HEADER Header;
UINT16 LayoutCount;
// EFI_HII_KEYBOARD_LAYOUT Layout[];
} EFI_HII_KEYBOARD_PACKAGE_HDR;
//
// Modifier values
//
#define EFI_NULL_MODIFIER 0x0000
#define EFI_LEFT_CONTROL_MODIFIER 0x0001
#define EFI_RIGHT_CONTROL_MODIFIER 0x0002
#define EFI_LEFT_ALT_MODIFIER 0x0003
#define EFI_RIGHT_ALT_MODIFIER 0x0004
#define EFI_ALT_GR_MODIFIER 0x0005
#define EFI_INSERT_MODIFIER 0x0006
#define EFI_DELETE_MODIFIER 0x0007
#define EFI_PAGE_DOWN_MODIFIER 0x0008
#define EFI_PAGE_UP_MODIFIER 0x0009
#define EFI_HOME_MODIFIER 0x000A
#define EFI_END_MODIFIER 0x000B
#define EFI_LEFT_SHIFT_MODIFIER 0x000C
#define EFI_RIGHT_SHIFT_MODIFIER 0x000D
#define EFI_CAPS_LOCK_MODIFIER 0x000E
#define EFI_NUM_LOCK_MODIFIER 0x000F
#define EFI_LEFT_ARROW_MODIFIER 0x0010
#define EFI_RIGHT_ARROW_MODIFIER 0x0011
#define EFI_DOWN_ARROW_MODIFIER 0x0012
#define EFI_UP_ARROW_MODIFIER 0x0013
#define EFI_NS_KEY_MODIFIER 0x0014
#define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x0015
#define EFI_FUNCTION_KEY_ONE_MODIFIER 0x0016
#define EFI_FUNCTION_KEY_TWO_MODIFIER 0x0017
#define EFI_FUNCTION_KEY_THREE_MODIFIER 0x0018
#define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x0019
#define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A
#define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B
#define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C
#define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D
#define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E
#define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F
#define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020
#define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021
//
// Keys that have multiple control functions based on modifier
// settings are handled in the keyboard driver implementation.
// For instance, PRINT_KEY might have a modifier held down and
// is still a nonprinting character, but might have an alternate
// control function like SYSREQUEST
//
#define EFI_PRINT_MODIFIER 0x0022
#define EFI_SYS_REQUEST_MODIFIER 0x0023
#define EFI_SCROLL_LOCK_MODIFIER 0x0024
#define EFI_PAUSE_MODIFIER 0x0025
#define EFI_BREAK_MODIFIER 0x0026
#define EFI_LEFT_LOGO_MODIFIER 0x0027
#define EFI_RIGHT_LOGO_MODIFIER 0x0028
#define EFI_MENU_MODIFIER 0x0029
///
/// Animation IFR opcode
///
typedef struct _EFI_IFR_ANIMATION {
///
- /// Standard opcode header, where Header.OpCode is
+ /// Standard opcode header, where Header.OpCode is
/// EFI_IFR_ANIMATION_OP.
///
EFI_IFR_OP_HEADER Header;
///
/// Animation identifier in the HII database.
///
EFI_ANIMATION_ID Id;
} EFI_IFR_ANIMATION;
///
/// HII animation package header.
///
typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR {
///
/// Standard package header, where Header.Type = EFI_HII_PACKAGE_ANIMATIONS.
///
EFI_HII_PACKAGE_HEADER Header;
///
- /// Offset, relative to this header, of the animation information. If
+ /// Offset, relative to this header, of the animation information. If
/// this is zero, then there are no animation sequences in the package.
///
UINT32 AnimationInfoOffset;
} EFI_HII_ANIMATION_PACKAGE_HDR;
///
/// Animation information is encoded as a series of blocks,
/// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK.
///
typedef struct _EFI_HII_ANIMATION_BLOCK {
UINT8 BlockType;
//UINT8 BlockBody[];
} EFI_HII_ANIMATION_BLOCK;
///
/// Animation block types.
///
#define EFI_HII_AIBT_END 0x00
#define EFI_HII_AIBT_OVERLAY_IMAGES 0x10
#define EFI_HII_AIBT_CLEAR_IMAGES 0x11
#define EFI_HII_AIBT_RESTORE_SCRN 0x12
#define EFI_HII_AIBT_OVERLAY_IMAGES_LOOP 0x18
#define EFI_HII_AIBT_CLEAR_IMAGES_LOOP 0x19
#define EFI_HII_AIBT_RESTORE_SCRN_LOOP 0x1A
#define EFI_HII_AIBT_DUPLICATE 0x20
#define EFI_HII_AIBT_SKIP2 0x21
#define EFI_HII_AIBT_SKIP1 0x22
#define EFI_HII_AIBT_EXT1 0x30
#define EFI_HII_AIBT_EXT2 0x31
#define EFI_HII_AIBT_EXT4 0x32
///
/// Extended block headers used for variable sized animation records
/// which need an explicit length.
///
typedef struct _EFI_HII_AIBT_EXT1_BLOCK {
///
/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1.
///
EFI_HII_ANIMATION_BLOCK Header;
///
/// The block type.
///
UINT8 BlockType2;
///
/// Size of the animation block, in bytes, including the animation block header.
///
UINT8 Length;
} EFI_HII_AIBT_EXT1_BLOCK;
typedef struct _EFI_HII_AIBT_EXT2_BLOCK {
///
/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2.
///
EFI_HII_ANIMATION_BLOCK Header;
///
/// The block type
///
UINT8 BlockType2;
///
/// Size of the animation block, in bytes, including the animation block header.
///
UINT16 Length;
} EFI_HII_AIBT_EXT2_BLOCK;
typedef struct _EFI_HII_AIBT_EXT4_BLOCK {
///
/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4.
///
EFI_HII_ANIMATION_BLOCK Header;
///
/// The block type
///
UINT8 BlockType2;
///
/// Size of the animation block, in bytes, including the animation block header.
///
UINT32 Length;
} EFI_HII_AIBT_EXT4_BLOCK;
typedef struct _EFI_HII_ANIMATION_CELL {
///
- /// The X offset from the upper left hand corner of the logical
+ /// The X offset from the upper left hand corner of the logical
/// window to position the indexed image.
///
UINT16 OffsetX;
///
- /// The Y offset from the upper left hand corner of the logical
+ /// The Y offset from the upper left hand corner of the logical
/// window to position the indexed image.
///
UINT16 OffsetY;
///
- /// The image to display at the specified offset from the upper left
+ /// The image to display at the specified offset from the upper left
/// hand corner of the logical window.
///
EFI_IMAGE_ID ImageId;
///
- /// The number of milliseconds to delay after displaying the indexed
- /// image and before continuing on to the next linked image. If value
+ /// The number of milliseconds to delay after displaying the indexed
+ /// image and before continuing on to the next linked image. If value
/// is zero, no delay.
///
UINT16 Delay;
} EFI_HII_ANIMATION_CELL;
///
/// An animation block to describe an animation sequence that does not cycle, and
/// where one image is simply displayed over the previous image.
///
typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK {
///
- /// This is image that is to be reference by the image protocols, if the
- /// animation function is not supported or disabled. This image can
- /// be one particular image from the animation sequence (if any one
- /// of the animation frames has a complete image) or an alternate
- /// image that can be displayed alone. If the value is zero, no image
+ /// This is image that is to be reference by the image protocols, if the
+ /// animation function is not supported or disabled. This image can
+ /// be one particular image from the animation sequence (if any one
+ /// of the animation frames has a complete image) or an alternate
+ /// image that can be displayed alone. If the value is zero, no image
/// is displayed.
///
EFI_IMAGE_ID DftImageId;
///
/// The overall width of the set of images (logical window width).
///
UINT16 Width;
///
/// The overall height of the set of images (logical window height).
///
UINT16 Height;
///
- /// The number of EFI_HII_ANIMATION_CELL contained in the
+ /// The number of EFI_HII_ANIMATION_CELL contained in the
/// animation sequence.
///
UINT16 CellCount;
///
/// An array of CellCount animation cells.
///
EFI_HII_ANIMATION_CELL AnimationCell[1];
} EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK;
///
/// An animation block to describe an animation sequence that does not cycle,
-/// and where the logical window is cleared to the specified color before
+/// and where the logical window is cleared to the specified color before
/// the next image is displayed.
///
typedef struct _EFI_HII_AIBT_CLEAR_IMAGES_BLOCK {
///
- /// This is image that is to be reference by the image protocols, if the
- /// animation function is not supported or disabled. This image can
- /// be one particular image from the animation sequence (if any one
- /// of the animation frames has a complete image) or an alternate
- /// image that can be displayed alone. If the value is zero, no image
+ /// This is image that is to be reference by the image protocols, if the
+ /// animation function is not supported or disabled. This image can
+ /// be one particular image from the animation sequence (if any one
+ /// of the animation frames has a complete image) or an alternate
+ /// image that can be displayed alone. If the value is zero, no image
/// is displayed.
///
EFI_IMAGE_ID DftImageId;
///
/// The overall width of the set of images (logical window width).
///
UINT16 Width;
///
/// The overall height of the set of images (logical window height).
///
UINT16 Height;
///
- /// The number of EFI_HII_ANIMATION_CELL contained in the
+ /// The number of EFI_HII_ANIMATION_CELL contained in the
/// animation sequence.
///
UINT16 CellCount;
///
- /// The color to clear the logical window to before displaying the
+ /// The color to clear the logical window to before displaying the
/// indexed image.
///
EFI_HII_RGB_PIXEL BackgndColor;
///
/// An array of CellCount animation cells.
///
EFI_HII_ANIMATION_CELL AnimationCell[1];
} EFI_HII_AIBT_CLEAR_IMAGES_BLOCK;
///
/// An animation block to describe an animation sequence that does not cycle,
-/// and where the screen is restored to the original state before the next
+/// and where the screen is restored to the original state before the next
/// image is displayed.
///
typedef struct _EFI_HII_AIBT_RESTORE_SCRN_BLOCK {
///
- /// This is image that is to be reference by the image protocols, if the
- /// animation function is not supported or disabled. This image can
- /// be one particular image from the animation sequence (if any one
- /// of the animation frames has a complete image) or an alternate
- /// image that can be displayed alone. If the value is zero, no image
+ /// This is image that is to be reference by the image protocols, if the
+ /// animation function is not supported or disabled. This image can
+ /// be one particular image from the animation sequence (if any one
+ /// of the animation frames has a complete image) or an alternate
+ /// image that can be displayed alone. If the value is zero, no image
/// is displayed.
///
EFI_IMAGE_ID DftImageId;
///
/// The overall width of the set of images (logical window width).
///
UINT16 Width;
///
/// The overall height of the set of images (logical window height).
///
UINT16 Height;
///
- /// The number of EFI_HII_ANIMATION_CELL contained in the
+ /// The number of EFI_HII_ANIMATION_CELL contained in the
/// animation sequence.
///
UINT16 CellCount;
///
/// An array of CellCount animation cells.
///
EFI_HII_ANIMATION_CELL AnimationCell[1];
} EFI_HII_AIBT_RESTORE_SCRN_BLOCK;
///
/// An animation block to describe an animation sequence that continuously cycles,
/// and where one image is simply displayed over the previous image.
///
typedef EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK EFI_HII_AIBT_OVERLAY_IMAGES_LOOP_BLOCK;
///
/// An animation block to describe an animation sequence that continuously cycles,
-/// and where the logical window is cleared to the specified color before
+/// and where the logical window is cleared to the specified color before
/// the next image is displayed.
///
typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK;
///
/// An animation block to describe an animation sequence that continuously cycles,
-/// and where the screen is restored to the original state before
+/// and where the screen is restored to the original state before
/// the next image is displayed.
///
typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK;
///
/// Assigns a new character value to a previously defined animation sequence.
///
typedef struct _EFI_HII_AIBT_DUPLICATE_BLOCK {
///
- /// The previously defined animation ID with the exact same
+ /// The previously defined animation ID with the exact same
/// animation information.
///
EFI_ANIMATION_ID AnimationId;
} EFI_HII_AIBT_DUPLICATE_BLOCK;
///
/// Skips animation IDs.
///
typedef struct _EFI_HII_AIBT_SKIP1_BLOCK {
///
/// The unsigned 8-bit value to add to AnimationIdCurrent.
///
UINT8 SkipCount;
} EFI_HII_AIBT_SKIP1_BLOCK;
///
/// Skips animation IDs.
///
typedef struct _EFI_HII_AIBT_SKIP2_BLOCK {
///
/// The unsigned 16-bit value to add to AnimationIdCurrent.
///
UINT16 SkipCount;
} EFI_HII_AIBT_SKIP2_BLOCK;
#pragma pack()
///
/// References to string tokens must use this macro to enable scanning for
/// token usages.
///
///
-/// STRING_TOKEN is not defined in UEFI specification. But it is placed
+/// STRING_TOKEN is not defined in UEFI specification. But it is placed
/// here for the easy access by C files and VFR source files.
///
#define STRING_TOKEN(t) t
///
/// IMAGE_TOKEN is not defined in UEFI specification. But it is placed
/// here for the easy access by C files and VFR source files.
///
#define IMAGE_TOKEN(t) t
#endif
Property changes on: head/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r233621
Merged /projects/pf/head/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r263908
Merged /projects/fuse2/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r344558-350621,350944,350955
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r289470-289489
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r298865-299093
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r301868
Merged /projects/bectl/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r336666-337662
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r230929-231848
Merged /projects/quota64/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r184125-207707
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r286179-290100
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r303985-305318
Merged /projects/release-embedded/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/release-pkg/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r274131-298104
Merged /projects/largeSMP/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r221273-222812,222815-223757
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r295193
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r266519,269993
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/openssl111/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r339079
Merged /projects/clang600-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r351317-353352
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r312125-313435
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r262185-262527
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r262258-262612
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r291227-291228,292618
Merged /projects/clang350-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r287506-288928
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r303380
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r260687-261245
Merged /projects/clang380-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r309166-310192
Merged /projects/ipfw/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r267383-272837
Merged /projects/collation/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r286424-290491
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r291879-295379
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-arm64/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r281786,281788,281792
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r295220
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h:r361765
Index: head/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h
===================================================================
--- head/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h (revision 361802)
@@ -1,231 +1,229 @@
/** @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.
-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.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
-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__
+///
+/// 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_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020
+#define EFI_VARIABLE_APPEND_WRITE 0x00000040
+///
+/// NOTE: EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS is deprecated and should be considered reserved.
+///
+#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
+
+#ifndef VFRCOMPILE
#include
///
/// 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,
+ /// 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 // VFRCOMPILE
#endif
Property changes on: head/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/ipfw/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r267383-272837
Merged /projects/collation/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r286424-290491
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r301868
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/quota64/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r184125-207707
Merged /projects/release-arm64/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r281786,281788,281792
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r295220
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r286179-290100
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r276164,276167,276170-276172
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r289470-289489
Merged /vendor/edk2/dist/MdePkg/Include/Uefi/UefiMultiPhase.h:r361765
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r298865-299093
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r233621
Merged /projects/release-pkg/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r274131-298104
Merged /projects/fuse2/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r344558-350621,350944,350955
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r303985-305318
Merged /projects/clang600-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r316992-321352
Merged /projects/clang400-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r311132-314524
Merged /projects/clang700-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r336870-341824
Merged /projects/clang800-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r343202-344778
Merged /projects/clang900-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r351317-353352
Merged /projects/bectl/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r336666-337662
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r230929-231848
Merged /projects/clang350-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r285199-285661
Merged /projects/clang390-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r309166-310192
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r295193
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r291879-295379
Merged /projects/openssl111/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r339079
Merged /projects/release-embedded/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/largeSMP/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r221273-222812,222815-223757
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r266519,269993
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r303380
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r312125-313435
Merged /projects/pf/head/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r263908
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r262185-262527
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r262258-262612
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r291227-291228,292618
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Uefi/UefiMultiPhase.h:r260687-261245
Index: head/sys/contrib/edk2/Include/Uefi/UefiPxe.h
===================================================================
--- head/sys/contrib/edk2/Include/Uefi/UefiPxe.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Uefi/UefiPxe.h (revision 361802)
@@ -1,1792 +1,1786 @@
/** @file
This header file contains all of the PXE type definitions,
structure prototypes, global variables and constants that
are needed for porting PXE to EFI.
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-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.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
@par Revision Reference:
32/64-bit PXE specification:
alpha-4, 99-Dec-17.
**/
#ifndef __EFI_PXE_H__
#define __EFI_PXE_H__
#pragma pack(1)
#define PXE_BUSTYPE(a, b, c, d) \
( \
(((PXE_UINT32) (d) & 0xFF) << 24) | (((PXE_UINT32) (c) & 0xFF) << 16) | (((PXE_UINT32) (b) & 0xFF) << 8) | \
((PXE_UINT32) (a) & 0xFF) \
)
///
/// UNDI ROM ID and devive ID signature.
///
#define PXE_BUSTYPE_PXE PXE_BUSTYPE ('!', 'P', 'X', 'E')
///
/// BUS ROM ID signatures.
///
#define PXE_BUSTYPE_PCI PXE_BUSTYPE ('P', 'C', 'I', 'R')
#define PXE_BUSTYPE_PC_CARD PXE_BUSTYPE ('P', 'C', 'C', 'R')
#define PXE_BUSTYPE_USB PXE_BUSTYPE ('U', 'S', 'B', 'R')
#define PXE_BUSTYPE_1394 PXE_BUSTYPE ('1', '3', '9', '4')
#define PXE_SWAP_UINT16(n) ((((PXE_UINT16) (n) & 0x00FF) << 8) | (((PXE_UINT16) (n) & 0xFF00) >> 8))
#define PXE_SWAP_UINT32(n) \
((((PXE_UINT32)(n) & 0x000000FF) << 24) | \
(((PXE_UINT32)(n) & 0x0000FF00) << 8) | \
(((PXE_UINT32)(n) & 0x00FF0000) >> 8) | \
(((PXE_UINT32)(n) & 0xFF000000) >> 24))
#define PXE_SWAP_UINT64(n) \
((((PXE_UINT64)(n) & 0x00000000000000FFULL) << 56) | \
(((PXE_UINT64)(n) & 0x000000000000FF00ULL) << 40) | \
(((PXE_UINT64)(n) & 0x0000000000FF0000ULL) << 24) | \
(((PXE_UINT64)(n) & 0x00000000FF000000ULL) << 8) | \
(((PXE_UINT64)(n) & 0x000000FF00000000ULL) >> 8) | \
(((PXE_UINT64)(n) & 0x0000FF0000000000ULL) >> 24) | \
(((PXE_UINT64)(n) & 0x00FF000000000000ULL) >> 40) | \
(((PXE_UINT64)(n) & 0xFF00000000000000ULL) >> 56))
#define PXE_CPBSIZE_NOT_USED 0 ///< zero
#define PXE_DBSIZE_NOT_USED 0 ///< zero
#define PXE_CPBADDR_NOT_USED (PXE_UINT64) 0 ///< zero
#define PXE_DBADDR_NOT_USED (PXE_UINT64) 0 ///< zero
#define PXE_CONST CONST
#define PXE_VOLATILE volatile
typedef VOID PXE_VOID;
typedef UINT8 PXE_UINT8;
typedef UINT16 PXE_UINT16;
typedef UINT32 PXE_UINT32;
typedef UINTN PXE_UINTN;
///
/// Typedef unsigned long PXE_UINT64.
///
typedef UINT64 PXE_UINT64;
typedef PXE_UINT8 PXE_BOOL;
#define PXE_FALSE 0 ///< zero
#define PXE_TRUE (!PXE_FALSE)
typedef PXE_UINT16 PXE_OPCODE;
///
/// Return UNDI operational state.
///
#define PXE_OPCODE_GET_STATE 0x0000
///
/// Change UNDI operational state from Stopped to Started.
///
#define PXE_OPCODE_START 0x0001
///
/// Change UNDI operational state from Started to Stopped.
///
#define PXE_OPCODE_STOP 0x0002
///
/// Get UNDI initialization information.
///
#define PXE_OPCODE_GET_INIT_INFO 0x0003
///
/// Get NIC configuration information.
///
#define PXE_OPCODE_GET_CONFIG_INFO 0x0004
///
/// Changed UNDI operational state from Started to Initialized.
///
#define PXE_OPCODE_INITIALIZE 0x0005
///
/// Re-initialize the NIC H/W.
///
#define PXE_OPCODE_RESET 0x0006
///
/// Change the UNDI operational state from Initialized to Started.
///
#define PXE_OPCODE_SHUTDOWN 0x0007
///
/// Read & change state of external interrupt enables.
///
#define PXE_OPCODE_INTERRUPT_ENABLES 0x0008
///
/// Read & change state of packet receive filters.
///
#define PXE_OPCODE_RECEIVE_FILTERS 0x0009
///
/// Read & change station MAC address.
///
#define PXE_OPCODE_STATION_ADDRESS 0x000A
///
/// Read traffic statistics.
///
#define PXE_OPCODE_STATISTICS 0x000B
///
/// Convert multicast IP address to multicast MAC address.
///
#define PXE_OPCODE_MCAST_IP_TO_MAC 0x000C
///
/// Read or change non-volatile storage on the NIC.
///
#define PXE_OPCODE_NVDATA 0x000D
///
/// Get & clear interrupt status.
///
#define PXE_OPCODE_GET_STATUS 0x000E
///
/// Fill media header in packet for transmit.
///
#define PXE_OPCODE_FILL_HEADER 0x000F
///
/// Transmit packet(s).
///
#define PXE_OPCODE_TRANSMIT 0x0010
///
/// Receive packet.
///
#define PXE_OPCODE_RECEIVE 0x0011
///
/// Last valid PXE UNDI OpCode number.
///
#define PXE_OPCODE_LAST_VALID 0x0011
typedef PXE_UINT16 PXE_OPFLAGS;
#define PXE_OPFLAGS_NOT_USED 0x0000
//
// //////////////////////////////////////
// UNDI Get State
//
// No OpFlags
////////////////////////////////////////
// UNDI Start
//
// No OpFlags
////////////////////////////////////////
// UNDI Stop
//
// No OpFlags
////////////////////////////////////////
// UNDI Get Init Info
//
// No Opflags
////////////////////////////////////////
// UNDI Get Config Info
//
// No Opflags
///
/// UNDI Initialize
///
#define PXE_OPFLAGS_INITIALIZE_CABLE_DETECT_MASK 0x0001
#define PXE_OPFLAGS_INITIALIZE_DETECT_CABLE 0x0000
#define PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE 0x0001
///
///
/// UNDI Reset
///
#define PXE_OPFLAGS_RESET_DISABLE_INTERRUPTS 0x0001
#define PXE_OPFLAGS_RESET_DISABLE_FILTERS 0x0002
///
/// UNDI Shutdown.
///
/// No OpFlags.
///
/// UNDI Interrupt Enables.
///
///
/// Select whether to enable or disable external interrupt signals.
/// Setting both enable and disable will return PXE_STATCODE_INVALID_OPFLAGS.
///
#define PXE_OPFLAGS_INTERRUPT_OPMASK 0xC000
#define PXE_OPFLAGS_INTERRUPT_ENABLE 0x8000
#define PXE_OPFLAGS_INTERRUPT_DISABLE 0x4000
#define PXE_OPFLAGS_INTERRUPT_READ 0x0000
///
/// Enable receive interrupts. An external interrupt will be generated
/// after a complete non-error packet has been received.
///
#define PXE_OPFLAGS_INTERRUPT_RECEIVE 0x0001
///
/// Enable transmit interrupts. An external interrupt will be generated
/// after a complete non-error packet has been transmitted.
///
#define PXE_OPFLAGS_INTERRUPT_TRANSMIT 0x0002
///
/// Enable command interrupts. An external interrupt will be generated
/// when command execution stops.
///
#define PXE_OPFLAGS_INTERRUPT_COMMAND 0x0004
///
/// Generate software interrupt. Setting this bit generates an external
/// interrupt, if it is supported by the hardware.
///
#define PXE_OPFLAGS_INTERRUPT_SOFTWARE 0x0008
///
/// UNDI Receive Filters.
///
///
/// Select whether to enable or disable receive filters.
/// Setting both enable and disable will return PXE_STATCODE_INVALID_OPCODE.
///
#define PXE_OPFLAGS_RECEIVE_FILTER_OPMASK 0xC000
#define PXE_OPFLAGS_RECEIVE_FILTER_ENABLE 0x8000
#define PXE_OPFLAGS_RECEIVE_FILTER_DISABLE 0x4000
#define PXE_OPFLAGS_RECEIVE_FILTER_READ 0x0000
///
/// To reset the contents of the multicast MAC address filter list,
/// set this OpFlag:
///
#define PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST 0x2000
///
/// Enable unicast packet receiving. Packets sent to the current station
/// MAC address will be received.
///
#define PXE_OPFLAGS_RECEIVE_FILTER_UNICAST 0x0001
///
/// Enable broadcast packet receiving. Packets sent to the broadcast
/// MAC address will be received.
///
#define PXE_OPFLAGS_RECEIVE_FILTER_BROADCAST 0x0002
///
/// Enable filtered multicast packet receiving. Packets sent to any
/// of the multicast MAC addresses in the multicast MAC address filter
/// list will be received. If the filter list is empty, no multicast
///
#define PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004
///
/// Enable promiscuous packet receiving. All packets will be received.
///
#define PXE_OPFLAGS_RECEIVE_FILTER_PROMISCUOUS 0x0008
///
/// Enable promiscuous multicast packet receiving. All multicast
/// packets will be received.
///
#define PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST 0x0010
///
/// UNDI Station Address.
///
#define PXE_OPFLAGS_STATION_ADDRESS_READ 0x0000
#define PXE_OPFLAGS_STATION_ADDRESS_WRITE 0x0000
#define PXE_OPFLAGS_STATION_ADDRESS_RESET 0x0001
///
/// UNDI Statistics.
///
#define PXE_OPFLAGS_STATISTICS_READ 0x0000
#define PXE_OPFLAGS_STATISTICS_RESET 0x0001
///
/// UNDI MCast IP to MAC.
///
///
/// Identify the type of IP address in the CPB.
///
#define PXE_OPFLAGS_MCAST_IP_TO_MAC_OPMASK 0x0003
#define PXE_OPFLAGS_MCAST_IPV4_TO_MAC 0x0000
#define PXE_OPFLAGS_MCAST_IPV6_TO_MAC 0x0001
///
/// UNDI NvData.
///
///
/// Select the type of non-volatile data operation.
///
#define PXE_OPFLAGS_NVDATA_OPMASK 0x0001
#define PXE_OPFLAGS_NVDATA_READ 0x0000
#define PXE_OPFLAGS_NVDATA_WRITE 0x0001
///
/// UNDI Get Status.
///
///
/// Return current interrupt status. This will also clear any interrupts
/// that are currently set. This can be used in a polling routine. The
/// interrupt flags are still set and cleared even when the interrupts
/// are disabled.
///
#define PXE_OPFLAGS_GET_INTERRUPT_STATUS 0x0001
///
/// Return list of transmitted buffers for recycling. Transmit buffers
/// must not be changed or unallocated until they have recycled. After
/// issuing a transmit command, wait for a transmit complete interrupt.
/// When a transmit complete interrupt is received, read the transmitted
/// buffers. Do not plan on getting one buffer per interrupt. Some
/// NICs and UNDIs may transmit multiple buffers per interrupt.
///
#define PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS 0x0002
///
/// Return current media status.
///
#define PXE_OPFLAGS_GET_MEDIA_STATUS 0x0004
///
/// UNDI Fill Header.
///
#define PXE_OPFLAGS_FILL_HEADER_OPMASK 0x0001
#define PXE_OPFLAGS_FILL_HEADER_FRAGMENTED 0x0001
#define PXE_OPFLAGS_FILL_HEADER_WHOLE 0x0000
///
/// UNDI Transmit.
///
///
/// S/W UNDI only. Return after the packet has been transmitted. A
/// transmit complete interrupt will still be generated and the transmit
/// buffer will have to be recycled.
///
#define PXE_OPFLAGS_SWUNDI_TRANSMIT_OPMASK 0x0001
#define PXE_OPFLAGS_TRANSMIT_BLOCK 0x0001
#define PXE_OPFLAGS_TRANSMIT_DONT_BLOCK 0x0000
#define PXE_OPFLAGS_TRANSMIT_OPMASK 0x0002
#define PXE_OPFLAGS_TRANSMIT_FRAGMENTED 0x0002
#define PXE_OPFLAGS_TRANSMIT_WHOLE 0x0000
///
/// UNDI Receive.
///
/// No OpFlags.
///
///
/// PXE STATFLAGS.
///
typedef PXE_UINT16 PXE_STATFLAGS;
#define PXE_STATFLAGS_INITIALIZE 0x0000
///
/// Common StatFlags that can be returned by all commands.
///
///
/// The COMMAND_COMPLETE and COMMAND_FAILED status flags must be
/// implemented by all UNDIs. COMMAND_QUEUED is only needed by UNDIs
/// that support command queuing.
///
#define PXE_STATFLAGS_STATUS_MASK 0xC000
#define PXE_STATFLAGS_COMMAND_COMPLETE 0xC000
#define PXE_STATFLAGS_COMMAND_FAILED 0x8000
#define PXE_STATFLAGS_COMMAND_QUEUED 0x4000
///
/// UNDI Get State.
///
#define PXE_STATFLAGS_GET_STATE_MASK 0x0003
#define PXE_STATFLAGS_GET_STATE_INITIALIZED 0x0002
#define PXE_STATFLAGS_GET_STATE_STARTED 0x0001
#define PXE_STATFLAGS_GET_STATE_STOPPED 0x0000
///
/// UNDI Start.
///
/// No additional StatFlags.
///
///
/// UNDI Get Init Info.
///
#define PXE_STATFLAGS_CABLE_DETECT_MASK 0x0001
#define PXE_STATFLAGS_CABLE_DETECT_NOT_SUPPORTED 0x0000
#define PXE_STATFLAGS_CABLE_DETECT_SUPPORTED 0x0001
#define PXE_STATFLAGS_GET_STATUS_NO_MEDIA_MASK 0x0002
#define PXE_STATFLAGS_GET_STATUS_NO_MEDIA_NOT_SUPPORTED 0x0000
#define PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED 0x0002
///
/// UNDI Initialize.
///
#define PXE_STATFLAGS_INITIALIZED_NO_MEDIA 0x0001
///
/// UNDI Reset.
///
#define PXE_STATFLAGS_RESET_NO_MEDIA 0x0001
///
/// UNDI Shutdown.
///
/// No additional StatFlags.
///
/// UNDI Interrupt Enables.
///
///
/// If set, receive interrupts are enabled.
///
#define PXE_STATFLAGS_INTERRUPT_RECEIVE 0x0001
///
/// If set, transmit interrupts are enabled.
///
#define PXE_STATFLAGS_INTERRUPT_TRANSMIT 0x0002
///
/// If set, command interrupts are enabled.
///
#define PXE_STATFLAGS_INTERRUPT_COMMAND 0x0004
///
/// UNDI Receive Filters.
///
///
/// If set, unicast packets will be received.
///
#define PXE_STATFLAGS_RECEIVE_FILTER_UNICAST 0x0001
///
/// If set, broadcast packets will be received.
///
#define PXE_STATFLAGS_RECEIVE_FILTER_BROADCAST 0x0002
///
/// If set, multicast packets that match up with the multicast address
/// filter list will be received.
///
#define PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004
///
/// If set, all packets will be received.
///
#define PXE_STATFLAGS_RECEIVE_FILTER_PROMISCUOUS 0x0008
///
/// If set, all multicast packets will be received.
///
#define PXE_STATFLAGS_RECEIVE_FILTER_ALL_MULTICAST 0x0010
///
/// UNDI Station Address.
///
/// No additional StatFlags.
///
///
/// UNDI Statistics.
///
/// No additional StatFlags.
///
///
//// UNDI MCast IP to MAC.
////
//// No additional StatFlags.
///
/// UNDI NvData.
///
/// No additional StatFlags.
///
///
/// UNDI Get Status.
///
///
/// Use to determine if an interrupt has occurred.
///
#define PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK 0x000F
#define PXE_STATFLAGS_GET_STATUS_NO_INTERRUPTS 0x0000
///
/// If set, at least one receive interrupt occurred.
///
#define PXE_STATFLAGS_GET_STATUS_RECEIVE 0x0001
///
/// If set, at least one transmit interrupt occurred.
///
#define PXE_STATFLAGS_GET_STATUS_TRANSMIT 0x0002
///
/// If set, at least one command interrupt occurred.
///
#define PXE_STATFLAGS_GET_STATUS_COMMAND 0x0004
///
/// If set, at least one software interrupt occurred.
///
#define PXE_STATFLAGS_GET_STATUS_SOFTWARE 0x0008
///
/// This flag is set if the transmitted buffer queue is empty. This flag
/// will be set if all transmitted buffer addresses get written into the DB.
///
#define PXE_STATFLAGS_GET_STATUS_TXBUF_QUEUE_EMPTY 0x0010
///
/// This flag is set if no transmitted buffer addresses were written
/// into the DB. (This could be because DBsize was too small.)
///
#define PXE_STATFLAGS_GET_STATUS_NO_TXBUFS_WRITTEN 0x0020
///
/// This flag is set if there is no media detected.
///
#define PXE_STATFLAGS_GET_STATUS_NO_MEDIA 0x0040
///
/// UNDI Fill Header.
///
/// No additional StatFlags.
///
///
/// UNDI Transmit.
///
/// No additional StatFlags.
///
/// UNDI Receive
///.
///
/// No additional StatFlags.
///
typedef PXE_UINT16 PXE_STATCODE;
#define PXE_STATCODE_INITIALIZE 0x0000
///
/// Common StatCodes returned by all UNDI commands, UNDI protocol functions
/// and BC protocol functions.
///
#define PXE_STATCODE_SUCCESS 0x0000
#define PXE_STATCODE_INVALID_CDB 0x0001
#define PXE_STATCODE_INVALID_CPB 0x0002
#define PXE_STATCODE_BUSY 0x0003
#define PXE_STATCODE_QUEUE_FULL 0x0004
#define PXE_STATCODE_ALREADY_STARTED 0x0005
#define PXE_STATCODE_NOT_STARTED 0x0006
#define PXE_STATCODE_NOT_SHUTDOWN 0x0007
#define PXE_STATCODE_ALREADY_INITIALIZED 0x0008
#define PXE_STATCODE_NOT_INITIALIZED 0x0009
#define PXE_STATCODE_DEVICE_FAILURE 0x000A
#define PXE_STATCODE_NVDATA_FAILURE 0x000B
#define PXE_STATCODE_UNSUPPORTED 0x000C
#define PXE_STATCODE_BUFFER_FULL 0x000D
#define PXE_STATCODE_INVALID_PARAMETER 0x000E
#define PXE_STATCODE_INVALID_UNDI 0x000F
#define PXE_STATCODE_IPV4_NOT_SUPPORTED 0x0010
#define PXE_STATCODE_IPV6_NOT_SUPPORTED 0x0011
#define PXE_STATCODE_NOT_ENOUGH_MEMORY 0x0012
#define PXE_STATCODE_NO_DATA 0x0013
typedef PXE_UINT16 PXE_IFNUM;
///
/// This interface number must be passed to the S/W UNDI Start command.
///
#define PXE_IFNUM_START 0x0000
///
/// This interface number is returned by the S/W UNDI Get State and
/// Start commands if information in the CDB, CPB or DB is invalid.
///
#define PXE_IFNUM_INVALID 0x0000
typedef PXE_UINT16 PXE_CONTROL;
///
/// Setting this flag directs the UNDI to queue this command for later
/// execution if the UNDI is busy and it supports command queuing.
/// If queuing is not supported, a PXE_STATCODE_INVALID_CONTROL error
/// is returned. If the queue is full, a PXE_STATCODE_CDB_QUEUE_FULL
/// error is returned.
///
#define PXE_CONTROL_QUEUE_IF_BUSY 0x0002
///
/// These two bit values are used to determine if there are more UNDI
/// CDB structures following this one. If the link bit is set, there
/// must be a CDB structure following this one. Execution will start
/// on the next CDB structure as soon as this one completes successfully.
/// If an error is generated by this command, execution will stop.
///
#define PXE_CONTROL_LINK 0x0001
#define PXE_CONTROL_LAST_CDB_IN_LIST 0x0000
typedef PXE_UINT8 PXE_FRAME_TYPE;
#define PXE_FRAME_TYPE_NONE 0x00
#define PXE_FRAME_TYPE_UNICAST 0x01
#define PXE_FRAME_TYPE_BROADCAST 0x02
#define PXE_FRAME_TYPE_FILTERED_MULTICAST 0x03
#define PXE_FRAME_TYPE_PROMISCUOUS 0x04
#define PXE_FRAME_TYPE_PROMISCUOUS_MULTICAST 0x05
#define PXE_FRAME_TYPE_MULTICAST PXE_FRAME_TYPE_FILTERED_MULTICAST
typedef PXE_UINT32 PXE_IPV4;
typedef PXE_UINT32 PXE_IPV6[4];
#define PXE_MAC_LENGTH 32
typedef PXE_UINT8 PXE_MAC_ADDR[PXE_MAC_LENGTH];
typedef PXE_UINT8 PXE_IFTYPE;
typedef UINT16 PXE_MEDIA_PROTOCOL;
///
/// This information is from the ARP section of RFC 1700.
///
/// 1 Ethernet (10Mb) [JBP]
/// 2 Experimental Ethernet (3Mb) [JBP]
/// 3 Amateur Radio AX.25 [PXK]
/// 4 Proteon ProNET Token Ring [JBP]
/// 5 Chaos [GXP]
/// 6 IEEE 802 Networks [JBP]
/// 7 ARCNET [JBP]
/// 8 Hyperchannel [JBP]
/// 9 Lanstar [TU]
/// 10 Autonet Short Address [MXB1]
/// 11 LocalTalk [JKR1]
/// 12 LocalNet (IBM* PCNet or SYTEK* LocalNET) [JXM]
/// 13 Ultra link [RXD2]
/// 14 SMDS [GXC1]
/// 15 Frame Relay [AGM]
/// 16 Asynchronous Transmission Mode (ATM) [JXB2]
/// 17 HDLC [JBP]
/// 18 Fibre Channel [Yakov Rekhter]
/// 19 Asynchronous Transmission Mode (ATM) [Mark Laubach]
/// 20 Serial Line [JBP]
/// 21 Asynchronous Transmission Mode (ATM) [MXB1]
///
/// * Other names and brands may be claimed as the property of others.
///
#define PXE_IFTYPE_ETHERNET 0x01
#define PXE_IFTYPE_TOKENRING 0x04
#define PXE_IFTYPE_FIBRE_CHANNEL 0x12
typedef struct s_pxe_hw_undi {
PXE_UINT32 Signature; ///< PXE_ROMID_SIGNATURE.
PXE_UINT8 Len; ///< sizeof(PXE_HW_UNDI).
PXE_UINT8 Fudge; ///< makes 8-bit cksum equal zero.
PXE_UINT8 Rev; ///< PXE_ROMID_REV.
PXE_UINT8 IFcnt; ///< physical connector count lower byte.
PXE_UINT8 MajorVer; ///< PXE_ROMID_MAJORVER.
PXE_UINT8 MinorVer; ///< PXE_ROMID_MINORVER.
PXE_UINT8 IFcntExt; ///< physical connector count upper byte.
PXE_UINT8 reserved; ///< zero, not used.
PXE_UINT32 Implementation; ///< implementation flags.
///< reserved ///< vendor use.
///< UINT32 Status; ///< status port.
///< UINT32 Command; ///< command port.
///< UINT64 CDBaddr; ///< CDB address port.
///<
} PXE_HW_UNDI;
///
/// Status port bit definitions.
///
///
/// UNDI operation state.
///
#define PXE_HWSTAT_STATE_MASK 0xC0000000
#define PXE_HWSTAT_BUSY 0xC0000000
#define PXE_HWSTAT_INITIALIZED 0x80000000
#define PXE_HWSTAT_STARTED 0x40000000
#define PXE_HWSTAT_STOPPED 0x00000000
///
/// If set, last command failed.
///
#define PXE_HWSTAT_COMMAND_FAILED 0x20000000
///
/// If set, identifies enabled receive filters.
///
#define PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED 0x00001000
#define PXE_HWSTAT_PROMISCUOUS_RX_ENABLED 0x00000800
#define PXE_HWSTAT_BROADCAST_RX_ENABLED 0x00000400
#define PXE_HWSTAT_MULTICAST_RX_ENABLED 0x00000200
#define PXE_HWSTAT_UNICAST_RX_ENABLED 0x00000100
///
/// If set, identifies enabled external interrupts.
///
#define PXE_HWSTAT_SOFTWARE_INT_ENABLED 0x00000080
#define PXE_HWSTAT_TX_COMPLETE_INT_ENABLED 0x00000040
#define PXE_HWSTAT_PACKET_RX_INT_ENABLED 0x00000020
#define PXE_HWSTAT_CMD_COMPLETE_INT_ENABLED 0x00000010
///
/// If set, identifies pending interrupts.
///
#define PXE_HWSTAT_SOFTWARE_INT_PENDING 0x00000008
#define PXE_HWSTAT_TX_COMPLETE_INT_PENDING 0x00000004
#define PXE_HWSTAT_PACKET_RX_INT_PENDING 0x00000002
#define PXE_HWSTAT_CMD_COMPLETE_INT_PENDING 0x00000001
///
/// Command port definitions.
///
///
/// If set, CDB identified in CDBaddr port is given to UNDI.
/// If not set, other bits in this word will be processed.
///
#define PXE_HWCMD_ISSUE_COMMAND 0x80000000
#define PXE_HWCMD_INTS_AND_FILTS 0x00000000
///
/// Use these to enable/disable receive filters.
///
#define PXE_HWCMD_PROMISCUOUS_MULTICAST_RX_ENABLE 0x00001000
#define PXE_HWCMD_PROMISCUOUS_RX_ENABLE 0x00000800
#define PXE_HWCMD_BROADCAST_RX_ENABLE 0x00000400
#define PXE_HWCMD_MULTICAST_RX_ENABLE 0x00000200
#define PXE_HWCMD_UNICAST_RX_ENABLE 0x00000100
///
/// Use these to enable/disable external interrupts.
///
#define PXE_HWCMD_SOFTWARE_INT_ENABLE 0x00000080
#define PXE_HWCMD_TX_COMPLETE_INT_ENABLE 0x00000040
#define PXE_HWCMD_PACKET_RX_INT_ENABLE 0x00000020
#define PXE_HWCMD_CMD_COMPLETE_INT_ENABLE 0x00000010
///
/// Use these to clear pending external interrupts.
///
#define PXE_HWCMD_CLEAR_SOFTWARE_INT 0x00000008
#define PXE_HWCMD_CLEAR_TX_COMPLETE_INT 0x00000004
#define PXE_HWCMD_CLEAR_PACKET_RX_INT 0x00000002
#define PXE_HWCMD_CLEAR_CMD_COMPLETE_INT 0x00000001
typedef struct s_pxe_sw_undi {
PXE_UINT32 Signature; ///< PXE_ROMID_SIGNATURE.
PXE_UINT8 Len; ///< sizeof(PXE_SW_UNDI).
PXE_UINT8 Fudge; ///< makes 8-bit cksum zero.
PXE_UINT8 Rev; ///< PXE_ROMID_REV.
PXE_UINT8 IFcnt; ///< physical connector count lower byte.
PXE_UINT8 MajorVer; ///< PXE_ROMID_MAJORVER.
PXE_UINT8 MinorVer; ///< PXE_ROMID_MINORVER.
PXE_UINT8 IFcntExt; ///< physical connector count upper byte.
PXE_UINT8 reserved1; ///< zero, not used.
PXE_UINT32 Implementation; ///< Implementation flags.
PXE_UINT64 EntryPoint; ///< API entry point.
PXE_UINT8 reserved2[3]; ///< zero, not used.
PXE_UINT8 BusCnt; ///< number of bustypes supported.
PXE_UINT32 BusType[1]; ///< list of supported bustypes.
} PXE_SW_UNDI;
typedef union u_pxe_undi {
PXE_HW_UNDI hw;
PXE_SW_UNDI sw;
} PXE_UNDI;
///
/// Signature of !PXE structure.
///
#define PXE_ROMID_SIGNATURE PXE_BUSTYPE ('!', 'P', 'X', 'E')
///
/// !PXE structure format revision
///.
#define PXE_ROMID_REV 0x02
///
/// UNDI command interface revision. These are the values that get sent
/// in option 94 (Client Network Interface Identifier) in the DHCP Discover
/// and PXE Boot Server Request packets.
///
#define PXE_ROMID_MAJORVER 0x03
#define PXE_ROMID_MINORVER 0x01
///
/// Implementation flags.
///
#define PXE_ROMID_IMP_HW_UNDI 0x80000000
#define PXE_ROMID_IMP_SW_VIRT_ADDR 0x40000000
#define PXE_ROMID_IMP_64BIT_DEVICE 0x00010000
#define PXE_ROMID_IMP_FRAG_SUPPORTED 0x00008000
#define PXE_ROMID_IMP_CMD_LINK_SUPPORTED 0x00004000
#define PXE_ROMID_IMP_CMD_QUEUE_SUPPORTED 0x00002000
#define PXE_ROMID_IMP_MULTI_FRAME_SUPPORTED 0x00001000
#define PXE_ROMID_IMP_NVDATA_SUPPORT_MASK 0x00000C00
#define PXE_ROMID_IMP_NVDATA_BULK_WRITABLE 0x00000C00
#define PXE_ROMID_IMP_NVDATA_SPARSE_WRITABLE 0x00000800
#define PXE_ROMID_IMP_NVDATA_READ_ONLY 0x00000400
#define PXE_ROMID_IMP_NVDATA_NOT_AVAILABLE 0x00000000
#define PXE_ROMID_IMP_STATISTICS_SUPPORTED 0x00000200
#define PXE_ROMID_IMP_STATION_ADDR_SETTABLE 0x00000100
#define PXE_ROMID_IMP_PROMISCUOUS_MULTICAST_RX_SUPPORTED 0x00000080
#define PXE_ROMID_IMP_PROMISCUOUS_RX_SUPPORTED 0x00000040
#define PXE_ROMID_IMP_BROADCAST_RX_SUPPORTED 0x00000020
#define PXE_ROMID_IMP_FILTERED_MULTICAST_RX_SUPPORTED 0x00000010
#define PXE_ROMID_IMP_SOFTWARE_INT_SUPPORTED 0x00000008
#define PXE_ROMID_IMP_TX_COMPLETE_INT_SUPPORTED 0x00000004
#define PXE_ROMID_IMP_PACKET_RX_INT_SUPPORTED 0x00000002
#define PXE_ROMID_IMP_CMD_COMPLETE_INT_SUPPORTED 0x00000001
typedef struct s_pxe_cdb {
PXE_OPCODE OpCode;
PXE_OPFLAGS OpFlags;
PXE_UINT16 CPBsize;
PXE_UINT16 DBsize;
PXE_UINT64 CPBaddr;
PXE_UINT64 DBaddr;
PXE_STATCODE StatCode;
PXE_STATFLAGS StatFlags;
PXE_UINT16 IFnum;
PXE_CONTROL Control;
} PXE_CDB;
typedef union u_pxe_ip_addr {
PXE_IPV6 IPv6;
PXE_IPV4 IPv4;
} PXE_IP_ADDR;
typedef union pxe_device {
///
/// PCI and PC Card NICs are both identified using bus, device
/// and function numbers. For PC Card, this may require PC
/// Card services to be loaded in the BIOS or preboot
/// environment.
///
struct {
///
/// See S/W UNDI ROMID structure definition for PCI and
/// PCC BusType definitions.
///
PXE_UINT32 BusType;
///
/// Bus, device & function numbers that locate this device.
///
PXE_UINT16 Bus;
PXE_UINT8 Device;
PXE_UINT8 Function;
}
PCI, PCC;
} PXE_DEVICE;
///
/// cpb and db definitions
///
#define MAX_PCI_CONFIG_LEN 64 ///< # of dwords.
#define MAX_EEPROM_LEN 128 ///< # of dwords.
#define MAX_XMIT_BUFFERS 32 ///< recycling Q length for xmit_done.
#define MAX_MCAST_ADDRESS_CNT 8
typedef struct s_pxe_cpb_start_30 {
///
/// PXE_VOID Delay(UINTN microseconds);
///
/// UNDI will never request a delay smaller than 10 microseconds
/// and will always request delays in increments of 10 microseconds.
/// The Delay() CallBack routine must delay between n and n + 10
/// microseconds before returning control to the UNDI.
///
/// This field cannot be set to zero.
///
UINT64 Delay;
///
/// PXE_VOID Block(UINT32 enable);
///
/// UNDI may need to block multi-threaded/multi-processor access to
/// critical code sections when programming or accessing the network
/// device. To this end, a blocking service is needed by the UNDI.
/// When UNDI needs a block, it will call Block() passing a non-zero
/// value. When UNDI no longer needs a block, it will call Block()
/// with a zero value. When called, if the Block() is already enabled,
/// do not return control to the UNDI until the previous Block() is
/// disabled.
///
/// This field cannot be set to zero.
///
UINT64 Block;
///
/// PXE_VOID Virt2Phys(UINT64 virtual, UINT64 physical_ptr);
///
/// UNDI will pass the virtual address of a buffer and the virtual
/// address of a 64-bit physical buffer. Convert the virtual address
/// to a physical address and write the result to the physical address
/// buffer. If virtual and physical addresses are the same, just
/// copy the virtual address to the physical address buffer.
///
/// This field can be set to zero if virtual and physical addresses
/// are equal.
///
UINT64 Virt2Phys;
///
/// PXE_VOID Mem_IO(UINT8 read_write, UINT8 len, UINT64 port,
/// UINT64 buf_addr);
///
/// UNDI will read or write the device io space using this call back
/// function. It passes the number of bytes as the len parameter and it
/// will be either 1,2,4 or 8.
///
/// This field can not be set to zero.
///
UINT64 Mem_IO;
} PXE_CPB_START_30;
typedef struct s_pxe_cpb_start_31 {
///
/// PXE_VOID Delay(UINT64 UnqId, UINTN microseconds);
///
/// UNDI will never request a delay smaller than 10 microseconds
/// and will always request delays in increments of 10 microseconds.
/// The Delay() CallBack routine must delay between n and n + 10
/// microseconds before returning control to the UNDI.
///
/// This field cannot be set to zero.
///
UINT64 Delay;
///
/// PXE_VOID Block(UINT64 unq_id, UINT32 enable);
///
/// UNDI may need to block multi-threaded/multi-processor access to
/// critical code sections when programming or accessing the network
/// device. To this end, a blocking service is needed by the UNDI.
/// When UNDI needs a block, it will call Block() passing a non-zero
/// value. When UNDI no longer needs a block, it will call Block()
/// with a zero value. When called, if the Block() is already enabled,
/// do not return control to the UNDI until the previous Block() is
/// disabled.
///
/// This field cannot be set to zero.
///
UINT64 Block;
///
/// PXE_VOID Virt2Phys(UINT64 UnqId, UINT64 virtual, UINT64 physical_ptr);
///
/// UNDI will pass the virtual address of a buffer and the virtual
/// address of a 64-bit physical buffer. Convert the virtual address
/// to a physical address and write the result to the physical address
/// buffer. If virtual and physical addresses are the same, just
/// copy the virtual address to the physical address buffer.
///
/// This field can be set to zero if virtual and physical addresses
/// are equal.
///
UINT64 Virt2Phys;
///
/// PXE_VOID Mem_IO(UINT64 UnqId, UINT8 read_write, UINT8 len, UINT64 port,
/// UINT64 buf_addr);
///
/// UNDI will read or write the device io space using this call back
/// function. It passes the number of bytes as the len parameter and it
/// will be either 1,2,4 or 8.
///
/// This field can not be set to zero.
///
UINT64 Mem_IO;
///
/// PXE_VOID Map_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,
/// UINT32 Direction, UINT64 mapped_addr);
///
/// UNDI will pass the virtual address of a buffer, direction of the data
/// flow from/to the mapped buffer (the constants are defined below)
/// and a place holder (pointer) for the mapped address.
/// This call will Map the given address to a physical DMA address and write
/// the result to the mapped_addr pointer. If there is no need to
/// map the given address to a lower address (i.e. the given address is
/// associated with a physical address that is already compatible to be
/// used with the DMA, it converts the given virtual address to it's
/// physical address and write that in the mapped address pointer.
///
/// This field can be set to zero if there is no mapping service available.
///
UINT64 Map_Mem;
///
/// PXE_VOID UnMap_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,
/// UINT32 Direction, UINT64 mapped_addr);
///
/// UNDI will pass the virtual and mapped addresses of a buffer.
/// This call will un map the given address.
///
/// This field can be set to zero if there is no unmapping service available.
///
UINT64 UnMap_Mem;
///
/// PXE_VOID Sync_Mem(UINT64 unq_id, UINT64 virtual,
/// UINT32 size, UINT32 Direction, UINT64 mapped_addr);
///
/// UNDI will pass the virtual and mapped addresses of a buffer.
/// This call will synchronize the contents of both the virtual and mapped.
/// buffers for the given Direction.
///
/// This field can be set to zero if there is no service available.
///
UINT64 Sync_Mem;
///
/// protocol driver can provide anything for this Unique_ID, UNDI remembers
/// that as just a 64bit value associated to the interface specified by
/// the ifnum and gives it back as a parameter to all the call-back routines
/// when calling for that interface!
///
UINT64 Unique_ID;
} PXE_CPB_START_31;
#define TO_AND_FROM_DEVICE 0
#define FROM_DEVICE 1
#define TO_DEVICE 2
#define PXE_DELAY_MILLISECOND 1000
#define PXE_DELAY_SECOND 1000000
#define PXE_IO_READ 0
#define PXE_IO_WRITE 1
#define PXE_MEM_READ 2
#define PXE_MEM_WRITE 4
typedef struct s_pxe_db_get_init_info {
///
/// Minimum length of locked memory buffer that must be given to
/// the Initialize command. Giving UNDI more memory will generally
/// give better performance.
///
/// If MemoryRequired is zero, the UNDI does not need and will not
/// use system memory to receive and transmit packets.
///
PXE_UINT32 MemoryRequired;
///
/// Maximum frame data length for Tx/Rx excluding the media header.
///
PXE_UINT32 FrameDataLen;
///
/// Supported link speeds are in units of mega bits. Common ethernet
/// values are 10, 100 and 1000. Unused LinkSpeeds[] entries are zero
/// filled.
///
PXE_UINT32 LinkSpeeds[4];
///
/// Number of non-volatile storage items.
///
PXE_UINT32 NvCount;
///
/// Width of non-volatile storage item in bytes. 0, 1, 2 or 4
///
PXE_UINT16 NvWidth;
///
/// Media header length. This is the typical media header length for
/// this UNDI. This information is needed when allocating receive
/// and transmit buffers.
///
PXE_UINT16 MediaHeaderLen;
///
/// Number of bytes in the NIC hardware (MAC) address.
///
PXE_UINT16 HWaddrLen;
///
/// Maximum number of multicast MAC addresses in the multicast
/// MAC address filter list.
///
PXE_UINT16 MCastFilterCnt;
///
/// Default number and size of transmit and receive buffers that will
/// be allocated by the UNDI. If MemoryRequired is non-zero, this
/// allocation will come out of the memory buffer given to the Initialize
/// command. If MemoryRequired is zero, this allocation will come out of
/// memory on the NIC.
///
PXE_UINT16 TxBufCnt;
PXE_UINT16 TxBufSize;
PXE_UINT16 RxBufCnt;
PXE_UINT16 RxBufSize;
///
/// Hardware interface types defined in the Assigned Numbers RFC
/// and used in DHCP and ARP packets.
/// See the PXE_IFTYPE typedef and PXE_IFTYPE_xxx macros.
///
PXE_UINT8 IFtype;
///
/// Supported duplex. See PXE_DUPLEX_xxxxx #defines below.
///
PXE_UINT8 SupportedDuplexModes;
///
/// Supported loopback options. See PXE_LOOPBACK_xxxxx #defines below.
///
PXE_UINT8 SupportedLoopBackModes;
} PXE_DB_GET_INIT_INFO;
#define PXE_MAX_TXRX_UNIT_ETHER 1500
#define PXE_HWADDR_LEN_ETHER 0x0006
#define PXE_MAC_HEADER_LEN_ETHER 0x000E
#define PXE_DUPLEX_ENABLE_FULL_SUPPORTED 1
#define PXE_DUPLEX_FORCE_FULL_SUPPORTED 2
#define PXE_LOOPBACK_INTERNAL_SUPPORTED 1
#define PXE_LOOPBACK_EXTERNAL_SUPPORTED 2
typedef struct s_pxe_pci_config_info {
///
/// This is the flag field for the PXE_DB_GET_CONFIG_INFO union.
/// For PCI bus devices, this field is set to PXE_BUSTYPE_PCI.
///
UINT32 BusType;
///
/// This identifies the PCI network device that this UNDI interface.
/// is bound to.
///
UINT16 Bus;
UINT8 Device;
UINT8 Function;
///
/// This is a copy of the PCI configuration space for this
/// network device.
///
union {
UINT8 Byte[256];
UINT16 Word[128];
UINT32 Dword[64];
} Config;
} PXE_PCI_CONFIG_INFO;
typedef struct s_pxe_pcc_config_info {
///
/// This is the flag field for the PXE_DB_GET_CONFIG_INFO union.
/// For PCC bus devices, this field is set to PXE_BUSTYPE_PCC.
///
PXE_UINT32 BusType;
///
/// This identifies the PCC network device that this UNDI interface
/// is bound to.
///
PXE_UINT16 Bus;
PXE_UINT8 Device;
PXE_UINT8 Function;
///
/// This is a copy of the PCC configuration space for this
/// network device.
///
union {
PXE_UINT8 Byte[256];
PXE_UINT16 Word[128];
PXE_UINT32 Dword[64];
} Config;
} PXE_PCC_CONFIG_INFO;
typedef union u_pxe_db_get_config_info {
PXE_PCI_CONFIG_INFO pci;
PXE_PCC_CONFIG_INFO pcc;
} PXE_DB_GET_CONFIG_INFO;
typedef struct s_pxe_cpb_initialize {
///
/// Address of first (lowest) byte of the memory buffer. This buffer must
/// be in contiguous physical memory and cannot be swapped out. The UNDI
/// will be using this for transmit and receive buffering.
///
PXE_UINT64 MemoryAddr;
///
/// MemoryLength must be greater than or equal to MemoryRequired
/// returned by the Get Init Info command.
///
PXE_UINT32 MemoryLength;
///
/// Desired link speed in Mbit/sec. Common ethernet values are 10, 100
/// and 1000. Setting a value of zero will auto-detect and/or use the
/// default link speed (operation depends on UNDI/NIC functionality).
///
PXE_UINT32 LinkSpeed;
///
/// Suggested number and size of receive and transmit buffers to
/// allocate. If MemoryAddr and MemoryLength are non-zero, this
/// allocation comes out of the supplied memory buffer. If MemoryAddr
/// and MemoryLength are zero, this allocation comes out of memory
/// on the NIC.
///
/// If these fields are set to zero, the UNDI will allocate buffer
/// counts and sizes as it sees fit.
///
PXE_UINT16 TxBufCnt;
PXE_UINT16 TxBufSize;
PXE_UINT16 RxBufCnt;
PXE_UINT16 RxBufSize;
///
/// The following configuration parameters are optional and must be zero
/// to use the default values.
///
PXE_UINT8 DuplexMode;
PXE_UINT8 LoopBackMode;
} PXE_CPB_INITIALIZE;
#define PXE_DUPLEX_DEFAULT 0x00
#define PXE_FORCE_FULL_DUPLEX 0x01
#define PXE_ENABLE_FULL_DUPLEX 0x02
#define PXE_FORCE_HALF_DUPLEX 0x04
#define PXE_DISABLE_FULL_DUPLEX 0x08
#define LOOPBACK_NORMAL 0
#define LOOPBACK_INTERNAL 1
#define LOOPBACK_EXTERNAL 2
typedef struct s_pxe_db_initialize {
///
/// Actual amount of memory used from the supplied memory buffer. This
/// may be less that the amount of memory suppllied and may be zero if
/// the UNDI and network device do not use external memory buffers.
///
/// Memory used by the UNDI and network device is allocated from the
/// lowest memory buffer address.
///
PXE_UINT32 MemoryUsed;
///
/// Actual number and size of receive and transmit buffers that were
/// allocated.
///
PXE_UINT16 TxBufCnt;
PXE_UINT16 TxBufSize;
PXE_UINT16 RxBufCnt;
PXE_UINT16 RxBufSize;
} PXE_DB_INITIALIZE;
typedef struct s_pxe_cpb_receive_filters {
///
/// List of multicast MAC addresses. This list, if present, will
/// replace the existing multicast MAC address filter list.
///
PXE_MAC_ADDR MCastList[MAX_MCAST_ADDRESS_CNT];
} PXE_CPB_RECEIVE_FILTERS;
typedef struct s_pxe_db_receive_filters {
///
/// Filtered multicast MAC address list.
///
PXE_MAC_ADDR MCastList[MAX_MCAST_ADDRESS_CNT];
} PXE_DB_RECEIVE_FILTERS;
typedef struct s_pxe_cpb_station_address {
///
/// If supplied and supported, the current station MAC address
/// will be changed.
///
PXE_MAC_ADDR StationAddr;
} PXE_CPB_STATION_ADDRESS;
typedef struct s_pxe_dpb_station_address {
///
/// Current station MAC address.
///
PXE_MAC_ADDR StationAddr;
///
/// Station broadcast MAC address.
///
PXE_MAC_ADDR BroadcastAddr;
///
/// Permanent station MAC address.
///
PXE_MAC_ADDR PermanentAddr;
} PXE_DB_STATION_ADDRESS;
typedef struct s_pxe_db_statistics {
///
/// Bit field identifying what statistic data is collected by the
/// UNDI/NIC.
/// If bit 0x00 is set, Data[0x00] is collected.
/// If bit 0x01 is set, Data[0x01] is collected.
/// If bit 0x20 is set, Data[0x20] is collected.
/// If bit 0x21 is set, Data[0x21] is collected.
/// Etc.
///
PXE_UINT64 Supported;
///
/// Statistic data.
///
PXE_UINT64 Data[64];
} PXE_DB_STATISTICS;
///
/// Total number of frames received. Includes frames with errors and
/// dropped frames.
///
#define PXE_STATISTICS_RX_TOTAL_FRAMES 0x00
///
/// Number of valid frames received and copied into receive buffers.
///
#define PXE_STATISTICS_RX_GOOD_FRAMES 0x01
///
/// Number of frames below the minimum length for the media.
/// This would be <64 for ethernet.
///
#define PXE_STATISTICS_RX_UNDERSIZE_FRAMES 0x02
///
/// Number of frames longer than the maxminum length for the
/// media. This would be >1500 for ethernet.
///
#define PXE_STATISTICS_RX_OVERSIZE_FRAMES 0x03
///
/// Valid frames that were dropped because receive buffers were full.
///
#define PXE_STATISTICS_RX_DROPPED_FRAMES 0x04
///
/// Number of valid unicast frames received and not dropped.
///
#define PXE_STATISTICS_RX_UNICAST_FRAMES 0x05
///
/// Number of valid broadcast frames received and not dropped.
///
#define PXE_STATISTICS_RX_BROADCAST_FRAMES 0x06
///
/// Number of valid mutlicast frames received and not dropped.
///
#define PXE_STATISTICS_RX_MULTICAST_FRAMES 0x07
///
/// Number of frames w/ CRC or alignment errors.
///
#define PXE_STATISTICS_RX_CRC_ERROR_FRAMES 0x08
///
/// Total number of bytes received. Includes frames with errors
/// and dropped frames.
///
#define PXE_STATISTICS_RX_TOTAL_BYTES 0x09
///
/// Transmit statistics.
///
#define PXE_STATISTICS_TX_TOTAL_FRAMES 0x0A
#define PXE_STATISTICS_TX_GOOD_FRAMES 0x0B
#define PXE_STATISTICS_TX_UNDERSIZE_FRAMES 0x0C
#define PXE_STATISTICS_TX_OVERSIZE_FRAMES 0x0D
#define PXE_STATISTICS_TX_DROPPED_FRAMES 0x0E
#define PXE_STATISTICS_TX_UNICAST_FRAMES 0x0F
#define PXE_STATISTICS_TX_BROADCAST_FRAMES 0x10
#define PXE_STATISTICS_TX_MULTICAST_FRAMES 0x11
#define PXE_STATISTICS_TX_CRC_ERROR_FRAMES 0x12
#define PXE_STATISTICS_TX_TOTAL_BYTES 0x13
///
/// Number of collisions detection on this subnet.
///
#define PXE_STATISTICS_COLLISIONS 0x14
///
/// Number of frames destined for unsupported protocol.
///
#define PXE_STATISTICS_UNSUPPORTED_PROTOCOL 0x15
///
/// Number of valid frames received that were duplicated.
///
#define PXE_STATISTICS_RX_DUPLICATED_FRAMES 0x16
///
/// Number of encrypted frames received that failed to decrypt.
///
#define PXE_STATISTICS_RX_DECRYPT_ERROR_FRAMES 0x17
///
/// Number of frames that failed to transmit after exceeding the retry limit.
///
#define PXE_STATISTICS_TX_ERROR_FRAMES 0x18
///
/// Number of frames transmitted successfully after more than one attempt.
///
#define PXE_STATISTICS_TX_RETRY_FRAMES 0x19
typedef struct s_pxe_cpb_mcast_ip_to_mac {
///
/// Multicast IP address to be converted to multicast MAC address.
///
PXE_IP_ADDR IP;
} PXE_CPB_MCAST_IP_TO_MAC;
typedef struct s_pxe_db_mcast_ip_to_mac {
///
/// Multicast MAC address.
///
PXE_MAC_ADDR MAC;
} PXE_DB_MCAST_IP_TO_MAC;
typedef struct s_pxe_cpb_nvdata_sparse {
///
/// NvData item list. Only items in this list will be updated.
///
struct {
///
/// Non-volatile storage address to be changed.
///
PXE_UINT32 Addr;
///
/// Data item to write into above storage address.
///
union {
PXE_UINT8 Byte;
PXE_UINT16 Word;
PXE_UINT32 Dword;
} Data;
} Item[MAX_EEPROM_LEN];
} PXE_CPB_NVDATA_SPARSE;
///
/// When using bulk update, the size of the CPB structure must be
/// the same size as the non-volatile NIC storage.
///
typedef union u_pxe_cpb_nvdata_bulk {
///
/// Array of byte-wide data items.
///
PXE_UINT8 Byte[MAX_EEPROM_LEN << 2];
///
/// Array of word-wide data items.
///
PXE_UINT16 Word[MAX_EEPROM_LEN << 1];
///
/// Array of dword-wide data items.
///
PXE_UINT32 Dword[MAX_EEPROM_LEN];
} PXE_CPB_NVDATA_BULK;
typedef struct s_pxe_db_nvdata {
///
/// Arrays of data items from non-volatile storage.
///
union {
///
/// Array of byte-wide data items.
///
PXE_UINT8 Byte[MAX_EEPROM_LEN << 2];
///
/// Array of word-wide data items.
///
PXE_UINT16 Word[MAX_EEPROM_LEN << 1];
///
/// Array of dword-wide data items.
///
PXE_UINT32 Dword[MAX_EEPROM_LEN];
} Data;
} PXE_DB_NVDATA;
typedef struct s_pxe_db_get_status {
///
/// Length of next receive frame (header + data). If this is zero,
/// there is no next receive frame available.
///
PXE_UINT32 RxFrameLen;
///
/// Reserved, set to zero.
///
PXE_UINT32 reserved;
///
/// Addresses of transmitted buffers that need to be recycled.
///
PXE_UINT64 TxBuffer[MAX_XMIT_BUFFERS];
} PXE_DB_GET_STATUS;
typedef struct s_pxe_cpb_fill_header {
///
/// Source and destination MAC addresses. These will be copied into
/// the media header without doing byte swapping.
///
PXE_MAC_ADDR SrcAddr;
PXE_MAC_ADDR DestAddr;
///
/// Address of first byte of media header. The first byte of packet data
/// follows the last byte of the media header.
///
PXE_UINT64 MediaHeader;
///
/// Length of packet data in bytes (not including the media header).
///
PXE_UINT32 PacketLen;
///
/// Protocol type. This will be copied into the media header without
/// doing byte swapping. Protocol type numbers can be obtained from
/// the Assigned Numbers RFC 1700.
///
PXE_UINT16 Protocol;
///
/// Length of the media header in bytes.
///
PXE_UINT16 MediaHeaderLen;
} PXE_CPB_FILL_HEADER;
#define PXE_PROTOCOL_ETHERNET_IP 0x0800
#define PXE_PROTOCOL_ETHERNET_ARP 0x0806
#define MAX_XMIT_FRAGMENTS 16
typedef struct s_pxe_cpb_fill_header_fragmented {
///
/// Source and destination MAC addresses. These will be copied into
/// the media header without doing byte swapping.
///
PXE_MAC_ADDR SrcAddr;
PXE_MAC_ADDR DestAddr;
///
/// Length of packet data in bytes (not including the media header).
///
PXE_UINT32 PacketLen;
///
/// Protocol type. This will be copied into the media header without
/// doing byte swapping. Protocol type numbers can be obtained from
/// the Assigned Numbers RFC 1700.
///
PXE_MEDIA_PROTOCOL Protocol;
///
/// Length of the media header in bytes.
///
PXE_UINT16 MediaHeaderLen;
///
/// Number of packet fragment descriptors.
///
PXE_UINT16 FragCnt;
///
/// Reserved, must be set to zero.
///
PXE_UINT16 reserved;
///
/// Array of packet fragment descriptors. The first byte of the media
/// header is the first byte of the first fragment.
///
struct {
///
/// Address of this packet fragment.
///
PXE_UINT64 FragAddr;
///
/// Length of this packet fragment.
///
PXE_UINT32 FragLen;
///
/// Reserved, must be set to zero.
///
PXE_UINT32 reserved;
} FragDesc[MAX_XMIT_FRAGMENTS];
}
PXE_CPB_FILL_HEADER_FRAGMENTED;
typedef struct s_pxe_cpb_transmit {
///
/// Address of first byte of frame buffer. This is also the first byte
/// of the media header.
///
PXE_UINT64 FrameAddr;
///
/// Length of the data portion of the frame buffer in bytes. Do not
/// include the length of the media header.
///
PXE_UINT32 DataLen;
///
/// Length of the media header in bytes.
///
PXE_UINT16 MediaheaderLen;
///
/// Reserved, must be zero.
///
PXE_UINT16 reserved;
} PXE_CPB_TRANSMIT;
typedef struct s_pxe_cpb_transmit_fragments {
///
/// Length of packet data in bytes (not including the media header).
///
PXE_UINT32 FrameLen;
///
/// Length of the media header in bytes.
///
PXE_UINT16 MediaheaderLen;
///
/// Number of packet fragment descriptors.
///
PXE_UINT16 FragCnt;
///
/// Array of frame fragment descriptors. The first byte of the first
/// fragment is also the first byte of the media header.
///
struct {
///
/// Address of this frame fragment.
///
PXE_UINT64 FragAddr;
///
/// Length of this frame fragment.
///
PXE_UINT32 FragLen;
///
/// Reserved, must be set to zero.
///
PXE_UINT32 reserved;
} FragDesc[MAX_XMIT_FRAGMENTS];
}
PXE_CPB_TRANSMIT_FRAGMENTS;
typedef struct s_pxe_cpb_receive {
///
/// Address of first byte of receive buffer. This is also the first byte
/// of the frame header.
///
PXE_UINT64 BufferAddr;
///
/// Length of receive buffer. This must be large enough to hold the
/// received frame (media header + data). If the length of smaller than
/// the received frame, data will be lost.
///
PXE_UINT32 BufferLen;
///
/// Reserved, must be set to zero.
///
PXE_UINT32 reserved;
} PXE_CPB_RECEIVE;
typedef struct s_pxe_db_receive {
///
/// Source and destination MAC addresses from media header.
///
PXE_MAC_ADDR SrcAddr;
PXE_MAC_ADDR DestAddr;
///
/// Length of received frame. May be larger than receive buffer size.
/// The receive buffer will not be overwritten. This is how to tell
/// if data was lost because the receive buffer was too small.
///
PXE_UINT32 FrameLen;
///
/// Protocol type from media header.
///
PXE_MEDIA_PROTOCOL Protocol;
///
/// Length of media header in received frame.
///
PXE_UINT16 MediaHeaderLen;
///
/// Type of receive frame.
///
PXE_FRAME_TYPE Type;
///
/// Reserved, must be zero.
///
PXE_UINT8 reserved[7];
} PXE_DB_RECEIVE;
#pragma pack()
#endif
Property changes on: head/sys/contrib/edk2/Include/Uefi/UefiPxe.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r230929-231848
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r291227-291228,292618
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r277327-280030
Merged /projects/clang380-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r285199-285661
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r254613-256243
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r303899-303984
Merged /projects/openssl111/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r339079
Merged /vendor/edk2/dist/MdePkg/Include/Uefi/UefiPxe.h:r361765
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r319973-326168
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r298865-299093
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r263908
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r303380
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r262258-262612
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r260687-261245
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r303985-305318
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r1540-186085
Merged /projects/clang350-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r274961-275126,275128-275133,275135-276476
Merged /projects/ipfw/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/clang370-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r287506-288928
Merged /projects/bectl/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r336666-337662
Merged /projects/quota64/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r184125-207707
Merged /projects/clang390-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r309166-310192
Merged /projects/collation/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r286424-290491
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r295220
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r286179-290100
Merged /projects/release-arm64/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r281786,281788,281792
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r295193
Merged /projects/release-embedded/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r289470-289489
Merged /projects/largeSMP/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r221273-222812,222815-223757
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r276164,276167,276170-276172
Merged /projects/head_mfi/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r233621
Merged /projects/release-pkg/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r274131-298104
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r266519,269993
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r262185-262527
Merged /projects/fuse2/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r344558-350621,350944,350955
Merged /projects/clang900-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Uefi/UefiPxe.h:r326936-327339,327341-327933
Index: head/sys/contrib/edk2/Include/Uefi/UefiSpec.h
===================================================================
--- head/sys/contrib/edk2/Include/Uefi/UefiSpec.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Uefi/UefiSpec.h (revision 361802)
@@ -1,2194 +1,2231 @@
/** @file
Include file that supports UEFI.
- This include file must contain things defined in the UEFI 2.6 specification.
- If a code construct is defined in the UEFI 2.6 specification it must be included
+ This include file must contain things defined in the UEFI 2.7 specification.
+ If a code construct is defined in the UEFI 2.7 specification it must be included
by this include file.
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-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.
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
+Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
**/
#ifndef __UEFI_SPEC_H__
#define __UEFI_SPEC_H__
#include
#include
#include
#include
#include
///
/// Enumeration of EFI memory allocation types.
///
typedef enum {
///
/// Allocate any available range of pages that satisfies the request.
///
AllocateAnyPages,
///
- /// Allocate any available range of pages whose uppermost address is less than
+ /// Allocate any available range of pages whose uppermost address is less than
/// or equal to a specified maximum address.
///
AllocateMaxAddress,
///
/// Allocate pages at a specified address.
///
AllocateAddress,
///
/// Maximum enumeration value that may be used for bounds checking.
///
MaxAllocateType
} EFI_ALLOCATE_TYPE;
//
// Bit definitions for EFI_TIME.Daylight
//
#define EFI_TIME_ADJUST_DAYLIGHT 0x01
#define EFI_TIME_IN_DAYLIGHT 0x02
///
/// Value definition for EFI_TIME.TimeZone.
///
#define EFI_UNSPECIFIED_TIMEZONE 0x07FF
//
// Memory cacheability attributes
//
#define EFI_MEMORY_UC 0x0000000000000001ULL
#define EFI_MEMORY_WC 0x0000000000000002ULL
#define EFI_MEMORY_WT 0x0000000000000004ULL
#define EFI_MEMORY_WB 0x0000000000000008ULL
#define EFI_MEMORY_UCE 0x0000000000000010ULL
//
// Physical memory protection attributes
//
// Note: UEFI spec 2.5 and following: use EFI_MEMORY_RO as write-protected physical memory
// protection attribute. Also, EFI_MEMORY_WP means cacheability attribute.
//
#define EFI_MEMORY_WP 0x0000000000001000ULL
#define EFI_MEMORY_RP 0x0000000000002000ULL
#define EFI_MEMORY_XP 0x0000000000004000ULL
#define EFI_MEMORY_RO 0x0000000000020000ULL
//
-// Physical memory persistence attribute.
+// Physical memory persistence attribute.
// The memory region supports byte-addressable non-volatility.
//
#define EFI_MEMORY_NV 0x0000000000008000ULL
//
// The memory region provides higher reliability relative to other memory in the system.
// If all memory has the same reliability, then this bit is not used.
//
#define EFI_MEMORY_MORE_RELIABLE 0x0000000000010000ULL
+
//
+// Note: UEFI spec 2.8 and following:
+//
+// Specific-purpose memory (SPM). The memory is earmarked for
+// specific purposes such as for specific device drivers or applications.
+// The SPM attribute serves as a hint to the OS to avoid allocating this
+// memory for core OS data or code that can not be relocated.
+//
+#define EFI_MEMORY_SP 0x0000000000040000ULL
+//
+// If this flag is set, the memory region is capable of being
+// protected with the CPU?s memory cryptographic
+// capabilities. If this flag is clear, the memory region is not
+// capable of being protected with the CPU?s memory
+// cryptographic capabilities or the CPU does not support CPU
+// memory cryptographic capabilities.
+//
+#define EFI_MEMORY_CPU_CRYPTO 0x0000000000080000ULL
+
+//
// Runtime memory attribute
//
#define EFI_MEMORY_RUNTIME 0x8000000000000000ULL
///
/// Memory descriptor version number.
///
#define EFI_MEMORY_DESCRIPTOR_VERSION 1
///
/// Definition of an EFI memory descriptor.
///
typedef struct {
///
- /// Type of the memory region. See EFI_MEMORY_TYPE.
+ /// Type of the memory region.
+ /// Type EFI_MEMORY_TYPE is defined in the
+ /// AllocatePages() function description.
///
UINT32 Type;
///
- /// Physical address of the first byte of the memory region. Must aligned
- /// on a 4 KB boundary.
+ /// Physical address of the first byte in the memory region. PhysicalStart must be
+ /// aligned on a 4 KiB boundary, and must not be above 0xfffffffffffff000. Type
+ /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function description
///
EFI_PHYSICAL_ADDRESS PhysicalStart;
///
- /// Virtual address of the first byte of the memory region. Must aligned
- /// on a 4 KB boundary.
+ /// Virtual address of the first byte in the memory region.
+ /// VirtualStart must be aligned on a 4 KiB boundary,
+ /// and must not be above 0xfffffffffffff000.
///
EFI_VIRTUAL_ADDRESS VirtualStart;
///
- /// Number of 4KB pages in the memory region.
+ /// NumberOfPagesNumber of 4 KiB pages in the memory region.
+ /// NumberOfPages must not be 0, and must not be any value
+ /// that would represent a memory page with a start address,
+ /// either physical or virtual, above 0xfffffffffffff000.
///
UINT64 NumberOfPages;
///
/// Attributes of the memory region that describe the bit mask of capabilities
- /// for that memory region, and not necessarily the current settings for that
+ /// for that memory region, and not necessarily the current settings for that
/// memory region.
///
UINT64 Attribute;
} EFI_MEMORY_DESCRIPTOR;
/**
Allocates memory pages from the system.
@param[in] Type The type of allocation to perform.
@param[in] MemoryType The type of memory to allocate.
MemoryType values in the range 0x70000000..0x7FFFFFFF
are reserved for OEM use. MemoryType values in the range
0x80000000..0xFFFFFFFF are reserved for use by UEFI OS loaders
that are provided by operating system vendors.
@param[in] Pages The number of contiguous 4 KB pages to allocate.
@param[in, out] Memory The pointer to a physical address. On input, the way in which the address is
used depends on the value of Type.
@retval EFI_SUCCESS The requested pages were allocated.
@retval EFI_INVALID_PARAMETER 1) Type is not AllocateAnyPages or
AllocateMaxAddress or AllocateAddress.
2) MemoryType is in the range
EfiMaxMemoryType..0x6FFFFFFF.
3) Memory is NULL.
4) MemoryType is EfiPersistentMemory.
@retval EFI_OUT_OF_RESOURCES The pages could not be allocated.
@retval EFI_NOT_FOUND The requested pages could not be found.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_ALLOCATE_PAGES)(
IN EFI_ALLOCATE_TYPE Type,
IN EFI_MEMORY_TYPE MemoryType,
IN UINTN Pages,
IN OUT EFI_PHYSICAL_ADDRESS *Memory
);
/**
Frees memory pages.
@param[in] Memory The base physical address of the pages to be freed.
@param[in] Pages The number of contiguous 4 KB pages to free.
@retval EFI_SUCCESS The requested pages were freed.
@retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid.
@retval EFI_NOT_FOUND The requested memory pages were not allocated with
AllocatePages().
**/
typedef
EFI_STATUS
(EFIAPI *EFI_FREE_PAGES)(
IN EFI_PHYSICAL_ADDRESS Memory,
IN UINTN Pages
);
/**
Returns the current memory map.
@param[in, out] MemoryMapSize A pointer to the size, in bytes, of the MemoryMap buffer.
On input, this is the size of the buffer allocated by the caller.
On output, it is the size of the buffer returned by the firmware if
the buffer was large enough, or the size of the buffer needed to contain
the map if the buffer was too small.
- @param[in, out] MemoryMap A pointer to the buffer in which firmware places the current memory
+ @param[out] MemoryMap A pointer to the buffer in which firmware places the current memory
map.
@param[out] MapKey A pointer to the location in which firmware returns the key for the
current memory map.
@param[out] DescriptorSize A pointer to the location in which firmware returns the size, in bytes, of
an individual EFI_MEMORY_DESCRIPTOR.
@param[out] DescriptorVersion A pointer to the location in which firmware returns the version number
associated with the EFI_MEMORY_DESCRIPTOR.
@retval EFI_SUCCESS The memory map was returned in the MemoryMap buffer.
@retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current buffer size
needed to hold the memory map is returned in MemoryMapSize.
@retval EFI_INVALID_PARAMETER 1) MemoryMapSize is NULL.
2) The MemoryMap buffer is not too small and MemoryMap is
NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_GET_MEMORY_MAP)(
IN OUT UINTN *MemoryMapSize,
- IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
+ OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
OUT UINTN *MapKey,
OUT UINTN *DescriptorSize,
OUT UINT32 *DescriptorVersion
);
/**
Allocates pool memory.
@param[in] PoolType The type of pool to allocate.
MemoryType values in the range 0x70000000..0x7FFFFFFF
are reserved for OEM use. MemoryType values in the range
0x80000000..0xFFFFFFFF are reserved for use by UEFI OS loaders
that are provided by operating system vendors.
@param[in] Size The number of bytes to allocate from the pool.
@param[out] Buffer A pointer to a pointer to the allocated buffer if the call succeeds;
undefined otherwise.
@retval EFI_SUCCESS The requested number of bytes was allocated.
@retval EFI_OUT_OF_RESOURCES The pool requested could not be allocated.
@retval EFI_INVALID_PARAMETER Buffer is NULL.
PoolType is in the range EfiMaxMemoryType..0x6FFFFFFF.
PoolType is EfiPersistentMemory.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_ALLOCATE_POOL)(
IN EFI_MEMORY_TYPE PoolType,
IN UINTN Size,
OUT VOID **Buffer
);
/**
Returns pool memory to the system.
@param[in] Buffer The pointer to the buffer to free.
@retval EFI_SUCCESS The memory was returned to the system.
@retval EFI_INVALID_PARAMETER Buffer was invalid.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_FREE_POOL)(
IN VOID *Buffer
);
/**
Changes the runtime addressing mode of EFI firmware from physical to virtual.
@param[in] MemoryMapSize The size in bytes of VirtualMap.
@param[in] DescriptorSize The size in bytes of an entry in the VirtualMap.
@param[in] DescriptorVersion The version of the structure entries in VirtualMap.
@param[in] VirtualMap An array of memory descriptors which contain new virtual
address mapping information for all runtime ranges.
@retval EFI_SUCCESS The virtual address map has been applied.
@retval EFI_UNSUPPORTED EFI firmware is not at runtime, or the EFI firmware is already in
virtual address mapped mode.
@retval EFI_INVALID_PARAMETER DescriptorSize or DescriptorVersion is invalid.
@retval EFI_NO_MAPPING A virtual address was not supplied for a range in the memory
map that requires a mapping.
@retval EFI_NOT_FOUND A virtual address was supplied for an address that is not found
in the memory map.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)(
IN UINTN MemoryMapSize,
IN UINTN DescriptorSize,
IN UINT32 DescriptorVersion,
IN EFI_MEMORY_DESCRIPTOR *VirtualMap
);
/**
Connects one or more drivers to a controller.
@param[in] ControllerHandle The handle of the controller to which driver(s) are to be connected.
@param[in] DriverImageHandle A pointer to an ordered list handles that support the
EFI_DRIVER_BINDING_PROTOCOL.
@param[in] RemainingDevicePath A pointer to the device path that specifies a child of the
controller specified by ControllerHandle.
@param[in] Recursive If TRUE, then ConnectController() is called recursively
until the entire tree of controllers below the controller specified
by ControllerHandle have been created. If FALSE, then
the tree of controllers is only expanded one level.
@retval EFI_SUCCESS 1) One or more drivers were connected to ControllerHandle.
2) No drivers were connected to ControllerHandle, but
RemainingDevicePath is not NULL, and it is an End Device
Path Node.
@retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
@retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances
present in the system.
2) No drivers were connected to ControllerHandle.
- @retval EFI_SECURITY_VIOLATION
- The user has no permission to start UEFI device drivers on the device path
+ @retval EFI_SECURITY_VIOLATION
+ The user has no permission to start UEFI device drivers on the device path
associated with the ControllerHandle or specified by the RemainingDevicePath.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_CONNECT_CONTROLLER)(
IN EFI_HANDLE ControllerHandle,
IN EFI_HANDLE *DriverImageHandle, OPTIONAL
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath, OPTIONAL
IN BOOLEAN Recursive
);
/**
Disconnects one or more drivers from a controller.
@param[in] ControllerHandle The handle of the controller from which driver(s) are to be disconnected.
@param[in] DriverImageHandle The driver to disconnect from ControllerHandle.
If DriverImageHandle is NULL, then all the drivers currently managing
ControllerHandle are disconnected from ControllerHandle.
@param[in] ChildHandle The handle of the child to destroy.
If ChildHandle is NULL, then all the children of ControllerHandle are
destroyed before the drivers are disconnected from ControllerHandle.
@retval EFI_SUCCESS 1) One or more drivers were disconnected from the controller.
2) On entry, no drivers are managing ControllerHandle.
3) DriverImageHandle is not NULL, and on entry
DriverImageHandle is not managing ControllerHandle.
@retval EFI_INVALID_PARAMETER 1) ControllerHandle is NULL.
2) DriverImageHandle is not NULL, and it is not a valid EFI_HANDLE.
3) ChildHandle is not NULL, and it is not a valid EFI_HANDLE.
4) DriverImageHandle does not support the EFI_DRIVER_BINDING_PROTOCOL.
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to disconnect any drivers from
ControllerHandle.
@retval EFI_DEVICE_ERROR The controller could not be disconnected because of a device error.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_DISCONNECT_CONTROLLER)(
IN EFI_HANDLE ControllerHandle,
IN EFI_HANDLE DriverImageHandle, OPTIONAL
IN EFI_HANDLE ChildHandle OPTIONAL
);
//
// ConvertPointer DebugDisposition type.
//
#define EFI_OPTIONAL_PTR 0x00000001
/**
Determines the new virtual address that is to be used on subsequent memory accesses.
@param[in] DebugDisposition Supplies type information for the pointer being converted.
@param[in, out] Address A pointer to a pointer that is to be fixed to be the value needed
for the new virtual address mappings being applied.
@retval EFI_SUCCESS The pointer pointed to by Address was modified.
@retval EFI_INVALID_PARAMETER 1) Address is NULL.
2) *Address is NULL and DebugDisposition does
not have the EFI_OPTIONAL_PTR bit set.
@retval EFI_NOT_FOUND The pointer pointed to by Address was not found to be part
of the current memory map. This is normally fatal.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_CONVERT_POINTER)(
IN UINTN DebugDisposition,
IN OUT VOID **Address
);
//
// These types can be ORed together as needed - for example,
// EVT_TIMER might be Ored with EVT_NOTIFY_WAIT or
// EVT_NOTIFY_SIGNAL.
//
#define EVT_TIMER 0x80000000
#define EVT_RUNTIME 0x40000000
#define EVT_NOTIFY_WAIT 0x00000100
#define EVT_NOTIFY_SIGNAL 0x00000200
#define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201
#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
//
// The event's NotifyContext pointer points to a runtime memory
// address.
// The event is deprecated in UEFI2.0 and later specifications.
//
#define EVT_RUNTIME_CONTEXT 0x20000000
/**
Invoke a notification event
@param[in] Event Event whose notification function is being invoked.
@param[in] Context The pointer to the notification function's context,
which is implementation-dependent.
**/
typedef
VOID
(EFIAPI *EFI_EVENT_NOTIFY)(
IN EFI_EVENT Event,
IN VOID *Context
);
/**
Creates an event.
@param[in] Type The type of event to create and its mode and attributes.
@param[in] NotifyTpl The task priority level of event notifications, if needed.
@param[in] NotifyFunction The pointer to the event's notification function, if any.
@param[in] NotifyContext The pointer to the notification function's context; corresponds to parameter
Context in the notification function.
@param[out] Event The pointer to the newly created event if the call succeeds; undefined
otherwise.
@retval EFI_SUCCESS The event structure was created.
@retval EFI_INVALID_PARAMETER One or more parameters are invalid.
@retval EFI_OUT_OF_RESOURCES The event could not be allocated.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_CREATE_EVENT)(
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction,
IN VOID *NotifyContext,
OUT EFI_EVENT *Event
);
/**
Creates an event in a group.
@param[in] Type The type of event to create and its mode and attributes.
@param[in] NotifyTpl The task priority level of event notifications,if needed.
@param[in] NotifyFunction The pointer to the event's notification function, if any.
@param[in] NotifyContext The pointer to the notification function's context; corresponds to parameter
Context in the notification function.
@param[in] EventGroup The pointer to the unique identifier of the group to which this event belongs.
If this is NULL, then the function behaves as if the parameters were passed
to CreateEvent.
@param[out] Event The pointer to the newly created event if the call succeeds; undefined
otherwise.
@retval EFI_SUCCESS The event structure was created.
@retval EFI_INVALID_PARAMETER One or more parameters are invalid.
@retval EFI_OUT_OF_RESOURCES The event could not be allocated.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_CREATE_EVENT_EX)(
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
IN CONST VOID *NotifyContext OPTIONAL,
IN CONST EFI_GUID *EventGroup OPTIONAL,
OUT EFI_EVENT *Event
);
///
/// Timer delay types
///
typedef enum {
///
/// An event's timer settings is to be cancelled and not trigger time is to be set/
///
TimerCancel,
///
/// An event is to be signaled periodically at a specified interval from the current time.
///
TimerPeriodic,
///
/// An event is to be signaled once at a specified interval from the current time.
///
TimerRelative
} EFI_TIMER_DELAY;
/**
Sets the type of timer and the trigger time for a timer event.
@param[in] Event The timer event that is to be signaled at the specified time.
@param[in] Type The type of time that is specified in TriggerTime.
@param[in] TriggerTime The number of 100ns units until the timer expires.
A TriggerTime of 0 is legal.
If Type is TimerRelative and TriggerTime is 0, then the timer
event will be signaled on the next timer tick.
If Type is TimerPeriodic and TriggerTime is 0, then the timer
event will be signaled on every timer tick.
@retval EFI_SUCCESS The event has been set to be signaled at the requested time.
@retval EFI_INVALID_PARAMETER Event or Type is not valid.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SET_TIMER)(
IN EFI_EVENT Event,
IN EFI_TIMER_DELAY Type,
IN UINT64 TriggerTime
);
/**
Signals an event.
@param[in] Event The event to signal.
@retval EFI_SUCCESS The event has been signaled.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SIGNAL_EVENT)(
IN EFI_EVENT Event
);
/**
Stops execution until an event is signaled.
@param[in] NumberOfEvents The number of events in the Event array.
@param[in] Event An array of EFI_EVENT.
@param[out] Index The pointer to the index of the event which satisfied the wait condition.
@retval EFI_SUCCESS The event indicated by Index was signaled.
@retval EFI_INVALID_PARAMETER 1) NumberOfEvents is 0.
2) The event indicated by Index is of type
EVT_NOTIFY_SIGNAL.
@retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_WAIT_FOR_EVENT)(
IN UINTN NumberOfEvents,
IN EFI_EVENT *Event,
OUT UINTN *Index
);
/**
Closes an event.
@param[in] Event The event to close.
@retval EFI_SUCCESS The event has been closed.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_CLOSE_EVENT)(
IN EFI_EVENT Event
);
/**
Checks whether an event is in the signaled state.
@param[in] Event The event to check.
@retval EFI_SUCCESS The event is in the signaled state.
@retval EFI_NOT_READY The event is not in the signaled state.
@retval EFI_INVALID_PARAMETER Event is of type EVT_NOTIFY_SIGNAL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_CHECK_EVENT)(
IN EFI_EVENT Event
);
//
// Task priority level
//
#define TPL_APPLICATION 4
#define TPL_CALLBACK 8
#define TPL_NOTIFY 16
#define TPL_HIGH_LEVEL 31
/**
Raises a task's priority level and returns its previous level.
@param[in] NewTpl The new task priority level.
@return Previous task priority level
**/
typedef
EFI_TPL
(EFIAPI *EFI_RAISE_TPL)(
IN EFI_TPL NewTpl
);
/**
Restores a task's priority level to its previous value.
@param[in] OldTpl The previous task priority level to restore.
**/
typedef
VOID
(EFIAPI *EFI_RESTORE_TPL)(
IN EFI_TPL OldTpl
);
/**
Returns the value of a variable.
@param[in] VariableName A Null-terminated string that is the name of the vendor's
variable.
@param[in] VendorGuid A unique identifier for the vendor.
@param[out] Attributes If not NULL, a pointer to the memory location to return the
attributes bitmask for the variable.
@param[in, out] DataSize On input, the size in bytes of the return Data buffer.
On output the size of data returned in Data.
@param[out] Data The buffer to return the contents of the variable. May be NULL
with a zero DataSize in order to determine the size buffer needed.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_NOT_FOUND The variable was not found.
@retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result.
@retval EFI_INVALID_PARAMETER VariableName is NULL.
@retval EFI_INVALID_PARAMETER VendorGuid is NULL.
@retval EFI_INVALID_PARAMETER DataSize is NULL.
@retval EFI_INVALID_PARAMETER The DataSize is not too small and Data is NULL.
@retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
@retval EFI_SECURITY_VIOLATION The variable could not be retrieved due to an authentication failure.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_GET_VARIABLE)(
IN CHAR16 *VariableName,
IN EFI_GUID *VendorGuid,
OUT UINT32 *Attributes, OPTIONAL
IN OUT UINTN *DataSize,
OUT VOID *Data OPTIONAL
);
/**
Enumerates the current variable names.
- @param[in, out] VariableNameSize The size of the VariableName buffer.
+ @param[in, out] VariableNameSize The size of the VariableName buffer. The size must be large
+ enough to fit input string supplied in VariableName buffer.
@param[in, out] VariableName On input, supplies the last VariableName that was returned
by GetNextVariableName(). On output, returns the Nullterminated
string of the current variable.
@param[in, out] VendorGuid On input, supplies the last VendorGuid that was returned by
GetNextVariableName(). On output, returns the
VendorGuid of the current variable.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_NOT_FOUND The next variable was not found.
@retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result.
+ VariableNameSize has been updated with the size needed to complete the request.
@retval EFI_INVALID_PARAMETER VariableNameSize is NULL.
@retval EFI_INVALID_PARAMETER VariableName is NULL.
@retval EFI_INVALID_PARAMETER VendorGuid is NULL.
+ @retval EFI_INVALID_PARAMETER The input values of VariableName and VendorGuid are not a name and
+ GUID of an existing variable.
+ @retval EFI_INVALID_PARAMETER Null-terminator is not found in the first VariableNameSize bytes of
+ the input VariableName buffer.
@retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)(
IN OUT UINTN *VariableNameSize,
IN OUT CHAR16 *VariableName,
IN OUT EFI_GUID *VendorGuid
);
/**
Sets the value of a variable.
@param[in] VariableName A Null-terminated string that is the name of the vendor's variable.
Each VariableName is unique for each VendorGuid. VariableName must
contain 1 or more characters. If VariableName is an empty string,
then EFI_INVALID_PARAMETER is returned.
@param[in] VendorGuid A unique identifier for the vendor.
@param[in] Attributes Attributes bitmask to set for the variable.
- @param[in] DataSize The size in bytes of the Data buffer. Unless the EFI_VARIABLE_APPEND_WRITE,
- EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS, or
- EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS attribute is set, a size of zero
- causes the variable to be deleted. When the EFI_VARIABLE_APPEND_WRITE attribute is
- set, then a SetVariable() call with a DataSize of zero will not cause any change to
- the variable value (the timestamp associated with the variable may be updated however
- even if no new data value is provided,see the description of the
- EFI_VARIABLE_AUTHENTICATION_2 descriptor below. In this case the DataSize will not
- be zero since the EFI_VARIABLE_AUTHENTICATION_2 descriptor will be populated).
+ @param[in] DataSize The size in bytes of the Data buffer. Unless the EFI_VARIABLE_APPEND_WRITE or
+ EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS attribute is set, a size of zero
+ causes the variable to be deleted. When the EFI_VARIABLE_APPEND_WRITE attribute is
+ set, then a SetVariable() call with a DataSize of zero will not cause any change to
+ the variable value (the timestamp associated with the variable may be updated however
+ even if no new data value is provided,see the description of the
+ EFI_VARIABLE_AUTHENTICATION_2 descriptor below. In this case the DataSize will not
+ be zero since the EFI_VARIABLE_AUTHENTICATION_2 descriptor will be populated).
@param[in] Data The contents for the variable.
@retval EFI_SUCCESS The firmware has successfully stored the variable and its data as
defined by the Attributes.
@retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, and GUID was supplied, or the
DataSize exceeds the maximum allowed.
@retval EFI_INVALID_PARAMETER VariableName is an empty string.
@retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data.
@retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
@retval EFI_WRITE_PROTECTED The variable in question is read-only.
@retval EFI_WRITE_PROTECTED The variable in question cannot be deleted.
- @retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS
- or EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS being set, but the AuthInfo
- does NOT pass the validation check carried out by the firmware.
-
+ @retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS being set,
+ but the AuthInfo does NOT pass the validation check carried out by the firmware.
+
@retval EFI_NOT_FOUND The variable trying to be updated or deleted was not found.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SET_VARIABLE)(
IN CHAR16 *VariableName,
IN EFI_GUID *VendorGuid,
IN UINT32 Attributes,
IN UINTN DataSize,
IN VOID *Data
);
///
/// This provides the capabilities of the
/// real time clock device as exposed through the EFI interfaces.
///
typedef struct {
///
/// Provides the reporting resolution of the real-time clock device in
/// counts per second. For a normal PC-AT CMOS RTC device, this
/// value would be 1 Hz, or 1, to indicate that the device only reports
/// the time to the resolution of 1 second.
///
UINT32 Resolution;
///
/// Provides the timekeeping accuracy of the real-time clock in an
/// error rate of 1E-6 parts per million. For a clock with an accuracy
/// of 50 parts per million, the value in this field would be
/// 50,000,000.
///
UINT32 Accuracy;
///
/// A TRUE indicates that a time set operation clears the device's
/// time below the Resolution reporting level. A FALSE
/// indicates that the state below the Resolution level of the
/// device is not cleared when the time is set. Normal PC-AT CMOS
/// RTC devices set this value to FALSE.
///
BOOLEAN SetsToZero;
} EFI_TIME_CAPABILITIES;
/**
Returns the current time and date information, and the time-keeping capabilities
of the hardware platform.
@param[out] Time A pointer to storage to receive a snapshot of the current time.
@param[out] Capabilities An optional pointer to a buffer to receive the real time clock
device's capabilities.
@retval EFI_SUCCESS The operation completed successfully.
@retval EFI_INVALID_PARAMETER Time is NULL.
@retval EFI_DEVICE_ERROR The time could not be retrieved due to hardware error.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_GET_TIME)(
OUT EFI_TIME *Time,
OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
);
/**
Sets the current local time and date information.
@param[in] Time A pointer to the current time.
@retval EFI_SUCCESS The operation completed successfully.
@retval EFI_INVALID_PARAMETER A time field is out of range.
@retval EFI_DEVICE_ERROR The time could not be set due due to hardware error.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SET_TIME)(
IN EFI_TIME *Time
);
/**
Returns the current wakeup alarm clock setting.
@param[out] Enabled Indicates if the alarm is currently enabled or disabled.
@param[out] Pending Indicates if the alarm signal is pending and requires acknowledgement.
@param[out] Time The current alarm setting.
@retval EFI_SUCCESS The alarm settings were returned.
@retval EFI_INVALID_PARAMETER Enabled is NULL.
@retval EFI_INVALID_PARAMETER Pending is NULL.
@retval EFI_INVALID_PARAMETER Time is NULL.
@retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error.
@retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_GET_WAKEUP_TIME)(
OUT BOOLEAN *Enabled,
OUT BOOLEAN *Pending,
OUT EFI_TIME *Time
);
/**
Sets the system wakeup alarm clock time.
@param[in] Enable Enable or disable the wakeup alarm.
@param[in] Time If Enable is TRUE, the time to set the wakeup alarm for.
If Enable is FALSE, then this parameter is optional, and may be NULL.
@retval EFI_SUCCESS If Enable is TRUE, then the wakeup alarm was enabled. If
Enable is FALSE, then the wakeup alarm was disabled.
@retval EFI_INVALID_PARAMETER A time field is out of range.
@retval EFI_DEVICE_ERROR The wakeup time could not be set due to a hardware error.
@retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SET_WAKEUP_TIME)(
IN BOOLEAN Enable,
IN EFI_TIME *Time OPTIONAL
);
/**
Loads an EFI image into memory.
@param[in] BootPolicy If TRUE, indicates that the request originates from the boot
manager, and that the boot manager is attempting to load
FilePath as a boot selection. Ignored if SourceBuffer is
not NULL.
@param[in] ParentImageHandle The caller's image handle.
@param[in] DevicePath The DeviceHandle specific file path from which the image is
loaded.
@param[in] SourceBuffer If not NULL, a pointer to the memory location containing a copy
of the image to be loaded.
@param[in] SourceSize The size in bytes of SourceBuffer. Ignored if SourceBuffer is NULL.
@param[out] ImageHandle The pointer to the returned image handle that is created when the
image is successfully loaded.
@retval EFI_SUCCESS Image was loaded into memory correctly.
@retval EFI_NOT_FOUND Both SourceBuffer and DevicePath are NULL.
@retval EFI_INVALID_PARAMETER One or more parametes are invalid.
@retval EFI_UNSUPPORTED The image type is not supported.
@retval EFI_OUT_OF_RESOURCES Image was not loaded due to insufficient resources.
@retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not
understood.
@retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.
- @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
+ @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
image from being loaded. NULL is returned in *ImageHandle.
- @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
- valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
+ @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
+ valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
platform policy specifies that the image should not be started.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_IMAGE_LOAD)(
IN BOOLEAN BootPolicy,
IN EFI_HANDLE ParentImageHandle,
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
IN VOID *SourceBuffer OPTIONAL,
IN UINTN SourceSize,
OUT EFI_HANDLE *ImageHandle
);
/**
Transfers control to a loaded image's entry point.
@param[in] ImageHandle Handle of image to be started.
@param[out] ExitDataSize The pointer to the size, in bytes, of ExitData.
@param[out] ExitData The pointer to a pointer to a data buffer that includes a Null-terminated
string, optionally followed by additional binary data.
@retval EFI_INVALID_PARAMETER ImageHandle is either an invalid image handle or the image
has already been initialized with StartImage.
@retval EFI_SECURITY_VIOLATION The current platform policy specifies that the image should not be started.
@return Exit code from image
**/
typedef
EFI_STATUS
(EFIAPI *EFI_IMAGE_START)(
IN EFI_HANDLE ImageHandle,
OUT UINTN *ExitDataSize,
OUT CHAR16 **ExitData OPTIONAL
);
/**
Terminates a loaded EFI image and returns control to boot services.
- @param[in] ImageHandle Handle that identifies the image. This parameter is passed to the
+ @param[in] ImageHandle Handle that identifies the image. This parameter is passed to the
image on entry.
@param[in] ExitStatus The image's exit code.
@param[in] ExitDataSize The size, in bytes, of ExitData. Ignored if ExitStatus is EFI_SUCCESS.
@param[in] ExitData The pointer to a data buffer that includes a Null-terminated string,
- optionally followed by additional binary data. The string is a
- description that the caller may use to further indicate the reason
- for the image's exit. ExitData is only valid if ExitStatus
- is something other than EFI_SUCCESS. The ExitData buffer
+ optionally followed by additional binary data. The string is a
+ description that the caller may use to further indicate the reason
+ for the image's exit. ExitData is only valid if ExitStatus
+ is something other than EFI_SUCCESS. The ExitData buffer
must be allocated by calling AllocatePool().
@retval EFI_SUCCESS The image specified by ImageHandle was unloaded.
@retval EFI_INVALID_PARAMETER The image specified by ImageHandle has been loaded and
started with LoadImage() and StartImage(), but the
image is not the currently executing image.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_EXIT)(
IN EFI_HANDLE ImageHandle,
IN EFI_STATUS ExitStatus,
IN UINTN ExitDataSize,
IN CHAR16 *ExitData OPTIONAL
);
/**
Unloads an image.
@param[in] ImageHandle Handle that identifies the image to be unloaded.
@retval EFI_SUCCESS The image has been unloaded.
@retval EFI_INVALID_PARAMETER ImageHandle is not a valid image handle.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_IMAGE_UNLOAD)(
IN EFI_HANDLE ImageHandle
);
/**
Terminates all boot services.
@param[in] ImageHandle Handle that identifies the exiting image.
@param[in] MapKey Key to the latest memory map.
@retval EFI_SUCCESS Boot services have been terminated.
@retval EFI_INVALID_PARAMETER MapKey is incorrect.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_EXIT_BOOT_SERVICES)(
IN EFI_HANDLE ImageHandle,
IN UINTN MapKey
);
/**
Induces a fine-grained stall.
@param[in] Microseconds The number of microseconds to stall execution.
@retval EFI_SUCCESS Execution was stalled at least the requested number of
Microseconds.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_STALL)(
IN UINTN Microseconds
);
/**
Sets the system's watchdog timer.
@param[in] Timeout The number of seconds to set the watchdog timer to.
@param[in] WatchdogCode The numeric code to log on a watchdog timer timeout event.
@param[in] DataSize The size, in bytes, of WatchdogData.
@param[in] WatchdogData A data buffer that includes a Null-terminated string, optionally
followed by additional binary data.
@retval EFI_SUCCESS The timeout has been set.
@retval EFI_INVALID_PARAMETER The supplied WatchdogCode is invalid.
@retval EFI_UNSUPPORTED The system does not have a watchdog timer.
@retval EFI_DEVICE_ERROR The watchdog timer could not be programmed due to a hardware
error.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SET_WATCHDOG_TIMER)(
IN UINTN Timeout,
IN UINT64 WatchdogCode,
IN UINTN DataSize,
IN CHAR16 *WatchdogData OPTIONAL
);
/**
Resets the entire platform.
@param[in] ResetType The type of reset to perform.
@param[in] ResetStatus The status code for the reset.
@param[in] DataSize The size, in bytes, of ResetData.
@param[in] ResetData For a ResetType of EfiResetCold, EfiResetWarm, or
EfiResetShutdown the data buffer starts with a Null-terminated
string, optionally followed by additional binary data.
The string is a description that the caller may use to further
- indicate the reason for the system reset. ResetData is only
- valid if ResetStatus is something other than EFI_SUCCESS
- unless the ResetType is EfiResetPlatformSpecific
- where a minimum amount of ResetData is always required.
+ indicate the reason for the system reset.
+ For a ResetType of EfiResetPlatformSpecific the data buffer
+ also starts with a Null-terminated string that is followed
+ by an EFI_GUID that describes the specific type of reset to perform.
**/
typedef
VOID
(EFIAPI *EFI_RESET_SYSTEM)(
IN EFI_RESET_TYPE ResetType,
IN EFI_STATUS ResetStatus,
IN UINTN DataSize,
IN VOID *ResetData OPTIONAL
);
/**
Returns a monotonically increasing count for the platform.
@param[out] Count The pointer to returned value.
@retval EFI_SUCCESS The next monotonic count was returned.
@retval EFI_INVALID_PARAMETER Count is NULL.
@retval EFI_DEVICE_ERROR The device is not functioning properly.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT)(
OUT UINT64 *Count
);
/**
Returns the next high 32 bits of the platform's monotonic counter.
@param[out] HighCount The pointer to returned value.
@retval EFI_SUCCESS The next high monotonic count was returned.
@retval EFI_INVALID_PARAMETER HighCount is NULL.
@retval EFI_DEVICE_ERROR The device is not functioning properly.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT)(
OUT UINT32 *HighCount
);
/**
Computes and returns a 32-bit CRC for a data buffer.
@param[in] Data A pointer to the buffer on which the 32-bit CRC is to be computed.
@param[in] DataSize The number of bytes in the buffer Data.
@param[out] Crc32 The 32-bit CRC that was computed for the data buffer specified by Data
and DataSize.
@retval EFI_SUCCESS The 32-bit CRC was computed for the data buffer and returned in
Crc32.
@retval EFI_INVALID_PARAMETER Data is NULL.
@retval EFI_INVALID_PARAMETER Crc32 is NULL.
@retval EFI_INVALID_PARAMETER DataSize is 0.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_CALCULATE_CRC32)(
IN VOID *Data,
IN UINTN DataSize,
OUT UINT32 *Crc32
);
/**
Copies the contents of one buffer to another buffer.
@param[in] Destination The pointer to the destination buffer of the memory copy.
@param[in] Source The pointer to the source buffer of the memory copy.
@param[in] Length Number of bytes to copy from Source to Destination.
**/
typedef
VOID
(EFIAPI *EFI_COPY_MEM)(
IN VOID *Destination,
IN VOID *Source,
IN UINTN Length
);
/**
The SetMem() function fills a buffer with a specified value.
@param[in] Buffer The pointer to the buffer to fill.
@param[in] Size Number of bytes in Buffer to fill.
@param[in] Value Value to fill Buffer with.
**/
typedef
VOID
(EFIAPI *EFI_SET_MEM)(
IN VOID *Buffer,
IN UINTN Size,
IN UINT8 Value
);
///
/// Enumeration of EFI Interface Types
///
typedef enum {
///
/// Indicates that the supplied protocol interface is supplied in native form.
///
EFI_NATIVE_INTERFACE
} EFI_INTERFACE_TYPE;
/**
Installs a protocol interface on a device handle. If the handle does not exist, it is created and added
to the list of handles in the system. InstallMultipleProtocolInterfaces() performs
more error checking than InstallProtocolInterface(), so it is recommended that
InstallMultipleProtocolInterfaces() be used in place of
InstallProtocolInterface()
@param[in, out] Handle A pointer to the EFI_HANDLE on which the interface is to be installed.
@param[in] Protocol The numeric ID of the protocol interface.
@param[in] InterfaceType Indicates whether Interface is supplied in native form.
@param[in] Interface A pointer to the protocol interface.
@retval EFI_SUCCESS The protocol interface was installed.
@retval EFI_OUT_OF_RESOURCES Space for a new handle could not be allocated.
@retval EFI_INVALID_PARAMETER Handle is NULL.
@retval EFI_INVALID_PARAMETER Protocol is NULL.
@retval EFI_INVALID_PARAMETER InterfaceType is not EFI_NATIVE_INTERFACE.
@retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE)(
IN OUT EFI_HANDLE *Handle,
IN EFI_GUID *Protocol,
IN EFI_INTERFACE_TYPE InterfaceType,
IN VOID *Interface
);
/**
Installs one or more protocol interfaces into the boot services environment.
@param[in, out] Handle The pointer to a handle to install the new protocol interfaces on,
or a pointer to NULL if a new handle is to be allocated.
@param ... A variable argument list containing pairs of protocol GUIDs and protocol
interfaces.
@retval EFI_SUCCESS All the protocol interface was installed.
@retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
@retval EFI_ALREADY_STARTED A Device Path Protocol instance was passed in that is already present in
the handle database.
@retval EFI_INVALID_PARAMETER Handle is NULL.
@retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
IN OUT EFI_HANDLE *Handle,
...
);
/**
Reinstalls a protocol interface on a device handle.
@param[in] Handle Handle on which the interface is to be reinstalled.
@param[in] Protocol The numeric ID of the interface.
@param[in] OldInterface A pointer to the old interface. NULL can be used if a structure is not
associated with Protocol.
@param[in] NewInterface A pointer to the new interface.
@retval EFI_SUCCESS The protocol interface was reinstalled.
@retval EFI_NOT_FOUND The OldInterface on the handle was not found.
@retval EFI_ACCESS_DENIED The protocol interface could not be reinstalled,
because OldInterface is still being used by a
driver that will not release it.
@retval EFI_INVALID_PARAMETER Handle is NULL.
@retval EFI_INVALID_PARAMETER Protocol is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE)(
IN EFI_HANDLE Handle,
IN EFI_GUID *Protocol,
IN VOID *OldInterface,
IN VOID *NewInterface
);
/**
Removes a protocol interface from a device handle. It is recommended that
UninstallMultipleProtocolInterfaces() be used in place of
UninstallProtocolInterface().
@param[in] Handle The handle on which the interface was installed.
@param[in] Protocol The numeric ID of the interface.
@param[in] Interface A pointer to the interface.
@retval EFI_SUCCESS The interface was removed.
@retval EFI_NOT_FOUND The interface was not found.
@retval EFI_ACCESS_DENIED The interface was not removed because the interface
is still being used by a driver.
@retval EFI_INVALID_PARAMETER Handle is NULL.
@retval EFI_INVALID_PARAMETER Protocol is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE)(
IN EFI_HANDLE Handle,
IN EFI_GUID *Protocol,
IN VOID *Interface
);
/**
Removes one or more protocol interfaces into the boot services environment.
@param[in] Handle The handle to remove the protocol interfaces from.
@param ... A variable argument list containing pairs of protocol GUIDs and
protocol interfaces.
@retval EFI_SUCCESS All the protocol interfaces were removed.
@retval EFI_INVALID_PARAMETER One of the protocol interfaces was not previously installed on Handle.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
IN EFI_HANDLE Handle,
...
);
/**
Queries a handle to determine if it supports a specified protocol.
@param[in] Handle The handle being queried.
@param[in] Protocol The published unique identifier of the protocol.
@param[out] Interface Supplies the address where a pointer to the corresponding Protocol
Interface is returned.
@retval EFI_SUCCESS The interface information for the specified protocol was returned.
@retval EFI_UNSUPPORTED The device does not support the specified protocol.
@retval EFI_INVALID_PARAMETER Handle is NULL.
@retval EFI_INVALID_PARAMETER Protocol is NULL.
@retval EFI_INVALID_PARAMETER Interface is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_HANDLE_PROTOCOL)(
IN EFI_HANDLE Handle,
IN EFI_GUID *Protocol,
OUT VOID **Interface
);
#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
#define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
#define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
/**
Queries a handle to determine if it supports a specified protocol. If the protocol is supported by the
handle, it opens the protocol on behalf of the calling agent.
@param[in] Handle The handle for the protocol interface that is being opened.
@param[in] Protocol The published unique identifier of the protocol.
@param[out] Interface Supplies the address where a pointer to the corresponding Protocol
Interface is returned.
@param[in] AgentHandle The handle of the agent that is opening the protocol interface
specified by Protocol and Interface.
@param[in] ControllerHandle If the agent that is opening a protocol is a driver that follows the
UEFI Driver Model, then this parameter is the controller handle
that requires the protocol interface. If the agent does not follow
the UEFI Driver Model, then this parameter is optional and may
be NULL.
@param[in] Attributes The open mode of the protocol interface specified by Handle
and Protocol.
@retval EFI_SUCCESS An item was added to the open list for the protocol interface, and the
protocol interface was returned in Interface.
@retval EFI_UNSUPPORTED Handle does not support Protocol.
@retval EFI_INVALID_PARAMETER One or more parameters are invalid.
@retval EFI_ACCESS_DENIED Required attributes can't be supported in current environment.
@retval EFI_ALREADY_STARTED Item on the open list already has requierd attributes whose agent
handle is the same as AgentHandle.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_OPEN_PROTOCOL)(
IN EFI_HANDLE Handle,
IN EFI_GUID *Protocol,
OUT VOID **Interface, OPTIONAL
IN EFI_HANDLE AgentHandle,
IN EFI_HANDLE ControllerHandle,
IN UINT32 Attributes
);
/**
Closes a protocol on a handle that was opened using OpenProtocol().
@param[in] Handle The handle for the protocol interface that was previously opened
with OpenProtocol(), and is now being closed.
@param[in] Protocol The published unique identifier of the protocol.
@param[in] AgentHandle The handle of the agent that is closing the protocol interface.
@param[in] ControllerHandle If the agent that opened a protocol is a driver that follows the
UEFI Driver Model, then this parameter is the controller handle
that required the protocol interface.
@retval EFI_SUCCESS The protocol instance was closed.
@retval EFI_INVALID_PARAMETER 1) Handle is NULL.
2) AgentHandle is NULL.
3) ControllerHandle is not NULL and ControllerHandle is not a valid EFI_HANDLE.
4) Protocol is NULL.
@retval EFI_NOT_FOUND 1) Handle does not support the protocol specified by Protocol.
2) The protocol interface specified by Handle and Protocol is not
currently open by AgentHandle and ControllerHandle.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_CLOSE_PROTOCOL)(
IN EFI_HANDLE Handle,
IN EFI_GUID *Protocol,
IN EFI_HANDLE AgentHandle,
IN EFI_HANDLE ControllerHandle
);
///
/// EFI Oprn Protocol Information Entry
///
typedef struct {
EFI_HANDLE AgentHandle;
EFI_HANDLE ControllerHandle;
UINT32 Attributes;
UINT32 OpenCount;
} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
/**
Retrieves the list of agents that currently have a protocol interface opened.
@param[in] Handle The handle for the protocol interface that is being queried.
@param[in] Protocol The published unique identifier of the protocol.
@param[out] EntryBuffer A pointer to a buffer of open protocol information in the form of
EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures.
@param[out] EntryCount A pointer to the number of entries in EntryBuffer.
@retval EFI_SUCCESS The open protocol information was returned in EntryBuffer, and the
number of entries was returned EntryCount.
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate EntryBuffer.
@retval EFI_NOT_FOUND Handle does not support the protocol specified by Protocol.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION)(
IN EFI_HANDLE Handle,
IN EFI_GUID *Protocol,
OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
OUT UINTN *EntryCount
);
/**
Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated
from pool.
@param[in] Handle The handle from which to retrieve the list of protocol interface
GUIDs.
@param[out] ProtocolBuffer A pointer to the list of protocol interface GUID pointers that are
installed on Handle.
@param[out] ProtocolBufferCount A pointer to the number of GUID pointers present in
ProtocolBuffer.
@retval EFI_SUCCESS The list of protocol interface GUIDs installed on Handle was returned in
ProtocolBuffer. The number of protocol interface GUIDs was
returned in ProtocolBufferCount.
@retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the results.
@retval EFI_INVALID_PARAMETER Handle is NULL.
@retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE.
@retval EFI_INVALID_PARAMETER ProtocolBuffer is NULL.
@retval EFI_INVALID_PARAMETER ProtocolBufferCount is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PROTOCOLS_PER_HANDLE)(
IN EFI_HANDLE Handle,
OUT EFI_GUID ***ProtocolBuffer,
OUT UINTN *ProtocolBufferCount
);
/**
Creates an event that is to be signaled whenever an interface is installed for a specified protocol.
@param[in] Protocol The numeric ID of the protocol for which the event is to be registered.
@param[in] Event Event that is to be signaled whenever a protocol interface is registered
for Protocol.
@param[out] Registration A pointer to a memory location to receive the registration value.
@retval EFI_SUCCESS The notification event has been registered.
@retval EFI_OUT_OF_RESOURCES Space for the notification event could not be allocated.
@retval EFI_INVALID_PARAMETER Protocol is NULL.
@retval EFI_INVALID_PARAMETER Event is NULL.
@retval EFI_INVALID_PARAMETER Registration is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY)(
IN EFI_GUID *Protocol,
IN EFI_EVENT Event,
OUT VOID **Registration
);
///
/// Enumeration of EFI Locate Search Types
///
typedef enum {
///
/// Retrieve all the handles in the handle database.
///
AllHandles,
///
/// Retrieve the next handle fron a RegisterProtocolNotify() event.
///
ByRegisterNotify,
///
- /// Retrieve the set of handles from the handle database that support a
+ /// Retrieve the set of handles from the handle database that support a
/// specified protocol.
///
ByProtocol
} EFI_LOCATE_SEARCH_TYPE;
/**
Returns an array of handles that support a specified protocol.
@param[in] SearchType Specifies which handle(s) are to be returned.
@param[in] Protocol Specifies the protocol to search by.
@param[in] SearchKey Specifies the search key.
@param[in, out] BufferSize On input, the size in bytes of Buffer. On output, the size in bytes of
the array returned in Buffer (if the buffer was large enough) or the
size, in bytes, of the buffer needed to obtain the array (if the buffer was
not large enough).
@param[out] Buffer The buffer in which the array is returned.
@retval EFI_SUCCESS The array of handles was returned.
@retval EFI_NOT_FOUND No handles match the search.
@retval EFI_BUFFER_TOO_SMALL The BufferSize is too small for the result.
@retval EFI_INVALID_PARAMETER SearchType is not a member of EFI_LOCATE_SEARCH_TYPE.
@retval EFI_INVALID_PARAMETER SearchType is ByRegisterNotify and SearchKey is NULL.
@retval EFI_INVALID_PARAMETER SearchType is ByProtocol and Protocol is NULL.
@retval EFI_INVALID_PARAMETER One or more matches are found and BufferSize is NULL.
@retval EFI_INVALID_PARAMETER BufferSize is large enough for the result and Buffer is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_LOCATE_HANDLE)(
IN EFI_LOCATE_SEARCH_TYPE SearchType,
IN EFI_GUID *Protocol, OPTIONAL
IN VOID *SearchKey, OPTIONAL
IN OUT UINTN *BufferSize,
OUT EFI_HANDLE *Buffer
);
/**
Locates the handle to a device on the device path that supports the specified protocol.
@param[in] Protocol Specifies the protocol to search for.
@param[in, out] DevicePath On input, a pointer to a pointer to the device path. On output, the device
path pointer is modified to point to the remaining part of the device
path.
@param[out] Device A pointer to the returned device handle.
@retval EFI_SUCCESS The resulting handle was returned.
@retval EFI_NOT_FOUND No handles match the search.
@retval EFI_INVALID_PARAMETER Protocol is NULL.
@retval EFI_INVALID_PARAMETER DevicePath is NULL.
@retval EFI_INVALID_PARAMETER A handle matched the search and Device is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_LOCATE_DEVICE_PATH)(
IN EFI_GUID *Protocol,
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
OUT EFI_HANDLE *Device
);
/**
Adds, updates, or removes a configuration table entry from the EFI System Table.
@param[in] Guid A pointer to the GUID for the entry to add, update, or remove.
@param[in] Table A pointer to the configuration table for the entry to add, update, or
remove. May be NULL.
@retval EFI_SUCCESS The (Guid, Table) pair was added, updated, or removed.
@retval EFI_NOT_FOUND An attempt was made to delete a nonexistent entry.
@retval EFI_INVALID_PARAMETER Guid is NULL.
@retval EFI_OUT_OF_RESOURCES There is not enough memory available to complete the operation.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE)(
IN EFI_GUID *Guid,
IN VOID *Table
);
/**
Returns an array of handles that support the requested protocol in a buffer allocated from pool.
@param[in] SearchType Specifies which handle(s) are to be returned.
@param[in] Protocol Provides the protocol to search by.
This parameter is only valid for a SearchType of ByProtocol.
@param[in] SearchKey Supplies the search key depending on the SearchType.
- @param[in, out] NoHandles The number of handles returned in Buffer.
+ @param[out] NoHandles The number of handles returned in Buffer.
@param[out] Buffer A pointer to the buffer to return the requested array of handles that
support Protocol.
@retval EFI_SUCCESS The array of handles was returned in Buffer, and the number of
handles in Buffer was returned in NoHandles.
@retval EFI_NOT_FOUND No handles match the search.
@retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the matching results.
@retval EFI_INVALID_PARAMETER NoHandles is NULL.
@retval EFI_INVALID_PARAMETER Buffer is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_LOCATE_HANDLE_BUFFER)(
IN EFI_LOCATE_SEARCH_TYPE SearchType,
IN EFI_GUID *Protocol, OPTIONAL
IN VOID *SearchKey, OPTIONAL
- IN OUT UINTN *NoHandles,
+ OUT UINTN *NoHandles,
OUT EFI_HANDLE **Buffer
);
/**
Returns the first protocol instance that matches the given protocol.
@param[in] Protocol Provides the protocol to search for.
@param[in] Registration Optional registration key returned from
RegisterProtocolNotify().
@param[out] Interface On return, a pointer to the first interface that matches Protocol and
Registration.
@retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in
Interface.
@retval EFI_NOT_FOUND No protocol instances were found that match Protocol and
Registration.
@retval EFI_INVALID_PARAMETER Interface is NULL.
+ Protocol is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_LOCATE_PROTOCOL)(
IN EFI_GUID *Protocol,
IN VOID *Registration, OPTIONAL
OUT VOID **Interface
);
///
/// EFI Capsule Block Descriptor
///
typedef struct {
///
/// Length in bytes of the data pointed to by DataBlock/ContinuationPointer.
///
UINT64 Length;
union {
///
/// Physical address of the data block. This member of the union is
/// used if Length is not equal to zero.
///
EFI_PHYSICAL_ADDRESS DataBlock;
///
/// Physical address of another block of
/// EFI_CAPSULE_BLOCK_DESCRIPTOR structures. This
/// member of the union is used if Length is equal to zero. If
/// ContinuationPointer is zero this entry represents the end of the list.
///
EFI_PHYSICAL_ADDRESS ContinuationPointer;
} Union;
} EFI_CAPSULE_BLOCK_DESCRIPTOR;
///
/// EFI Capsule Header.
///
typedef struct {
///
/// A GUID that defines the contents of a capsule.
///
EFI_GUID CapsuleGuid;
///
/// The size of the capsule header. This may be larger than the size of
/// the EFI_CAPSULE_HEADER since CapsuleGuid may imply
/// extended header entries
///
UINT32 HeaderSize;
///
/// Bit-mapped list describing the capsule attributes. The Flag values
/// of 0x0000 - 0xFFFF are defined by CapsuleGuid. Flag values
/// of 0x10000 - 0xFFFFFFFF are defined by this specification
///
UINT32 Flags;
///
/// Size in bytes of the capsule.
///
UINT32 CapsuleImageSize;
} EFI_CAPSULE_HEADER;
///
/// The EFI System Table entry must point to an array of capsules
/// that contain the same CapsuleGuid value. The array must be
/// prefixed by a UINT32 that represents the size of the array of capsules.
///
typedef struct {
///
/// the size of the array of capsules.
///
UINT32 CapsuleArrayNumber;
///
/// Point to an array of capsules that contain the same CapsuleGuid value.
///
VOID* CapsulePtr[1];
} EFI_CAPSULE_TABLE;
#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000
#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
#define CAPSULE_FLAGS_INITIATE_RESET 0x00040000
/**
Passes capsules to the firmware with both virtual and physical mapping. Depending on the intended
consumption, the firmware may process the capsule immediately. If the payload should persist
across a system reset, the reset value returned from EFI_QueryCapsuleCapabilities must
be passed into ResetSystem() and will cause the capsule to be processed by the firmware as
part of the reset process.
@param[in] CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules
being passed into update capsule.
@param[in] CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in
CaspuleHeaderArray.
@param[in] ScatterGatherList Physical pointer to a set of
EFI_CAPSULE_BLOCK_DESCRIPTOR that describes the
location in physical memory of a set of capsules.
@retval EFI_SUCCESS Valid capsule was passed. If
CAPSULE_FLAGS_PERSIT_ACROSS_RESET is not set, the
capsule has been successfully processed by the firmware.
@retval EFI_INVALID_PARAMETER CapsuleSize is NULL, or an incompatible set of flags were
set in the capsule header.
@retval EFI_INVALID_PARAMETER CapsuleCount is 0.
@retval EFI_DEVICE_ERROR The capsule update was started, but failed due to a device error.
@retval EFI_UNSUPPORTED The capsule type is not supported on this platform.
- @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule
- is compatible with this platform but is not capable of being submitted or processed
+ @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule
+ is compatible with this platform but is not capable of being submitted or processed
in runtime. The caller may resubmit the capsule prior to ExitBootServices().
- @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates
+ @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates
the capsule is compatible with this platform but there are insufficient resources to process.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_UPDATE_CAPSULE)(
IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
IN UINTN CapsuleCount,
IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
);
/**
Returns if the capsule can be supported via UpdateCapsule().
@param[in] CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules
being passed into update capsule.
@param[in] CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in
CaspuleHeaderArray.
@param[out] MaxiumCapsuleSize On output the maximum size that UpdateCapsule() can
support as an argument to UpdateCapsule() via
CapsuleHeaderArray and ScatterGatherList.
@param[out] ResetType Returns the type of reset required for the capsule update.
@retval EFI_SUCCESS Valid answer returned.
@retval EFI_UNSUPPORTED The capsule type is not supported on this platform, and
MaximumCapsuleSize and ResetType are undefined.
@retval EFI_INVALID_PARAMETER MaximumCapsuleSize is NULL.
- @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule
- is compatible with this platform but is not capable of being submitted or processed
+ @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule
+ is compatible with this platform but is not capable of being submitted or processed
in runtime. The caller may resubmit the capsule prior to ExitBootServices().
- @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates
+ @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates
the capsule is compatible with this platform but there are insufficient resources to process.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)(
IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
IN UINTN CapsuleCount,
OUT UINT64 *MaximumCapsuleSize,
OUT EFI_RESET_TYPE *ResetType
);
/**
Returns information about the EFI variables.
@param[in] Attributes Attributes bitmask to specify the type of variables on
which to return information.
@param[out] MaximumVariableStorageSize On output the maximum size of the storage space
available for the EFI variables associated with the
attributes specified.
@param[out] RemainingVariableStorageSize Returns the remaining size of the storage space
available for the EFI variables associated with the
attributes specified.
@param[out] MaximumVariableSize Returns the maximum size of the individual EFI
variables associated with the attributes specified.
@retval EFI_SUCCESS Valid answer returned.
@retval EFI_INVALID_PARAMETER An invalid combination of attribute bits was supplied
@retval EFI_UNSUPPORTED The attribute is not supported on this platform, and the
MaximumVariableStorageSize,
RemainingVariableStorageSize, MaximumVariableSize
are undefined.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_QUERY_VARIABLE_INFO)(
IN UINT32 Attributes,
OUT UINT64 *MaximumVariableStorageSize,
OUT UINT64 *RemainingVariableStorageSize,
OUT UINT64 *MaximumVariableSize
);
//
// Firmware should stop at a firmware user interface on next boot
//
#define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001
#define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002
#define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED 0x0000000000000004
#define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED 0x0000000000000008
#define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED 0x0000000000000010
#define EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY 0x0000000000000040
+#define EFI_OS_INDICATIONS_JSON_CONFIG_DATA_REFRESH 0x0000000000000080
//
// EFI Runtime Services Table
//
#define EFI_SYSTEM_TABLE_SIGNATURE SIGNATURE_64 ('I','B','I',' ','S','Y','S','T')
+#define EFI_2_80_SYSTEM_TABLE_REVISION ((2 << 16) | (80))
+#define EFI_2_70_SYSTEM_TABLE_REVISION ((2 << 16) | (70))
#define EFI_2_60_SYSTEM_TABLE_REVISION ((2 << 16) | (60))
#define EFI_2_50_SYSTEM_TABLE_REVISION ((2 << 16) | (50))
#define EFI_2_40_SYSTEM_TABLE_REVISION ((2 << 16) | (40))
#define EFI_2_31_SYSTEM_TABLE_REVISION ((2 << 16) | (31))
#define EFI_2_30_SYSTEM_TABLE_REVISION ((2 << 16) | (30))
#define EFI_2_20_SYSTEM_TABLE_REVISION ((2 << 16) | (20))
#define EFI_2_10_SYSTEM_TABLE_REVISION ((2 << 16) | (10))
#define EFI_2_00_SYSTEM_TABLE_REVISION ((2 << 16) | (00))
#define EFI_1_10_SYSTEM_TABLE_REVISION ((1 << 16) | (10))
#define EFI_1_02_SYSTEM_TABLE_REVISION ((1 << 16) | (02))
-#define EFI_SYSTEM_TABLE_REVISION EFI_2_60_SYSTEM_TABLE_REVISION
+#define EFI_SYSTEM_TABLE_REVISION EFI_2_70_SYSTEM_TABLE_REVISION
#define EFI_SPECIFICATION_VERSION EFI_SYSTEM_TABLE_REVISION
#define EFI_RUNTIME_SERVICES_SIGNATURE SIGNATURE_64 ('R','U','N','T','S','E','R','V')
#define EFI_RUNTIME_SERVICES_REVISION EFI_SPECIFICATION_VERSION
///
/// EFI Runtime Services Table.
///
typedef struct {
///
/// The table header for the EFI Runtime Services Table.
///
EFI_TABLE_HEADER Hdr;
//
// Time Services
//
EFI_GET_TIME GetTime;
EFI_SET_TIME SetTime;
EFI_GET_WAKEUP_TIME GetWakeupTime;
EFI_SET_WAKEUP_TIME SetWakeupTime;
//
// Virtual Memory Services
//
EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
EFI_CONVERT_POINTER ConvertPointer;
//
// Variable Services
//
EFI_GET_VARIABLE GetVariable;
EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
EFI_SET_VARIABLE SetVariable;
//
// Miscellaneous Services
//
EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
EFI_RESET_SYSTEM ResetSystem;
//
// UEFI 2.0 Capsule Services
//
EFI_UPDATE_CAPSULE UpdateCapsule;
EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
//
// Miscellaneous UEFI 2.0 Service
//
EFI_QUERY_VARIABLE_INFO QueryVariableInfo;
} EFI_RUNTIME_SERVICES;
#define EFI_BOOT_SERVICES_SIGNATURE SIGNATURE_64 ('B','O','O','T','S','E','R','V')
#define EFI_BOOT_SERVICES_REVISION EFI_SPECIFICATION_VERSION
///
/// EFI Boot Services Table.
///
typedef struct {
///
/// The table header for the EFI Boot Services Table.
///
EFI_TABLE_HEADER Hdr;
//
// Task Priority Services
//
EFI_RAISE_TPL RaiseTPL;
EFI_RESTORE_TPL RestoreTPL;
//
// Memory Services
//
EFI_ALLOCATE_PAGES AllocatePages;
EFI_FREE_PAGES FreePages;
EFI_GET_MEMORY_MAP GetMemoryMap;
EFI_ALLOCATE_POOL AllocatePool;
EFI_FREE_POOL FreePool;
//
// Event & Timer Services
//
EFI_CREATE_EVENT CreateEvent;
EFI_SET_TIMER SetTimer;
EFI_WAIT_FOR_EVENT WaitForEvent;
EFI_SIGNAL_EVENT SignalEvent;
EFI_CLOSE_EVENT CloseEvent;
EFI_CHECK_EVENT CheckEvent;
//
// Protocol Handler Services
//
EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
EFI_HANDLE_PROTOCOL HandleProtocol;
VOID *Reserved;
EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
EFI_LOCATE_HANDLE LocateHandle;
EFI_LOCATE_DEVICE_PATH LocateDevicePath;
EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
//
// Image Services
//
EFI_IMAGE_LOAD LoadImage;
EFI_IMAGE_START StartImage;
EFI_EXIT Exit;
EFI_IMAGE_UNLOAD UnloadImage;
EFI_EXIT_BOOT_SERVICES ExitBootServices;
//
// Miscellaneous Services
//
EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
EFI_STALL Stall;
EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
//
// DriverSupport Services
//
EFI_CONNECT_CONTROLLER ConnectController;
EFI_DISCONNECT_CONTROLLER DisconnectController;
//
// Open and Close Protocol Services
//
EFI_OPEN_PROTOCOL OpenProtocol;
EFI_CLOSE_PROTOCOL CloseProtocol;
EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
//
// Library Services
//
EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
EFI_LOCATE_PROTOCOL LocateProtocol;
EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
//
// 32-bit CRC Services
//
EFI_CALCULATE_CRC32 CalculateCrc32;
//
// Miscellaneous Services
//
EFI_COPY_MEM CopyMem;
EFI_SET_MEM SetMem;
EFI_CREATE_EVENT_EX CreateEventEx;
} EFI_BOOT_SERVICES;
///
/// Contains a set of GUID/pointer pairs comprised of the ConfigurationTable field in the
/// EFI System Table.
///
typedef struct {
///
/// The 128-bit GUID value that uniquely identifies the system configuration table.
///
EFI_GUID VendorGuid;
///
/// A pointer to the table associated with VendorGuid.
///
VOID *VendorTable;
} EFI_CONFIGURATION_TABLE;
///
/// EFI System Table
///
typedef struct {
///
/// The table header for the EFI System Table.
///
EFI_TABLE_HEADER Hdr;
///
/// A pointer to a null terminated string that identifies the vendor
/// that produces the system firmware for the platform.
///
CHAR16 *FirmwareVendor;
///
/// A firmware vendor specific value that identifies the revision
/// of the system firmware for the platform.
///
UINT32 FirmwareRevision;
///
/// The handle for the active console input device. This handle must support
/// EFI_SIMPLE_TEXT_INPUT_PROTOCOL and EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.
///
EFI_HANDLE ConsoleInHandle;
///
/// A pointer to the EFI_SIMPLE_TEXT_INPUT_PROTOCOL interface that is
/// associated with ConsoleInHandle.
///
EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn;
///
/// The handle for the active console output device.
///
EFI_HANDLE ConsoleOutHandle;
///
/// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface
/// that is associated with ConsoleOutHandle.
///
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut;
///
/// The handle for the active standard error console device.
/// This handle must support the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.
///
EFI_HANDLE StandardErrorHandle;
///
/// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface
/// that is associated with StandardErrorHandle.
///
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr;
///
/// A pointer to the EFI Runtime Services Table.
///
EFI_RUNTIME_SERVICES *RuntimeServices;
///
/// A pointer to the EFI Boot Services Table.
///
EFI_BOOT_SERVICES *BootServices;
///
/// The number of system configuration tables in the buffer ConfigurationTable.
///
UINTN NumberOfTableEntries;
///
/// A pointer to the system configuration tables.
/// The number of entries in the table is NumberOfTableEntries.
///
EFI_CONFIGURATION_TABLE *ConfigurationTable;
} EFI_SYSTEM_TABLE;
/**
This is the declaration of an EFI image entry point. This entry point is
the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including
both device drivers and bus drivers.
@param[in] ImageHandle The firmware allocated handle for the UEFI image.
@param[in] SystemTable A pointer to the EFI System Table.
@retval EFI_SUCCESS The operation completed successfully.
@retval Others An unexpected error occurred.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_IMAGE_ENTRY_POINT)(
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
);
//
// EFI Load Option. This data structure describes format of UEFI boot option variables.
//
// NOTE: EFI Load Option is a byte packed buffer of variable length fields.
// The first two fields have fixed length. They are declared as members of the
// EFI_LOAD_OPTION structure. All the other fields are variable length fields.
// They are listed in the comment block below for reference purposes.
//
#pragma pack(1)
typedef struct _EFI_LOAD_OPTION {
///
/// The attributes for this load option entry. All unused bits must be zero
/// and are reserved by the UEFI specification for future growth.
///
UINT32 Attributes;
///
/// Length in bytes of the FilePathList. OptionalData starts at offset
/// sizeof(UINT32) + sizeof(UINT16) + StrSize(Description) + FilePathListLength
/// of the EFI_LOAD_OPTION descriptor.
///
UINT16 FilePathListLength;
///
/// The user readable description for the load option.
/// This field ends with a Null character.
///
// CHAR16 Description[];
///
/// A packed array of UEFI device paths. The first element of the array is a
/// device path that describes the device and location of the Image for this
/// load option. The FilePathList[0] is specific to the device type. Other
/// device paths may optionally exist in the FilePathList, but their usage is
/// OSV specific. Each element in the array is variable length, and ends at
/// the device path end structure. Because the size of Description is
/// arbitrary, this data structure is not guaranteed to be aligned on a
/// natural boundary. This data structure may have to be copied to an aligned
/// natural boundary before it is used.
///
// EFI_DEVICE_PATH_PROTOCOL FilePathList[];
///
/// The remaining bytes in the load option descriptor are a binary data buffer
/// that is passed to the loaded image. If the field is zero bytes long, a
/// NULL pointer is passed to the loaded image. The number of bytes in
/// OptionalData can be computed by subtracting the starting offset of
/// OptionalData from total size in bytes of the EFI_LOAD_OPTION.
///
// UINT8 OptionalData[];
} EFI_LOAD_OPTION;
#pragma pack()
//
// EFI Load Options Attributes
//
#define LOAD_OPTION_ACTIVE 0x00000001
#define LOAD_OPTION_FORCE_RECONNECT 0x00000002
#define LOAD_OPTION_HIDDEN 0x00000008
#define LOAD_OPTION_CATEGORY 0x00001F00
#define LOAD_OPTION_CATEGORY_BOOT 0x00000000
#define LOAD_OPTION_CATEGORY_APP 0x00000100
#define EFI_BOOT_OPTION_SUPPORT_KEY 0x00000001
#define EFI_BOOT_OPTION_SUPPORT_APP 0x00000002
#define EFI_BOOT_OPTION_SUPPORT_SYSPREP 0x00000010
#define EFI_BOOT_OPTION_SUPPORT_COUNT 0x00000300
///
/// EFI Boot Key Data
///
typedef union {
struct {
///
/// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0.
///
UINT32 Revision : 8;
///
/// Either the left or right Shift keys must be pressed (1) or must not be pressed (0).
///
UINT32 ShiftPressed : 1;
///
/// Either the left or right Control keys must be pressed (1) or must not be pressed (0).
///
UINT32 ControlPressed : 1;
///
/// Either the left or right Alt keys must be pressed (1) or must not be pressed (0).
///
UINT32 AltPressed : 1;
///
/// Either the left or right Logo keys must be pressed (1) or must not be pressed (0).
///
UINT32 LogoPressed : 1;
///
/// The Menu key must be pressed (1) or must not be pressed (0).
///
UINT32 MenuPressed : 1;
///
/// The SysReq key must be pressed (1) or must not be pressed (0).
///
UINT32 SysReqPressed : 1;
UINT32 Reserved : 16;
///
/// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If
/// zero, then only the shift state is considered. If more than one, then the boot option will
/// only be launched if all of the specified keys are pressed with the same shift state.
///
UINT32 InputKeyCount : 2;
} Options;
UINT32 PackedValue;
} EFI_BOOT_KEY_DATA;
///
/// EFI Key Option.
///
#pragma pack(1)
typedef struct {
///
/// Specifies options about how the key will be processed.
///
EFI_BOOT_KEY_DATA KeyData;
///
/// The CRC-32 which should match the CRC-32 of the entire EFI_LOAD_OPTION to
/// which BootOption refers. If the CRC-32s do not match this value, then this key
/// option is ignored.
///
UINT32 BootOptionCrc;
///
/// The Boot#### option which will be invoked if this key is pressed and the boot option
/// is active (LOAD_OPTION_ACTIVE is set).
///
UINT16 BootOption;
///
/// The key codes to compare against those returned by the
/// EFI_SIMPLE_TEXT_INPUT and EFI_SIMPLE_TEXT_INPUT_EX protocols.
/// The number of key codes (0-3) is specified by the EFI_KEY_CODE_COUNT field in KeyOptions.
///
//EFI_INPUT_KEY Keys[];
} EFI_KEY_OPTION;
#pragma pack()
//
// EFI File location to boot from on removable media devices
//
#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI"
#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI"
#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI"
#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI"
#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64 L"\\EFI\\BOOT\\BOOTRISCV64.EFI"
#if defined (MDE_CPU_IA32)
#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA32
-#elif defined (MDE_CPU_IPF)
- #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA64
#elif defined (MDE_CPU_X64)
#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_X64
#elif defined (MDE_CPU_EBC)
#elif defined (MDE_CPU_ARM)
#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_ARM
#elif defined (MDE_CPU_AARCH64)
#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64
+#elif defined (MDE_CPU_RISCV64)
+ #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64
#else
#error Unknown Processor Type
#endif
+
+//
+// The directory within the active EFI System Partition defined for delivery of capsule to firmware
+//
+#define EFI_CAPSULE_FILE_DIRECTORY L"\\EFI\\UpdateCapsule\\"
#include
#include
#include
#endif
Property changes on: head/sys/contrib/edk2/Include/Uefi/UefiSpec.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/ipfw/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/release-pkg/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r274131-298104
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r295193
Merged /projects/bectl/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r336666-337662
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r356848-358850
Merged /projects/vnet/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r295220
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r283596-287505
Merged /projects/openssl111/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r339079
Merged /projects/building-blocks/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/clang600-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r326936-327339,327341-327933
Merged /projects/clang500-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r316992-321352
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r303899-303984
Merged /projects/clang900-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r311132-314524
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r233621
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r303380
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r1540-186085
Merged /projects/clang350-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r274961-275126,275128-275133,275135-276476
Merged /projects/clang360-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r277327-280030
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/clang370-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r287506-288928
Merged /projects/pms/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r285199-285661
Merged /projects/clang380-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r292913-296412
Merged /projects/clang391-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r309166-310192
Merged /projects/clang390-import/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r303250-308866,308868-309123
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r291879-295379
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r266519,269993
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r230929-231848
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r262258-262612
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r291227-291228,292618
Merged /projects/pf/head/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r263908
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r289470-289489
Merged /projects/collation/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r286424-290491
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r298865-299093
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/release-embedded/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/release-arm64/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r281786,281788,281792
Merged /projects/largeSMP/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r221273-222812,222815-223757
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r276164,276167,276170-276172
Merged /vendor/edk2/dist/MdePkg/Include/Uefi/UefiSpec.h:r361765
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r301868
Merged /projects/quota64/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r184125-207707
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r262185-262527
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r286179-290100
Merged /projects/fuse2/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r344558-350621,350944,350955
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r303985-305318
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Uefi/UefiSpec.h:r260687-261245
Index: head/sys/contrib/edk2/Include/Uefi.h
===================================================================
--- head/sys/contrib/edk2/Include/Uefi.h (revision 361801)
+++ head/sys/contrib/edk2/Include/Uefi.h (revision 361802)
@@ -1,27 +1,21 @@
/** @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.
+ 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.
-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.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __PI_UEFI_H__
#define __PI_UEFI_H__
#include
#include
#endif
Property changes on: head/sys/contrib/edk2/Include/Uefi.h
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/Include/Uefi.h:r295193
Merged /projects/cxl_iscsi/sys/contrib/edk2/Include/Uefi.h:r291227-291228,292618
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/Include/Uefi.h:r281754
Merged /user/ngie/bug203673/sys/contrib/edk2/Include/Uefi.h:r289470-289489
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/Include/Uefi.h:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/Include/Uefi.h:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/Include/Uefi.h:r319973-326168
Merged /user/ngie/more-tests/sys/contrib/edk2/Include/Uefi.h:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/Include/Uefi.h:r263908
Merged /projects/release-arm-redux/sys/contrib/edk2/Include/Uefi.h:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/clang-trunk/sys/contrib/edk2/Include/Uefi.h:r283596-287505
Merged /projects/building-blocks/sys/contrib/edk2/Include/Uefi.h:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /vendor/edk2/dist/MdePkg/Include/Uefi.h:r361765
Merged /user/ngie/socket-tests/sys/contrib/edk2/Include/Uefi.h:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/clang350-import/sys/contrib/edk2/Include/Uefi.h:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/Include/Uefi.h:r1540-186085
Merged /projects/clang370-import/sys/contrib/edk2/Include/Uefi.h:r287506-288928
Merged /projects/elftoolchain/sys/contrib/edk2/Include/Uefi.h:r260687-261245
Merged /projects/quota64/sys/contrib/edk2/Include/Uefi.h:r184125-207707
Merged /projects/clang391-import/sys/contrib/edk2/Include/Uefi.h:r309166-310192
Merged /projects/clang390-import/sys/contrib/edk2/Include/Uefi.h:r303250-308866,308868-309123
Merged /projects/ipfw/sys/contrib/edk2/Include/Uefi.h:r267383-272837
Merged /user/ngie/more-tests2/sys/contrib/edk2/Include/Uefi.h:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /user/ngie/make_check/sys/contrib/edk2/Include/Uefi.h:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/Include/Uefi.h:r286179-290100
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/Include/Uefi.h:r312125-313435
Merged /projects/vnet/sys/contrib/edk2/Include/Uefi.h:r295220
Merged /projects/clang1000-import/sys/contrib/edk2/Include/Uefi.h:r356848-358850
Merged /projects/clang-sparc64/sys/contrib/edk2/Include/Uefi.h:r262258-262612
Merged /projects/release-embedded/sys/contrib/edk2/Include/Uefi.h:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/bectl/sys/contrib/edk2/Include/Uefi.h:r336666-337662
Merged /projects/openssl111/sys/contrib/edk2/Include/Uefi.h:r339079
Merged /projects/largeSMP/sys/contrib/edk2/Include/Uefi.h:r221273-222812,222815-223757
Merged /projects/release-pkg/sys/contrib/edk2/Include/Uefi.h:r274131-298104
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/Include/Uefi.h:r298865-299093
Merged /projects/collation/sys/contrib/edk2/Include/Uefi.h:r286424-290491
Merged /projects/head_mfi/sys/contrib/edk2/Include/Uefi.h:r233621
Merged /projects/release-arm64/sys/contrib/edk2/Include/Uefi.h:r281786,281788,281792
Merged /vendor/device-tree/dist/sys/contrib/edk2/Include/Uefi.h:r303380
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/Include/Uefi.h:r276164,276167,276170-276172
Merged /projects/lldb-r201577/sys/contrib/edk2/Include/Uefi.h:r262185-262527
Merged /projects/clang900-import/sys/contrib/edk2/Include/Uefi.h:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/Include/Uefi.h:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/Include/Uefi.h:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/Include/Uefi.h:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/Include/Uefi.h:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/Include/Uefi.h:r326936-327339,327341-327933
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/Include/Uefi.h:r301868
Merged /projects/clang360-import/sys/contrib/edk2/Include/Uefi.h:r277327-280030
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/Include/Uefi.h:r303985-305318
Merged /projects/multi-fibv6/head/sys/contrib/edk2/Include/Uefi.h:r230929-231848
Merged /projects/clang380-import/sys/contrib/edk2/Include/Uefi.h:r292913-296412
Merged /projects/pms/sys/contrib/edk2/Include/Uefi.h:r285199-285661
Merged /projects/zfsd/head/sys/contrib/edk2/Include/Uefi.h:r266519,269993
Merged /projects/fuse2/sys/contrib/edk2/Include/Uefi.h:r344558-350621,350944,350955
Merged /projects/random_number_generator/sys/contrib/edk2/Include/Uefi.h:r254613-256243
Index: head/sys/contrib/edk2/MdePkg.dec
===================================================================
--- head/sys/contrib/edk2/MdePkg.dec (revision 361801)
+++ head/sys/contrib/edk2/MdePkg.dec (revision 361802)
@@ -1,2140 +1,2340 @@
## @file MdePkg.dec
# This Package provides all definitions, library classes and libraries instances.
#
# It also provides the definitions(including PPIs/PROTOCOLs/GUIDs) of
-# EFI1.10/UEFI2.6/PI1.4 and some Industry Standards.
+# EFI1.10/UEFI2.7/PI1.7 and some Industry Standards.
#
-# Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.
+# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.
# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
-# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
+# (C) Copyright 2016 - 2020 Hewlett Packard Enterprise Development LP
#
-# 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
+# SPDX-License-Identifier: BSD-2-Clause-Patent
#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
##
[Defines]
DEC_SPECIFICATION = 0x00010005
PACKAGE_NAME = MdePkg
PACKAGE_UNI_FILE = MdePkg.uni
PACKAGE_GUID = 1E73767F-8F52-4603-AEB4-F29B510B6766
- PACKAGE_VERSION = 1.06
+ PACKAGE_VERSION = 1.08
[Includes]
Include
[Includes.IA32]
Include/Ia32
[Includes.X64]
Include/X64
-[Includes.IPF]
- Include/Ipf
-
[Includes.EBC]
Include/Ebc
[Includes.ARM]
Include/Arm
[Includes.AARCH64]
Include/AArch64
+[Includes.RISCV64]
+ Include/RiscV64
+
[LibraryClasses]
## @libraryclass Provides most usb APIs to support the Hid requests defined in Usb Hid 1.1 spec
# and the standard requests defined in Usb 1.1 spec.
##
UefiUsbLib|Include/Library/UefiUsbLib.h
## @libraryclass Provides a service to retrieve a pointer to the EFI Runtime Services Table.
# Only available to DXE and UEFI module types.
UefiRuntimeServicesTableLib|Include/Library/UefiRuntimeServicesTableLib.h
## @libraryclass Provides library functions for each of the UEFI Runtime Services.
# Only available to DXE and UEFI module types.
UefiRuntimeLib|Include/Library/UefiRuntimeLib.h
## @libraryclass Provides library functions for common UEFI operations.
# Only available to DXE and UEFI module types.
##
UefiLib|Include/Library/UefiLib.h
## @libraryclass Module entry point library for UEFI drivers, DXE Drivers, DXE SMM Driver and DXE Runtime Drivers
UefiDriverEntryPoint|Include/Library/UefiDriverEntryPoint.h
## @libraryclass UEFI Decompress Library Functions defintion for UEFI compress algorithm.
UefiDecompressLib|Include/Library/UefiDecompressLib.h
## @libraryclass Provides a service to retrieve a pointer to the EFI Boot Services Table.
# Only available to DXE and UEFI module types.
UefiBootServicesTableLib|Include/Library/UefiBootServicesTableLib.h
## @libraryclass Module entry point library for UEFI Applications.
UefiApplicationEntryPoint|Include/Library/UefiApplicationEntryPoint.h
## @libraryclass Provides calibrated delay and performance counter services.
TimerLib|Include/Library/TimerLib.h
## @libraryclass Provides library functions to access SMBUS devices.
# Libraries of this class must be ported to a specific SMBUS controller.
SmbusLib|Include/Library/SmbusLib.h
## @libraryclass Provides the functions to submit Scsi commands defined in SCSI-2 specification for scsi device.
UefiScsiLib|Include/Library/UefiScsiLib.h
## @libraryclass Provides a service to publish discovered system resources.
ResourcePublicationLib|Include/Library/ResourcePublicationLib.h
## @libraryclass Provides services to log status code records.
ReportStatusCodeLib|Include/Library/ReportStatusCodeLib.h
## @libraryclass Provides services to print a formatted string to a buffer.
# All combinations of Unicode and ASCII strings are supported.
##
PrintLib|Include/Library/PrintLib.h
## @libraryclass Provides an ordered collection data structure.
OrderedCollectionLib|Include/Library/OrderedCollectionLib.h
## @libraryclass Provides services to send progress/error codes to a POST card.
PostCodeLib|Include/Library/PostCodeLib.h
## @libraryclass Provides services to log the execution times and retrieve them later.
PerformanceLib|Include/Library/PerformanceLib.h
## @libraryclass Provides a service to retrieve a pointer to the PEI Services Table.
PeiServicesTablePointerLib|Include/Library/PeiServicesTablePointerLib.h
## @libraryclass Provides library functions for all PEI Services.
PeiServicesLib|Include/Library/PeiServicesLib.h
## @libraryclass Module entry point library for PEIM.
PeimEntryPoint|Include/Library/PeimEntryPoint.h
## @libraryclass Module entry point library for PEI core.
PeiCoreEntryPoint|Include/Library/PeiCoreEntryPoint.h
## @libraryclass Provides services to load and relocate a PE/COFF image.
PeCoffLib|Include/Library/PeCoffLib.h
## @libraryclass Provides extra action services for unloading and relocating a PE/COFF image on some specific platform such
## as NT32 emulator.
PeCoffExtraActionLib|Include/Library/PeCoffExtraActionLib.h
## @libraryclass Provides a service to retrieve the PE/COFF entry point from a PE/COFF image.
PeCoffGetEntryPointLib|Include/Library/PeCoffGetEntryPointLib.h
+ ## @libraryclass Provides services to return the PCI segment information.
+ PciSegmentInfoLib|Include/Library/PciSegmentInfoLib.h
+
## @libraryclass Provides services to access PCI Configuration Space on a platform with multiple PCI segments.
PciSegmentLib|Include/Library/PciSegmentLib.h
+ ## @libraryclass The multiple segments PCI configuration Library Services that carry out
+ ## PCI configuration and enable the PCI operations to be replayed during an
+ ## S3 resume. This library class maps directly on top of the PciSegmentLib class.
+ S3PciSegmentLib|Include/Library/S3PciSegmentLib.h
+
## @libraryclass Provides services to access PCI Configuration Space.
PciLib|Include/Library/PciLib.h
## @libraryclass Provides services to access PCI Configuration Space using the MMIO PCI Express window.
PciExpressLib|Include/Library/PciExpressLib.h
## @libraryclass Provides services to access PCI Configuration Space using the I/O ports 0xCF8 and 0xCFC.
PciCf8Lib|Include/Library/PciCf8Lib.h
## @libraryclass Provides library services to get and set Platform Configuration Database entries.
PcdLib|Include/Library/PcdLib.h
## @libraryclass Provides services to allocate and free memory buffers of various memory types and alignments.
MemoryAllocationLib|Include/Library/MemoryAllocationLib.h
## @libraryclass Provide services to access I/O Ports and MMIO registers.
IoLib|Include/Library/IoLib.h
## @libraryclass Provide services to create, get and update HSTI table in AIP protocol.
HstiLib|Include/Library/HstiLib.h
## @libraryclass Provides services to create and parse HOBs. Only available for PEI and DXE module types.
HobLib|Include/Library/HobLib.h
## @libraryclass Provides a service to retrieve a pointer to the DXE Services Table.
# Only available to DXE module types.
##
DxeServicesTableLib|Include/Library/DxeServicesTableLib.h
## @libraryclass Module entry point library for DXE core.
DxeCoreEntryPoint|Include/Library/DxeCoreEntryPoint.h
## @libraryclass Provides library functions to construct and parse UEFI Device Paths.
DevicePathLib|Include/Library/DevicePathLib.h
## @libraryclass Provides services to print debug and assert messages to a debug output device.
DebugLib|Include/Library/DebugLib.h
## @libraryclass Provides CPU architecture specific functions that can not be defined in the Base Library
# due to dependencies on the PAL Library
##
CpuLib|Include/Library/CpuLib.h
## @libraryclass Provides services to maintain instruction and data caches.
CacheMaintenanceLib|Include/Library/CacheMaintenanceLib.h
## @libraryclass Provides copy memory, fill memory, zero memory, and GUID functions.
BaseMemoryLib|Include/Library/BaseMemoryLib.h
## @libraryclass Provides string functions, linked list functions, math functions, synchronization functions
# and CPU architecture specific functions.
##
BaseLib|Include/Library/BaseLib.h
## @libraryclass This library provides common functions to process the different guided section data.
ExtractGuidedSectionLib|Include/Library/ExtractGuidedSectionLib.h
## @libraryclass Provides three common serial I/O port functions.
SerialPortLib|Include/Library/SerialPortLib.h
## @libraryclass Provides a set of PI library functions and macros for DXE phase.
DxeServicesLib|Include/Library/DxeServicesLib.h
## @libraryclass Provides synchronization functions.
##
SynchronizationLib|Include/Library/SynchronizationLib.h
## @libraryclass Defines library APIs used by modules to save S3 Boot
# Script Opcodes. These OpCode will be restored by S3
# related modules.
S3BootScriptLib|Include/Library/S3BootScriptLib.h
## @libraryclass I/O and MMIO Library Services that do I/O and also enable
# the I/O operatation to be replayed during an S3 resume.
# This library class maps directly on top of the IoLib class.
S3IoLib|Include/Library/S3IoLib.h
## @libraryclass PCI configuration Library Services that do PCI configuration
# and also enable the PCI operations to be replayed during an
# S3 resume. This library class maps directly on top of the
# PciLib class.
S3PciLib|Include/Library/S3PciLib.h
## @libraryclass Smbus Library Services that do SMBus transactions and also
# enable the operatation to be replayed during an S3 resume.
# This library class maps directly on top of the SmbusLib class.
S3SmbusLib|Include/Library/S3SmbusLib.h
## @libraryclass Stall Services that do stall and also enable the Stall
# operatation to be replayed during an S3 resume. This
# library class maps directly on top of the Timer class.
S3StallLib|Include/Library/S3StallLib.h
## @libraryclass Defines library APIs used by modules to get/set print error level.
DebugPrintErrorLevelLib|Include/Library/DebugPrintErrorLevelLib.h
## @libraryclass provides EFI_FILE_HANDLE services
FileHandleLib|Include/Library/FileHandleLib.h
+ ## @libraryclass provides helper functions to prevent integer overflow during
+ # type conversion, addition, subtraction, and multiplication.
+ ##
+ SafeIntLib|Include/Library/SafeIntLib.h
+
+ ## @libraryclass Provides a service to retrieve a pointer to the Standalone MM Services Table.
+ # Only available to MM_STANDALONE, SMM/DXE Combined and SMM module types.
+ MmServicesTableLib|Include/Library/MmServicesTableLib.h
+
+ ## @libraryclass Module entry point library for standalone MM drivers.
+ StandaloneMmDriverEntryPoint|Include/Library/StandaloneMmDriverEntryPoint.h
+
+ ## @libraryclass Provides a unit test framework
+ #
+ UnitTestLib|Include/Library/UnitTestLib.h
+
[LibraryClasses.IA32, LibraryClasses.X64]
## @libraryclass Abstracts both S/W SMI generation and detection.
##
SmmLib|Include/Library/SmmLib.h
## @libraryclass Provides a service to retrieve a pointer to the SMM Services Table.
# Only available to SMM/DXE Combined and SMM module types.
SmmServicesTableLib|Include/Library/SmmServicesTableLib.h
## @libraryclass Provides services for Smm Memory Operation.
#
SmmMemLib|Include/Library/SmmMemLib.h
+ ## @libraryclass Provides services for Smm IO Operation.
+ #
+ SmmIoLib|Include/Library/SmmIoLib.h
+
## @libraryclass Provides services to enable/disable periodic SMI handlers.
#
SmmPeriodicSmiLib|Include/Library/SmmPeriodicSmiLib.h
## @libraryclass Provides services to generate random number.
#
RngLib|Include/Library/RngLib.h
## @libraryclass Provides services to log the SMI handler registration.
SmiHandlerProfileLib|Include/Library/SmiHandlerProfileLib.h
-[LibraryClasses.IPF]
- ## @libraryclass The SAL Library provides a service to make a SAL CALL.
- SalLib|Include/Library/SalLib.h
-
- ## @libraryclass Provides library services to make PAL Calls.
- PalLib|Include/Library/PalLib.h
-
- ## @libraryclass Provides library services to make Extended SAL Calls.
- ExtendedSalLib|Include/Library/ExtendedSalLib.h
-
[Guids]
#
# GUID defined in UEFI2.1/UEFI2.0/EFI1.1
#
## Include/Guid/GlobalVariable.h
gEfiGlobalVariableGuid = { 0x8BE4DF61, 0x93CA, 0x11D2, { 0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C }}
## Include/Guid/PcAnsi.h
gEfiVT100PlusGuid = { 0x7BAEC70B, 0x57E0, 0x4C76, { 0x8E, 0x87, 0x2F, 0x9E, 0x28, 0x08, 0x83, 0x43 }}
## Include/Guid/PcAnsi.h
gEfiVT100Guid = { 0xDFA66065, 0xB419, 0x11D3, { 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Guid/PcAnsi.h
gEfiPcAnsiGuid = { 0xE0C14753, 0xF9BE, 0x11D2, { 0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Guid/PcAnsi.h
gEfiVTUTF8Guid = { 0xAD15A0D6, 0x8BEC, 0x4ACF, { 0xA0, 0x73, 0xD0, 0x1D, 0xE7, 0x7E, 0x2D, 0x88 }}
## Include/Guid/PcAnsi.h
gEfiUartDevicePathGuid = { 0x37499a9d, 0x542f, 0x4c89, { 0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 0xe4 }}
## Include/Guid/PcAnsi.h
gEfiSasDevicePathGuid = { 0xd487ddb4, 0x008b, 0x11d9, { 0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d }}
## Include/Guid/Gpt.h
gEfiPartTypeLegacyMbrGuid = { 0x024DEE41, 0x33E7, 0x11D3, { 0x9D, 0x69, 0x00, 0x08, 0xC7, 0x81, 0xF3, 0x9F }}
## Include/Guid/Gpt.h
gEfiPartTypeSystemPartGuid = { 0xC12A7328, 0xF81F, 0x11D2, { 0xBA, 0x4B, 0x00, 0xA0, 0xC9, 0x3E, 0xC9, 0x3B }}
## Include/Guid/Gpt.h
gEfiPartTypeUnusedGuid = { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}
## Include/Guid/DebugImageInfoTable.h
gEfiDebugImageInfoTableGuid = { 0x49152E77, 0x1ADA, 0x4764, { 0xB7, 0xA2, 0x7A, 0xFE, 0xFE, 0xD9, 0x5E, 0x8B }}
## Include/Guid/Acpi.h
gEfiAcpiTableGuid = { 0x8868E871, 0xE4F1, 0x11D3, { 0xBC, 0x22, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
## Include/Guid/Acpi.h
gEfiAcpi20TableGuid = { 0x8868E871, 0xE4F1, 0x11D3, { 0xBC, 0x22, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
## Include/Guid/Acpi.h
gEfiAcpi10TableGuid = { 0xEB9D2D30, 0x2D88, 0x11D3, { 0x9A, 0x16, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Guid/SmBios.h
gEfiSmbiosTableGuid = { 0xEB9D2D31, 0x2D88, 0x11D3, { 0x9A, 0x16, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Guid/Mps.h
gEfiMpsTableGuid = { 0xEB9D2D2F, 0x2D88, 0x11D3, { 0x9A, 0x16, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
- ## Include/Guid/SalSystemTable.h
- gEfiSalSystemTableGuid = { 0xEB9D2D32, 0x2D88, 0x11D3, { 0x9A, 0x16, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
-
## Include/Protocol/AuthenticationInfo.h
gEfiAuthenticationChapLocalGuid = { 0xC280C73E, 0x15CA, 0x11DA, { 0xB0, 0xCA, 0x00, 0x10, 0x83, 0xFF, 0xCA, 0x4D }}
## Include/Protocol/AuthenticationInfo.h
gEfiAuthenticationChapRadiusGuid = { 0xD6062B50, 0x15CA, 0x11DA, { 0x92, 0x19, 0x00, 0x10, 0x83, 0xFF, 0xCA, 0x4D }}
## Include/Guid/FileSystemVolumeLabelInfo.h
gEfiFileSystemVolumeLabelInfoIdGuid = { 0xDB47D7D3, 0xFE81, 0x11D3, { 0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Guid/FileSystemInfo.h
gEfiFileSystemInfoGuid = { 0x09576E93, 0x6D3F, 0x11D2, { 0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Guid/FileInfo.h
gEfiFileInfoGuid = { 0x09576E92, 0x6D3F, 0x11D2, { 0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/Bis.h
gBootObjectAuthorizationParmsetGuid = { 0xEDD35E31, 0x07B9, 0x11D2, { 0x83, 0xA3, 0x00, 0xA0, 0xC9, 0x1F, 0xAD, 0xCF }}
## Include/Protocol/PlatformToDriverConfiguration.h
gEfiPlatformToDriverConfigurationClpGuid = { 0x345ecc0e, 0xcb6, 0x4b75, { 0xbb, 0x57, 0x1b, 0x12, 0x9c, 0x47, 0x33,0x3e }}
## Include/Guid/HiiKeyBoardLayout.h
gEfiHiiKeyBoardLayoutGuid = { 0x14982a4f, 0xb0ed, 0x45b8, { 0xa8, 0x11, 0x5a, 0x7a, 0x9b, 0xc2, 0x32, 0xdf }}
## Include/Protocol/Hash.h
gEfiHashAlgorithmMD5Guid = { 0x0AF7C79C, 0x65B5, 0x4319, { 0xB0, 0xAE, 0x44, 0xEC, 0x48, 0x4E, 0x4A, 0xD7 }}
## Include/Protocol/Hash.h
gEfiHashAlgorithmSha512Guid = { 0xCAA4381E, 0x750C, 0x4770, { 0xB8, 0x70, 0x7A, 0x23, 0xB4, 0xE4, 0x21, 0x30 }}
## Include/Protocol/Hash.h
gEfiHashAlgorithmSha384Guid = { 0xEFA96432, 0xDE33, 0x4DD2, { 0xAE, 0xE6, 0x32, 0x8C, 0x33, 0xDF, 0x77, 0x7A }}
## Include/Protocol/Hash.h
gEfiHashAlgorithmSha256Guid = { 0x51AA59DE, 0xFDF2, 0x4EA3, { 0xBC, 0x63, 0x87, 0x5F, 0xB7, 0x84, 0x2E, 0xE9 }}
## Include/Protocol/Hash.h
gEfiHashAlgorithmSha224Guid = { 0x8DF01A06, 0x9BD5, 0x4BF7, { 0xB0, 0x21, 0xDB, 0x4F, 0xD9, 0xCC, 0xF4, 0x5B }}
## Include/Protocol/Hash.h
gEfiHashAlgorithmSha1Guid = { 0x2AE9D80F, 0x3FB2, 0x4095, { 0xB7, 0xB1, 0xE9, 0x31, 0x57, 0xB9, 0x46, 0xB6 }}
## Include/Guid/EventGroup.h
gEfiEventReadyToBootGuid = { 0x7CE88FB3, 0x4BD7, 0x4679, { 0x87, 0xA8, 0xA8, 0xD8, 0xDE, 0xE5, 0x0D, 0x2B }}
## Include/Guid/EventGroup.h
gEfiEventMemoryMapChangeGuid = { 0x78BEE926, 0x692F, 0x48FD, { 0x9E, 0xDB, 0x01, 0x42, 0x2E, 0xF0, 0xD7, 0xAB }}
## Include/Guid/EventGroup.h
gEfiEventVirtualAddressChangeGuid = { 0x13FA7698, 0xC831, 0x49C7, { 0x87, 0xEA, 0x8F, 0x43, 0xFC, 0xC2, 0x51, 0x96 }}
## Include/Guid/EventGroup.h
gEfiEventExitBootServicesGuid = { 0x27ABF055, 0xB1B8, 0x4C26, { 0x80, 0x48, 0x74, 0x8F, 0x37, 0xBA, 0xA2, 0xDF }}
## Include/Protocol/DebugPort.h
gEfiDebugPortVariableGuid = { 0xEBA4E8D2, 0x3858, 0x41EC, { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 }}
## Include/Protocol/DebugPort.h
gEfiDebugPortDevicePathGuid = { 0xEBA4E8D2, 0x3858, 0x41EC, { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 }}
## Include/Guid/HiiPlatformSetupFormset.h
gEfiHiiPlatformSetupFormsetGuid = { 0x93039971, 0x8545, 0x4b04, { 0xb4, 0x5e, 0x32, 0xeb, 0x83, 0x26, 0x04, 0x0e }}
## Include/Guid/HiiPlatformSetupFormset.h
gEfiHiiDriverHealthFormsetGuid = { 0xf22fc20c, 0x8cf4, 0x45eb, { 0x8e, 0x6, 0xad, 0x4e, 0x50, 0xb9, 0x5d, 0xd3 }}
## Include/Guid/HiiPlatformSetupFormset.h
gEfiHiiUserCredentialFormsetGuid = { 0x337f4407, 0x5aee, 0x4b83, { 0xb2, 0xa7, 0x4e, 0xad, 0xca, 0x30, 0x88, 0xcd }}
## Include/Guid/HiiFormMapMethodGuid.h
gEfiHiiStandardFormGuid = { 0x3bd2f4ec, 0xe524, 0x46e4, { 0xa9, 0xd8, 0x51, 0x1, 0x17, 0x42, 0x55, 0x62 }}
## Include/Guid/MemoryOverwriteControl.h
gEfiMemoryOverwriteControlDataGuid = { 0xe20939be, 0x32d4, 0x41be, {0xa1, 0x50, 0x89, 0x7f, 0x85, 0xd4, 0x98, 0x29 }}
## Include/IndustryStandard/MemoryOverwriteRequestControlLock.h
gEfiMemoryOverwriteRequestControlLockGuid = { 0xBB983CCF, 0x151D, 0x40E1, {0xA0, 0x7B, 0x4A, 0x17, 0xBE, 0x16, 0x82, 0x92}}
## Include/Guid/WinCertificate.h
gEfiCertTypeRsa2048Sha256Guid = { 0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf }}
## Include/Guid/Cper.h
gEfiEventNotificationTypeCmcGuid = { 0x2DCE8BB1, 0xBDD7, 0x450e, { 0xB9, 0xAD, 0x9C, 0xF4, 0xEB, 0xD4, 0xF8, 0x90 }}
## Include/Guid/Cper.h
gEfiEventNotificationTypeCpeGuid = { 0x4E292F96, 0xD843, 0x4a55, { 0xA8, 0xC2, 0xD4, 0x81, 0xF2, 0x7E, 0xBE, 0xEE }}
## Include/Guid/Cper.h
gEfiEventNotificationTypeMceGuid = { 0xE8F56FFE, 0x919C, 0x4cc5, { 0xBA, 0x88, 0x65, 0xAB, 0xE1, 0x49, 0x13, 0xBB }}
## Include/Guid/Cper.h
gEfiEventNotificationTypePcieGuid = { 0xCF93C01F, 0x1A16, 0x4dfc, { 0xB8, 0xBC, 0x9C, 0x4D, 0xAF, 0x67, 0xC1, 0x04 }}
## Include/Guid/Cper.h
gEfiEventNotificationTypeInitGuid = { 0xCC5263E8, 0x9308, 0x454a, { 0x89, 0xD0, 0x34, 0x0B, 0xD3, 0x9B, 0xC9, 0x8E }}
## Include/Guid/Cper.h
gEfiEventNotificationTypeNmiGuid = { 0x5BAD89FF, 0xB7E6, 0x42c9, { 0x81, 0x4A, 0xCF, 0x24, 0x85, 0xD6, 0xE9, 0x8A }}
## Include/Guid/Cper.h
gEfiEventNotificationTypeBootGuid = { 0x3D61A466, 0xAB40, 0x409a, { 0xA6, 0x98, 0xF3, 0x62, 0xD4, 0x64, 0xB3, 0x8F }}
## Include/Guid/Cper.h
gEfiEventNotificationTypeDmarGuid = { 0x667DD791, 0xC6B3, 0x4c27, { 0x8A, 0x6B, 0x0F, 0x8E, 0x72, 0x2D, 0xEB, 0x41 }}
## Include/Guid/Cper.h
+ gEfiEventNotificationTypeSeaGuid = { 0x9A78788A, 0xBBE8, 0x11E4, { 0x80, 0x9E, 0x67, 0x61, 0x1E, 0x5D, 0x46, 0xB0 }}
+
+ ## Include/Guid/Cper.h
+ gEfiEventNotificationTypeSeiGuid = { 0x5C284C81, 0xB0AE, 0x4E87, { 0xA3, 0x22, 0xB0, 0x4C, 0x85, 0x62, 0x43, 0x23 }}
+
+ ## Include/Guid/Cper.h
+ gEfiEventNotificationTypePeiGuid = { 0x09A9D5AC, 0x5204, 0x4214, { 0x96, 0xE5, 0x94, 0x99, 0x2E, 0x75, 0x2B, 0xCD }}
+
+ ## Include/Guid/Cper.h
gEfiProcessorGenericErrorSectionGuid = { 0x9876ccad, 0x47b4, 0x4bdb, { 0xb6, 0x5e, 0x16, 0xf1, 0x93, 0xc4, 0xf3, 0xdb }}
## Include/Guid/Cper.h
gEfiProcessorSpecificErrorSectionGuid = { 0xdc3ea0b0, 0xa144, 0x4797, { 0xb9, 0x5b, 0x53, 0xfa, 0x24, 0x2b, 0x6e, 0x1d }}
## Include/Guid/Cper.h
gEfiIa32X64ProcessorErrorSectionGuid = { 0xdc3ea0b0, 0xa144, 0x4797, { 0xb9, 0x5b, 0x53, 0xfa, 0x24, 0x2b, 0x6e, 0x1d }}
## Include/Guid/Cper.h
gEfiPlatformMemoryErrorSectionGuid = { 0xa5bc1114, 0x6f64, 0x4ede, { 0xb8, 0x63, 0x3e, 0x83, 0xed, 0x7c, 0x83, 0xb1 }}
## Include/Guid/Cper.h
gEfiPcieErrorSectionGuid = { 0xd995e954, 0xbbc1, 0x430f, { 0xad, 0x91, 0xb4, 0x4d, 0xcb, 0x3c, 0x6f, 0x35 }}
## Include/Guid/Cper.h
gEfiFirmwareErrorSectionGuid = { 0x81212a96, 0x09ed, 0x4996, { 0x94, 0x71, 0x8d, 0x72, 0x9c, 0x8e, 0x69, 0xed }}
## Include/Guid/Cper.h
gEfiPciBusErrorSectionGuid = { 0xc5753963, 0x3b84, 0x4095, { 0xbf, 0x78, 0xed, 0xda, 0xd3, 0xf9, 0xc9, 0xdd }}
## Include/Guid/Cper.h
gEfiPciDevErrorSectionGuid = { 0xeb5e4685, 0xca66, 0x4769, { 0xb6, 0xa2, 0x26, 0x06, 0x8b, 0x00, 0x13, 0x26 }}
## Include/Guid/Cper.h
gEfiDMArGenericErrorSectionGuid = { 0x5b51fef7, 0xc79d, 0x4434, { 0x8f, 0x1b, 0xaa, 0x62, 0xde, 0x3e, 0x2c, 0x64 }}
## Include/Guid/Cper.h
gEfiDirectedIoDMArErrorSectionGuid = { 0x71761d37, 0x32b2, 0x45cd, { 0xa7, 0xd0, 0xb0, 0xfe, 0xdd, 0x93, 0xe8, 0xcf }}
## Include/Guid/Cper.h
gEfiIommuDMArErrorSectionGuid = { 0x036f84e1, 0x7f37, 0x428c, { 0xa7, 0x9e, 0x57, 0x5f, 0xdf, 0xaa, 0x84, 0xec }}
#
# GUID defined in UEFI2.2
#
## Include/Protocol/UserManager.h
gEfiEventUserProfileChangedGuid = { 0xbaf1e6de, 0x209e, 0x4adb, {0x8d, 0x96, 0xfd, 0x8b, 0x71, 0xf3, 0xf6, 0x83 }}
## Include/Protocol/UserManager.h
gEfiUserCredentialClassUnknownGuid = { 0x5cf32e68, 0x7660, 0x449b, { 0x80, 0xe6, 0x7e, 0xa3, 0x6e, 0x3, 0xf6, 0xa8 }}
## Include/Protocol/UserManager.h
gEfiUserCredentialClassPasswordGuid = { 0xf8e5058c, 0xccb6, 0x4714, { 0xb2, 0x20, 0x3f, 0x7e, 0x3a, 0x64, 0xb, 0xd1 }}
## Include/Protocol/UserManager.h
gEfiUserCredentialClassSmartCardGuid = { 0x5f03ba33, 0x8c6b, 0x4c24, { 0xaa, 0x2e, 0x14, 0xa2, 0x65, 0x7b, 0xd4, 0x54 }}
## Include/Protocol/UserManager.h
gEfiUserCredentialClassFingerprintGuid = { 0x32cba21f, 0xf308, 0x4cbc, { 0x9a, 0xb5, 0xf5, 0xa3, 0x69, 0x9f, 0x4, 0x4a }}
## Include/Protocol/UserManager.h
gEfiUserCredentialClassHandprintGuid = { 0x5917ef16, 0xf723, 0x4bb9, { 0xa6, 0x4b, 0xd8, 0xc5, 0x32, 0xf4, 0xd8, 0xb5 }}
## Include/Protocol/UserManager.h
gEfiUserCredentialClassSecureCardGuid = { 0x8a6b4a83, 0x42fe, 0x45d2, { 0xa2, 0xef, 0x46, 0xf0, 0x6c, 0x7d, 0x98, 0x52 }}
## Include/Protocol/UserManager.h
gEfiUserInfoAccessSetupAdminGuid = { 0x85b75607, 0xf7ce, 0x471e, { 0xb7, 0xe4, 0x2a, 0xea, 0x5f, 0x72, 0x32, 0xee }}
## Include/Protocol/UserManager.h
gEfiUserInfoAccessSetupNormalGuid = { 0x1db29ae0, 0x9dcb, 0x43bc, { 0x8d, 0x87, 0x5d, 0xa1, 0x49, 0x64, 0xdd, 0xe2 }}
## Include/Protocol/UserManager.h
gEfiUserInfoAccessSetupRestrictedGuid = { 0xbdb38125, 0x4d63, 0x49f4, { 0x82, 0x12, 0x61, 0xcf, 0x5a, 0x19, 0xa, 0xf8 }}
## Include/Guid/ImageAuthentication.h
gEfiImageSecurityDatabaseGuid = { 0xd719b2cb, 0x3d3a, 0x4596, {0xa3, 0xbc, 0xda, 0xd0, 0xe, 0x67, 0x65, 0x6f }}
gEfiCertSha256Guid = { 0xc1c41626, 0x504c, 0x4092, {0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28 }}
gEfiCertRsa2048Guid = { 0x3c5766e8, 0x269c, 0x4e34, {0xaa, 0x14, 0xed, 0x77, 0x6e, 0x85, 0xb3, 0xb6 }}
gEfiCertRsa2048Sha256Guid = { 0xe2b36190, 0x879b, 0x4a3d, {0xad, 0x8d, 0xf2, 0xe7, 0xbb, 0xa3, 0x27, 0x84 }}
gEfiCertSha1Guid = { 0x826ca512, 0xcf10, 0x4ac9, {0xb1, 0x87, 0xbe, 0x1, 0x49, 0x66, 0x31, 0xbd }}
gEfiCertRsa2048Sha1Guid = { 0x67f8444f, 0x8743, 0x48f1, {0xa3, 0x28, 0x1e, 0xaa, 0xb8, 0x73, 0x60, 0x80 }}
gEfiCertX509Guid = { 0xa5c059a1, 0x94e4, 0x4aa7, {0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72 }}
#
# GUIDs defined in UEFI2.3.1
#
## Include/Protocol/Kms.h
gEfiKmsFormatGeneric128Guid = { 0xec8a3d69, 0x6ddf, 0x4108, {0x94, 0x76, 0x73, 0x37, 0xfc, 0x52, 0x21, 0x36 }}
gEfiKmsFormatGeneric160Guid = { 0xa3b3e6f8, 0xefca, 0x4bc1, {0x88, 0xfb, 0xcb, 0x87, 0x33, 0x9b, 0x25, 0x79 }}
gEfiKmsFormatGeneric256Guid = { 0x70f64793, 0xc323, 0x4261, {0xac, 0x2c, 0xd8, 0x76, 0xf2, 0x7c, 0x53, 0x45 }}
gEfiKmsFormatGeneric512Guid = { 0x978fe043, 0xd7af, 0x422e, {0x8a, 0x92, 0x2b, 0x48, 0xe4, 0x63, 0xbd, 0xe6 }}
gEfiKmsFormatGeneric1024Guid = { 0x43be0b44, 0x874b, 0x4ead, {0xb0, 0x9c, 0x24, 0x1a, 0x4f, 0xbd, 0x7e, 0xb3 }}
gEfiKmsFormatGeneric2048Guid = { 0x40093f23, 0x630c, 0x4626, {0x9c, 0x48, 0x40, 0x37, 0x3b, 0x19, 0xcb, 0xbe }}
gEfiKmsFormatGeneric3072Guid = { 0xb9237513, 0x6c44, 0x4411, {0xa9, 0x90, 0x21, 0xe5, 0x56, 0xe0, 0x5a, 0xde }}
gEfiKmsFormatMd2128Guid = { 0x78be11c4, 0xee44, 0x4a22, {0x9f, 0x05, 0x03, 0x85, 0x2e, 0xc5, 0xc9, 0x78 }}
gEfiKmsFormatMdc2128Guid = { 0xf7ad60f8, 0xefa8, 0x44a3, {0x91, 0x13, 0x23, 0x1f, 0x39, 0x9e, 0xb4, 0xc7 }}
gEfiKmsFormatMd4128Guid = { 0xd1c17aa1, 0xcac5, 0x400f, {0xbe, 0x17, 0xe2, 0xa2, 0xae, 0x06, 0x67, 0x7c }}
gEfiKmsFormatMdc4128Guid = { 0x3fa4f847, 0xd8eb, 0x4df4, {0xbd, 0x49, 0x10, 0x3a, 0x0a, 0x84, 0x7b, 0xbc }}
gEfiKmsFormatMd5128Guid = { 0xdcbc3662, 0x9cda, 0x4b52, {0xa0, 0x4c, 0x82, 0xeb, 0x1d, 0x23, 0x48, 0xc7 }}
gEfiKmsFormatMd5sha128Guid = { 0x1c178237, 0x6897, 0x459e, {0x9d, 0x36, 0x67, 0xce, 0x8e, 0xf9, 0x4f, 0x76 }}
gEfiKmsFormatSha1160Guid = { 0x453c5e5a, 0x482d, 0x43f0, {0x87, 0xc9, 0x59, 0x41, 0xf3, 0xa3, 0x8a, 0xc2 }}
gEfiKmsFormatSha256256Guid = { 0x6bb4f5cd, 0x8022, 0x448d, {0xbc, 0x6d, 0x77, 0x1b, 0xae, 0x93, 0x5f, 0xc6 }}
gEfiKmsFormatSha512512Guid = { 0x2f240e12, 0xe14d, 0x475c, {0x83, 0xb0, 0xef, 0xff, 0x22, 0xd7, 0x7b, 0xe7 }}
gEfiKmsFormatAesxts128Guid = { 0x4776e33f, 0xdb47, 0x479a, {0xa2, 0x5f, 0xa1, 0xcd, 0x0a, 0xfa, 0xb3, 0x8b }}
gEfiKmsFormatAesxts256Guid = { 0xdc7e8613, 0xc4bb, 0x4db0, {0x84, 0x62, 0x13, 0x51, 0x13, 0x57, 0xab, 0xe2 }}
gEfiKmsFormatAescbc128Guid = { 0xa0e8ee6a, 0x0e92, 0x44d4, {0x86, 0x1b, 0x0e, 0xaa, 0x4a, 0xca, 0x44, 0xa2 }}
gEfiKmsFormatAescbc256Guid = { 0xd7e69789, 0x1f68, 0x45e8, {0x96, 0xef, 0x3b, 0x64, 0x07, 0xa5, 0xb2, 0xdc }}
gEfiKmsFormatRsasha11024Guid = { 0x56417bed, 0x6bbe, 0x4882, {0x86, 0xa0, 0x3a, 0xe8, 0xbb, 0x17, 0xf8, 0xf9 }}
gEfiKmsFormatRsasha12048Guid = { 0xf66447d4, 0x75a6, 0x463e, {0xa8, 0x19, 0x07, 0x7f, 0x2d, 0xda, 0x05, 0xe9 }}
gEfiKmsFormatRsasha2562048Guid = { 0xa477af13, 0x877d, 0x4060, {0xba, 0xa1, 0x25, 0xd1, 0xbe, 0xa0, 0x8a, 0xd3 }}
gEfiKmsFormatRsasha2563072Guid = { 0x4e1356c2, 0xeed, 0x463f, {0x81, 0x47, 0x99, 0x33, 0xab, 0xdb, 0xc7, 0xd5 }}
## Include/Guid/ImageAuthentication.h
gEfiCertSha224Guid = { 0xb6e5233, 0xa65c, 0x44c9, {0x94, 0x7, 0xd9, 0xab, 0x83, 0xbf, 0xc8, 0xbd }}
gEfiCertSha384Guid = { 0xff3e5307, 0x9fd0, 0x48c9, {0x85, 0xf1, 0x8a, 0xd5, 0x6c, 0x70, 0x1e, 0x1 }}
gEfiCertSha512Guid = { 0x93e0fae, 0xa6c4, 0x4f50, {0x9f, 0x1b, 0xd4, 0x1e, 0x2b, 0x89, 0xc1, 0x9a }}
gEfiCertPkcs7Guid = { 0x4aafd29d, 0x68df, 0x49ee, {0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7 }}
## Include/Protocol/Hash.h
gEfiHashAlgorithmSha1NoPadGuid = { 0x24c5dc2f, 0x53e2, 0x40ca, { 0x9e, 0xd6, 0xa5, 0xd9, 0xa4, 0x9f, 0x46, 0x3b }}
gEfiHashAlgorithmSha256NoPadGuid = { 0x8628752a, 0x6cb7, 0x4814, { 0x96, 0xfc, 0x24, 0xa8, 0x15, 0xac, 0x22, 0x26 }}
#
# GUIDs defined in UEFI2.4
#
## Include/Guid/FmpCapsule.h
gEfiFmpCapsuleGuid = { 0x6dcbd5ed, 0xe82d, 0x4c44, {0xbd, 0xa1, 0x71, 0x94, 0x19, 0x9a, 0xd9, 0x2a }}
## Include/Guid/ImageAuthentication.h
gEfiCertX509Sha256Guid = { 0x3bd2a492, 0x96c0, 0x4079, {0xb4, 0x20, 0xfc, 0xf9, 0x8e, 0xf1, 0x03, 0xed }}
gEfiCertX509Sha384Guid = { 0x7076876e, 0x80c2, 0x4ee6, {0xaa, 0xd2, 0x28, 0xb3, 0x49, 0xa6, 0x86, 0x5b }}
gEfiCertX509Sha512Guid = { 0x446dbf63, 0x2502, 0x4cda, {0xbc, 0xfa, 0x24, 0x65, 0xd2, 0xb0, 0xfe, 0x9d }}
## Include/Protocol/Rng.h
gEfiRngAlgorithmSp80090Hash256Guid = { 0xa7af67cb, 0x603b, 0x4d42, {0xba, 0x21, 0x70, 0xbf, 0xb6, 0x29, 0x3f, 0x96 }}
gEfiRngAlgorithmSp80090Hmac256Guid = { 0xc5149b43, 0xae85, 0x4f53, {0x99, 0x82, 0xb9, 0x43, 0x35, 0xd3, 0xa9, 0xe7 }}
gEfiRngAlgorithmSp80090Ctr256Guid = { 0x44f0de6e, 0x4d8c, 0x4045, {0xa8, 0xc7, 0x4d, 0xd1, 0x68, 0x85, 0x6b, 0x9e }}
gEfiRngAlgorithmX9313DesGuid = { 0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46 }}
gEfiRngAlgorithmX931AesGuid = { 0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9 }}
gEfiRngAlgorithmRaw = { 0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61 }}
## Include/Protocol/AdapterInformation.h
gEfiAdapterInfoMediaStateGuid = { 0xD7C74207, 0xA831, 0x4A26, {0xB1, 0xF5, 0xD1, 0x93, 0x06, 0x5C, 0xE8, 0xB6 }}
gEfiAdapterInfoNetworkBootGuid = { 0x1FBD2960, 0x4130, 0x41E5, {0x94, 0xAC, 0xD2, 0xCF, 0x03, 0x7F, 0xB3, 0x7C }}
gEfiAdapterInfoSanMacAddressGuid = { 0x114da5ef, 0x2cf1, 0x4e12, {0x9b, 0xbb, 0xc4, 0x70, 0xb5, 0x52, 0x5, 0xd9 }}
## Include/Guid/CapsuleReport.h
gEfiCapsuleReportGuid = { 0x39b68c46, 0xf7fb, 0x441b, {0xb6, 0xec, 0x16, 0xb0, 0xf6, 0x98, 0x21, 0xf3 }}
#
# GUIDs defined in UEFI2.5
#
- ## Include/Guid/PropertiesTable.h
- gEfiPropertiesTableGuid = { 0x880aaca3, 0x4adc, 0x4a04, {0x90, 0x79, 0xb7, 0x47, 0x34, 0x8, 0x25, 0xe5 }}
-
## Include/Guid/SystemResourceTable.h
gEfiSystemResourceTableGuid = { 0xb122a263, 0x3661, 0x4f68, {0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80 }}
## Include/Protocol/AdapterInformation.h
gEfiAdapterInfoUndiIpv6SupportGuid = { 0x4bd56be3, 0x4975, 0x4d8a, {0xa0, 0xad, 0xc4, 0x91, 0x20, 0x4b, 0x5d, 0x4d }}
## Include/Protocol/RegularExpressionProtocol.h
gEfiRegexSyntaxTypePosixExtendedGuid = {0x5F05B20F, 0x4A56, 0xC231, {0xFA, 0x0B, 0xA7, 0xB1, 0xF1, 0x10, 0x04, 0x1D }}
## Include/Protocol/RegularExpressionProtocol.h
gEfiRegexSyntaxTypeEcma262Guid = { 0x9A473A4A, 0x4CEB, 0xB95A, {0x41, 0x5E, 0x5B, 0xA0, 0xBC, 0x63, 0x9B, 0x2E }}
## Include/Protocol/RegularExpressionProtocol.h
gEfiRegexSyntaxTypePerlGuid = {0x63E60A51, 0x497D, 0xD427, {0xC4, 0xA5, 0xB8, 0xAB, 0xDC, 0x3A, 0xAE, 0xB6 }}
## Include/Guid/Cper.h
gEfiPlatformMemory2ErrorSectionGuid = { 0x61EC04FC, 0x48E6, 0xD813, { 0x25, 0xC9, 0x8D, 0xAA, 0x44, 0x75, 0x0B, 0x12 }}
## Include/Protocol/BlockIoCrypto.h
gEfiBlockIoCryptoAlgoAesXtsGuid = { 0x2f87ba6a, 0x5c04, 0x4385, {0xa7, 0x80, 0xf3, 0xbf, 0x78, 0xa9, 0x7b, 0xec }}
gEfiBlockIoCryptoAlgoAesCbcMsBitlockerGuid = { 0x689e4c62, 0x70bf, 0x4cf3, {0x88, 0xbb, 0x33, 0xb3, 0x18, 0x26, 0x86, 0x70 }}
## Include/Protocol/SmartCardEdge.h
gEfiPaddingRsassaPkcs1V1P5Guid = { 0x9317ec24, 0x7cb0, 0x4d0e, {0x8b, 0x32, 0x2e, 0xd9, 0x20, 0x9c, 0xd8, 0xaf }}
gEfiPaddingRsassaPssGuid = { 0x7b2349e0, 0x522d, 0x4f8e, {0xb9, 0x27, 0x69, 0xd9, 0x7c, 0x9e, 0x79, 0x5f }}
gEfiPaddingNoneGuid = { 0x3629ddb1, 0x228c, 0x452e, {0xb6, 0x16, 0x09, 0xed, 0x31, 0x6a, 0x97, 0x00 }}
gEfiPaddingRsaesPkcs1V1P5Guid = { 0xe1c1d0a9, 0x40b1, 0x4632, {0xbd, 0xcc, 0xd9, 0xd6, 0xe5, 0x29, 0x56, 0x31 }}
gEfiPaddingRsaesOaepGuid = { 0xc1e63ac4, 0xd0cf, 0x4ce6, {0x83, 0x5b, 0xee, 0xd0, 0xe6, 0xa8, 0xa4, 0x5b }}
## Include/Guid/SmBios.h
gEfiSmbios3TableGuid = { 0xF2FD1544, 0x9794, 0x4A2C, { 0x99, 0x2E, 0xE5, 0xBB, 0xCF, 0x20, 0xE3, 0x94 }}
## Include/Protocol/BootManagerPolicy.h
gEfiBootManagerPolicyConsoleGuid = { 0xCAB0E94C, 0xE15F, 0x11E3, { 0x91, 0x8D, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA }}
gEfiBootManagerPolicyNetworkGuid = { 0xD04159DC, 0xE15F, 0x11E3, { 0xB2, 0x61, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA }}
gEfiBootManagerPolicyConnectAllGuid = { 0x113B2126, 0xFC8A, 0x11E3, { 0xBD, 0x6C, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA }}
## Include/Protocol/DevicePath.h
gEfiVirtualDiskGuid = { 0x77AB535A, 0x45FC, 0x624B, {0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E }}
gEfiVirtualCdGuid = { 0x3D5ABD30, 0x4175, 0x87CE, {0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }}
gEfiPersistentVirtualDiskGuid = { 0x5CEA02C9, 0x4D07, 0x69D3, {0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }}
gEfiPersistentVirtualCdGuid = { 0x08018188, 0x42CD, 0xBB48, {0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }}
#
# GUIDs defined in UEFI2.6
#
## Include/Guid/MemoryAttributesTable.h
gEfiMemoryAttributesTableGuid = { 0xdcfa911d, 0x26eb, 0x469f, {0xa2, 0x20, 0x38, 0xb7, 0xdc, 0x46, 0x12, 0x20}}
## Include/Guid/Cper.h
gEfiArmProcessorErrorSectionGuid = { 0xe19e3d16, 0xbc11, 0x11e4, { 0x9c, 0xaa, 0xc2, 0x05, 0x1d, 0x5d, 0x46, 0xb0 }}
## Guid for Image decoder
## Include/Protocol/ImageDecoder.h
gEfiHiiImageDecoderNameJpegGuid = { 0xefefd093, 0x0d9b, 0x46eb, { 0xa8, 0x56, 0x48, 0x35, 0x07, 0x00, 0xc9, 0x08 }}
gEfiHiiImageDecoderNamePngGuid = { 0xaf060190, 0x5e3a, 0x4025, { 0xaf, 0xbd, 0xe1, 0xf9, 0x05, 0xbf, 0xaa, 0x4c }}
#
+ # GUIDs defined in UEFI2.7
+ #
+ ## Include/Guid/Btt.h
+ gEfiBttAbstractionGuid = { 0x18633bfc, 0x1735, 0x4217, { 0x8a, 0xc9, 0x17, 0x23, 0x92, 0x82, 0xd3, 0xf8 }}
+
+ # GUIDs defined in UEFI2.8
+ #
+ ## Include/Guid/JsonCapsule.h
+ gEfiJsonConfigDataTableGuid = { 0x87367f87, 0x1119, 0x41ce, { 0xaa, 0xec, 0x8b, 0xe0, 0x11, 0x1f, 0x55, 0x8a }}
+ gEfiJsonCapsuleDataTableGuid = { 0x35e7a725, 0x8dd2, 0x4cac, { 0x80, 0x11, 0x33, 0xcd, 0xa8, 0x10, 0x90, 0x56 }}
+ gEfiJsonCapsuleResultTableGuid = { 0xdbc461c3, 0xb3de, 0x422a, { 0xb9, 0xb4, 0x98, 0x86, 0xfd, 0x49, 0xa1, 0xe5 }}
+ gEfiJsonCapsuleIdGuid = { 0x67d6f4cd, 0xd6b8, 0x4573, { 0xbf, 0x4a, 0xde, 0x5e, 0x25, 0x2d, 0x61, 0xae }}
+
+ ## Include/Guid/HiiPlatformSetupFormset.h
+ gEfiHiiResetStyleFormsetGuid = { 0x790217bd, 0xbecf, 0x485b, { 0x91, 0x70, 0x5f, 0xf7, 0x11, 0x31, 0x8b, 0x27 }}
+
+ # GUIDs defined in UEFI2.8a
+ #
+ ## Include/Guid/RtPropertiesTable.h
+ gEfiRtPropertiesTableGuid = { 0xeb66918a, 0x7eef, 0x402a, { 0x84, 0x2e, 0x93, 0x1d, 0x21, 0xc3, 0x8a, 0xe9 }}
+
+ #
# GUID defined in PI1.0
#
## Include/Guid/AprioriFileName.h
gPeiAprioriFileNameGuid = { 0x1b45cc0a, 0x156a, 0x428a, { 0XAF, 0x62, 0x49, 0x86, 0x4d, 0xa0, 0xe6, 0xe6 }}
## Include/Guid/Apriori.h
gAprioriGuid = { 0xFC510EE7, 0xFFDC, 0x11D4, { 0xBD, 0x41, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
## Include/Guid/FirmwareFileSystem2.h
gEfiFirmwareFileSystem2Guid = { 0x8c8ce578, 0x8a3d, 0x4f1c, { 0x99, 0x35, 0x89, 0x61, 0x85, 0xc3, 0x2d, 0xd3 }}
## Include/Guid/FirmwareFileSystem2.h
gEfiFirmwareVolumeTopFileGuid = { 0x1BA0062E, 0xC779, 0x4582, { 0x85, 0x66, 0x33, 0x6A, 0xE8, 0xF7, 0x8F, 0x09 }}
## Include/Guid/MemoryAllocationHob.h
gEfiHobMemoryAllocModuleGuid = { 0xF8E21975, 0x0899, 0x4F58, { 0xA4, 0xBE, 0x55, 0x25, 0xA9, 0xC6, 0xD7, 0x7A }}
## Include/Guid/MemoryAllocationHob.h
gEfiHobMemoryAllocStackGuid = { 0x4ED4BF27, 0x4092, 0x42E9, { 0x80, 0x7D, 0x52, 0x7B, 0x1D, 0x00, 0xC9, 0xBD }}
## Include/Guid/MemoryAllocationHob.h
gEfiHobMemoryAllocBspStoreGuid = { 0x564B33CD, 0xC92A, 0x4593, { 0x90, 0xBF, 0x24, 0x73, 0xE4, 0x3C, 0x63, 0x22 }}
## Include/Guid/EventLegacyBios.h
gEfiEventLegacyBootGuid = { 0x2A571201, 0x4966, 0x47F6, { 0x8B, 0x86, 0xF3, 0x1E, 0x41, 0xF3, 0x2F, 0x10 }}
## Include/Guid/HobList.h
gEfiHobListGuid = { 0x7739F24C, 0x93D7, 0x11D4, { 0x9A, 0x3A, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Guid/DxeServices.h
gEfiDxeServicesTableGuid = { 0x05AD34BA, 0x6F02, 0x4214, { 0x95, 0x2E, 0x4D, 0xA0, 0x39, 0x8E, 0x2B, 0xB9 }}
## Include/Guid/MdePkgTokenSpace.h
gEfiMdePkgTokenSpaceGuid = { 0x914AEBE7, 0x4635, 0x459b, { 0xAA, 0x1C, 0x11, 0xE2, 0x19, 0xB0, 0x3A, 0x10 }}
## Include/Guid/HardwareErrorVariable.h
gEfiHardwareErrorVariableGuid = { 0x414E6BDD, 0xE47B, 0x47cc, { 0xB2, 0x44, 0xBB, 0x61, 0x02, 0x0C, 0xF5, 0x16 }}
#
# GUID defined in PI1.2
#
## Include/Guid/EventGroup.h
gEfiEventDxeDispatchGuid = { 0x7081E22F, 0xCAC6, 0x4053, { 0x94, 0x68, 0x67, 0x57, 0x82, 0xCF, 0x88, 0xE5 }}
## Guid for EFI_DISK_INFO_PROTOCOL.Interface to specify Ide interface.
## Include/Protocol/DiskInfo.h
gEfiDiskInfoIdeInterfaceGuid = { 0x5E948FE3, 0x26D3, 0x42B5, { 0xAF, 0x17, 0x61, 0x02, 0x87, 0x18, 0x8D, 0xEC }}
## Guid for EFI_DISK_INFO_PROTOCOL.Interface to specify Scsi interface.
## Include/Protocol/DiskInfo.h
gEfiDiskInfoScsiInterfaceGuid = { 0x08F74BAA, 0xEA36, 0x41D9, { 0x95, 0x21, 0x21, 0xA7, 0x0F, 0x87, 0x80, 0xBC }}
## Guid for EFI_DISK_INFO_PROTOCOL.Interface to specify Usb interface.
## Include/Protocol/DiskInfo.h
gEfiDiskInfoUsbInterfaceGuid = { 0xCB871572, 0xC11A, 0x47B5, { 0xB4, 0x92, 0x67, 0x5E, 0xAF, 0xA7, 0x77, 0x27 }}
## Guid for EFI_DISK_INFO_PROTOCOL.Interface to specify Ahci interface.
## Include/Protocol/DiskInfo.h
gEfiDiskInfoAhciInterfaceGuid = { 0x9e498932, 0x4abc, 0x45af, { 0xa3, 0x4d, 0x02, 0x47, 0x78, 0x7b, 0xe7, 0xc6 }}
## Include/Guid/StatusCodeDataTypeId.h
gEfiStatusCodeDataTypeStringGuid = { 0x92D11080, 0x496F, 0x4D95, { 0xBE, 0x7E, 0x03, 0x74, 0x88, 0x38, 0x2B, 0x0A }}
## Include/Guid/StatusCodeDataTypeId.h
gEfiStatusCodeSpecificDataGuid = { 0x335984BD, 0xE805, 0x409A, { 0xB8, 0xF8, 0xD2, 0x7E, 0xCE, 0x5F, 0xF7, 0xA6 }}
## Include/Guid/FirmwareFileSystem3.h
gEfiFirmwareFileSystem3Guid = { 0x5473c07a, 0x3dcb, 0x4dca, { 0xbd, 0x6f, 0x1e, 0x96, 0x89, 0xe7, 0x34, 0x9a }}
#
# GUID defined in PI1.2.1
#
## Include/Guid/EventGroup.h
gEfiEndOfDxeEventGroupGuid = { 0x2ce967a, 0xdd7e, 0x4ffc, { 0x9e, 0xe7, 0x81, 0xc, 0xf0, 0x47, 0x8, 0x80 }}
## Include/Guid/FirmwareContentsSigned.h
gEfiFirmwareContentsSignedGuid = { 0xf9d89e8, 0x9259, 0x4f76, { 0xa5, 0xaf, 0xc, 0x89, 0xe3, 0x40, 0x23, 0xdf }}
## Include/Guid/VectorHandoffTable.h
gEfiVectorHandoffTableGuid = { 0x996ec11c, 0x5397, 0x4e73, { 0xb5, 0x8f, 0x82, 0x7e, 0x52, 0x90, 0x6d, 0xef }}
## Include/IndustryStandard/Hsti.h
gAdapterInfoPlatformSecurityGuid = {0x6be272c7, 0x1320, 0x4ccd, { 0x90, 0x17, 0xd4, 0x61, 0x2c, 0x01, 0x2b, 0x25 }}
#
# GUID defined in PI1.3
#
## Guid for EFI_DISK_INFO_PROTOCOL.Interface to specify Nvme interface.
## Include/Protocol/DiskInfo.h
gEfiDiskInfoNvmeInterfaceGuid = { 0x3ab14680, 0x5d3f, 0x4a4d, { 0xbc, 0xdc, 0xcc, 0x38, 0x0, 0x18, 0xc7, 0xf7 }}
#
# GUID defined in PI1.4
#
## Include/Guid/GraphicsInfoHob.h
gEfiGraphicsInfoHobGuid = { 0x39f62cce, 0x6825, 0x4669, { 0xbb, 0x56, 0x54, 0x1a, 0xba, 0x75, 0x3a, 0x07 }}
## Guid for EFI_DISK_INFO_PROTOCOL.Interface to specify UFS interface.
## Include/Protocol/DiskInfo.h
gEfiDiskInfoUfsInterfaceGuid = { 0x4b3029cc, 0x6b98, 0x47fb, { 0xbc, 0x96, 0x76, 0xdc, 0xb8, 0x4, 0x41, 0xf0 }}
#
# GUID defined in PI1.5
#
## Include/Guid/GraphicsInfoHob.h
gEfiGraphicsDeviceInfoHobGuid = { 0xe5cb2ac9, 0xd35d, 0x4430, { 0x93, 0x6e, 0x1d, 0xe3, 0x32, 0x47, 0x8d, 0xe7 }}
+ ## Include/Guid/SmramMemoryReserve.h
+ gEfiSmmSmramMemoryGuid = { 0x6dadf1d1, 0xd4cc, 0x4910, { 0xbb, 0x6e, 0x82, 0xb1, 0xfd, 0x80, 0xff, 0x3d }}
+
#
+ # GUID defined in PI1.6
+ #
+ ## Include/Protocol/DiskInfo.h
+ gEfiDiskInfoSdMmcInterfaceGuid = { 0x8deec992, 0xd39c, 0x4a5c, { 0xab, 0x6b, 0x98, 0x6e, 0x14, 0x24, 0x2b, 0x9d }}
+
+ #
# GUID defined in Windows UEFI Firmware Update Platform doc
#
## Include/IndustryStandard/WindowsUxCapsule.h
gWindowsUxCapsuleGuid = { 0x3b8c8162, 0x188c, 0x46a4, { 0xae, 0xc9, 0xbe, 0x43, 0xf1, 0xd6, 0x56, 0x97}}
+ #
+ # GUID indicates the tiano custom compress/decompress algorithm.
+ #
+ gTianoCustomDecompressGuid = { 0xA31280AD, 0x481E, 0x41B6, { 0x95, 0xE8, 0x12, 0x7F, 0x4C, 0x98, 0x47, 0x79 }}
+
[Guids.IA32, Guids.X64]
## Include/Guid/Cper.h
gEfiIa32X64ErrorTypeCacheCheckGuid = { 0xA55701F5, 0xE3EF, 0x43de, { 0xAC, 0x72, 0x24, 0x9B, 0x57, 0x3F, 0xAD, 0x2C }}
## Include/Guid/Cper.h
gEfiIa32X64ErrorTypeTlbCheckGuid = { 0xFC06B535, 0x5E1F, 0x4562, { 0x9F, 0x25, 0x0A, 0x3B, 0x9A, 0xDB, 0x63, 0xC3 }}
## Include/Guid/Cper.h
gEfiIa32X64ErrorTypeBusCheckGuid = { 0x1CF3F8B3, 0xC5B1, 0x49a2, { 0xAA, 0x59, 0x5E, 0xEF, 0x92, 0xFF, 0xA6, 0x3C }}
## Include/Guid/Cper.h
gEfiIa32X64ErrorTypeMsCheckGuid = { 0x48AB7F57, 0xDC34, 0x4f6c, { 0xA7, 0xD3, 0xB0, 0xB5, 0xB0, 0xA7, 0x43, 0x14 }}
[Ppis]
## Include/Ppi/MasterBootMode.h
gEfiPeiMasterBootModePpiGuid = { 0x7408d748, 0xfc8c, 0x4ee6, {0x92, 0x88, 0xc4, 0xbe, 0xc0, 0x92, 0xa4, 0x10 } }
## Include/Ppi/DxeIpl.h
gEfiDxeIplPpiGuid = {0xae8ce5d, 0xe448, 0x4437, {0xa8, 0xd7, 0xeb, 0xf5, 0xf1, 0x94, 0xf7, 0x31 }}
## Include/Ppi/MemoryDiscovered.h
gEfiPeiMemoryDiscoveredPpiGuid = {0xf894643d, 0xc449, 0x42d1, {0x8e, 0xa8, 0x85, 0xbd, 0xd8, 0xc6, 0x5b, 0xde } }
## Include/Ppi/BootInRecoveryMode.h
gEfiPeiBootInRecoveryModePpiGuid = { 0x17ee496a, 0xd8e4, 0x4b9a, {0x94, 0xd1, 0xce, 0x82, 0x72, 0x30, 0x8, 0x50 } }
## Include/Ppi/EndOfPeiPhase.h
gEfiEndOfPeiSignalPpiGuid = {0x605EA650, 0xC65C, 0x42e1, {0xBA, 0x80, 0x91, 0xA5, 0x2A, 0xB6, 0x18, 0xC6 } }
## Include/Ppi/Reset.h
gEfiPeiResetPpiGuid = { 0xef398d58, 0x9dfd, 0x4103, {0xbf, 0x94, 0x78, 0xc6, 0xf4, 0xfe, 0x71, 0x2f } }
## Include/Ppi/StatusCode.h
gEfiPeiStatusCodePpiGuid = { 0x229832d3, 0x7a30, 0x4b36, {0xb8, 0x27, 0xf4, 0xc, 0xb7, 0xd4, 0x54, 0x36 } }
## Include/Ppi/Security2.h
gEfiPeiSecurity2PpiGuid = { 0xdcd0be23, 0x9586, 0x40f4, { 0xb6, 0x43, 0x6, 0x52, 0x2c, 0xed, 0x4e, 0xde } }
## Include/Ppi/TemporaryRamSupport.h
gEfiTemporaryRamSupportPpiGuid = { 0xdbe23aa9, 0xa345, 0x4b97, {0x85, 0xb6, 0xb2, 0x26, 0xf1, 0x61, 0x73, 0x89} }
## Include/Ppi/CpuIo.h
gEfiPeiCpuIoPpiInstalledGuid = { 0xe6af1f7b, 0xfc3f, 0x46da, {0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82 } }
## Include/Ppi/PciCfg2.h
gEfiPciCfg2PpiGuid = { 0x57a449a, 0x1fdc, 0x4c06, { 0xbf, 0xc9, 0xf5, 0x3f, 0x6a, 0x99, 0xbb, 0x92 } }
## Include/Ppi/Stall.h
gEfiPeiStallPpiGuid = { 0x1f4c6f90, 0xb06b, 0x48d8, {0xa2, 0x01, 0xba, 0xe5, 0xf1, 0xcd, 0x7d, 0x56 } }
## Include/Ppi/ReadOnlyVariable2.h
gEfiPeiReadOnlyVariable2PpiGuid = { 0x2ab86ef5, 0xecb5, 0x4134, { 0xb5, 0x56, 0x38, 0x54, 0xca, 0x1f, 0xe1, 0xb4 } }
## Include/Ppi/SecPlatformInformation.h
gEfiSecPlatformInformationPpiGuid = { 0x6f8c2b35, 0xfef4, 0x448d, {0x82, 0x56, 0xe1, 0x1b, 0x19, 0xd6, 0x10, 0x77 } }
## Include/Ppi/LoadImage.h
gEfiPeiLoadedImagePpiGuid = { 0xc1fcd448, 0x6300, 0x4458, { 0xb8, 0x64, 0x28, 0xdf, 0x1, 0x53, 0x64, 0xbc } }
## Include/Ppi/Smbus2.h
gEfiPeiSmbus2PpiGuid = { 0x9ca93627, 0xb65b, 0x4324, { 0xa2, 0x2, 0xc0, 0xb4, 0x61, 0x76, 0x45, 0x43 } }
## Include/Ppi/FirmwareVolumeInfo.h
gEfiPeiFirmwareVolumeInfoPpiGuid = { 0x49edb1c1, 0xbf21, 0x4761, { 0xbb, 0x12, 0xeb, 0x0, 0x31, 0xaa, 0xbb, 0x39 } }
## Include/Ppi/LoadFile.h
gEfiPeiLoadFilePpiGuid = { 0xb9e0abfe, 0x5979, 0x4914, { 0x97, 0x7f, 0x6d, 0xee, 0x78, 0xc2, 0x78, 0xa6 } }
## Include/Ppi/Decompress.h
gEfiPeiDecompressPpiGuid = { 0x1a36e4e7, 0xfab6, 0x476a, { 0x8e, 0x75, 0x69, 0x5a, 0x5, 0x76, 0xfd, 0xd7 } }
## Include/Ppi/Pcd.h
gPcdPpiGuid = { 0x6e81c58, 0x4ad7, 0x44bc, { 0x83, 0x90, 0xf1, 0x2, 0x65, 0xf7, 0x24, 0x80 } }
## Include/Ppi/PcdInfo.h
gGetPcdInfoPpiGuid = { 0x4d8b155b, 0xc059, 0x4c8f, { 0x89, 0x26, 0x6, 0xfd, 0x43, 0x31, 0xdb, 0x8a } }
#
# PPIs defined in PI 1.2.
#
## Include/Ppi/RecoveryModule.h
gEfiPeiRecoveryModulePpiGuid = { 0xFB6D9542, 0x612D, 0x4f45, { 0x87, 0x2f, 0x5c, 0xff, 0x52, 0xe9, 0x3d, 0xcf }}
## Include/Ppi/DeviceRecoveryModule.h
gEfiPeiDeviceRecoveryModulePpiGuid = { 0x0DE2CE25, 0x446A, 0x45a7, { 0xBF, 0xC9, 0x37, 0xDA, 0x26, 0x34, 0x4B, 0x37 }}
## Include/Ppi/BlockIo.h
gEfiPeiVirtualBlockIoPpiGuid = { 0x695d8aa1, 0x42ee, 0x4c46, { 0x80, 0x5c, 0x6e, 0xa6, 0xbc, 0xe7, 0x99, 0xe3 }}
## Include/Ppi/S3Resume2.h
gEfiPeiS3Resume2PpiGuid = { 0x6D582DBC, 0xDB85, 0x4514, {0x8F, 0xCC, 0x5A, 0xDF, 0x62, 0x27, 0xB1, 0x47 }}
## Include/Ppi/ReportStatusCodeHandler.h
gEfiPeiRscHandlerPpiGuid = { 0x65d394, 0x9951, 0x4144, {0x82, 0xa3, 0xa, 0xfc, 0x85, 0x79, 0xc2, 0x51 }}
## Include/Ppi/PiPcd.h
gEfiPeiPcdPpiGuid = { 0x1f34d25, 0x4de2, 0x23ad, { 0x3f, 0xf3, 0x36, 0x35, 0x3f, 0xf3, 0x23, 0xf1 } }
#
# PPIs defined in PI 1.2.1.
#
## Include/Ppi/PiPcdInfo.h
gEfiGetPcdInfoPpiGuid = { 0xa60c6b59, 0xe459, 0x425d, { 0x9c, 0x69, 0xb, 0xcc, 0x9c, 0xb2, 0x7d, 0x81 } }
## Include/Ppi/TemporaryRamDone.h
gEfiTemporaryRamDonePpiGuid = { 0xceab683c, 0xec56, 0x4a2d, { 0xa9, 0x6, 0x40, 0x53, 0xfa, 0x4e, 0x9c, 0x16 } }
## Include/Ppi/VectorHandoffInfo.h
gEfiVectorHandoffInfoPpiGuid = { 0x3cd652b4, 0x6d33, 0x4dce, { 0x89, 0xdb, 0x83, 0xdf, 0x97, 0x66, 0xfc, 0xca }}
## Include/Ppi/IsaHc.h
gEfiIsaHcPpiGuid = { 0x8d48bd70, 0xc8a3, 0x4c06, {0x90, 0x1b, 0x74, 0x79, 0x46, 0xaa, 0xc3, 0x58 } }
## Include/Ppi/SuperIo.h
gEfiSioPpiGuid = { 0x23a464ad, 0xcb83, 0x48b8, {0x94, 0xab, 0x1a, 0x6f, 0xef, 0xcf, 0xe5, 0x22 } }
#
# PPIs defined in PI 1.3.
#
## Include/Ppi/I2cMaster.h
gEfiPeiI2cMasterPpiGuid = { 0xb3bfab9b, 0x9f9c, 0x4e8b, { 0xad, 0x37, 0x7f, 0x8c, 0x51, 0xfc, 0x62, 0x80 }}
## Include/Ppi/FirmwareVolumeInfo2.h
gEfiPeiFirmwareVolumeInfo2PpiGuid = { 0xea7ca24b, 0xded5, 0x4dad, { 0xa3, 0x89, 0xbf, 0x82, 0x7e, 0x8f, 0x9b, 0x38 } }
#
# PPIs defined in PI 1.4.
#
## Include/Ppi/Graphics.h
gEfiPeiGraphicsPpiGuid = { 0x6ecd1463, 0x4a4a, 0x461b, { 0xaf, 0x5f, 0x5a, 0x33, 0xe3, 0xb2, 0x16, 0x2b } }
## Include/Ppi/MpServices.h
gEfiPeiMpServicesPpiGuid = { 0xee16160a, 0xe8be, 0x47a6, { 0x82, 0xa, 0xc6, 0x90, 0xd, 0xb0, 0x25, 0xa } }
## Include/Ppi/Capsule.h
gEfiPeiCapsulePpiGuid = { 0x3acf33ee, 0xd892, 0x40f4, { 0xa2, 0xfc, 0x38, 0x54, 0xd2, 0xe1, 0x32, 0x3d }}
## Keep name backwards compatible before PI Version 1.4
gPeiCapsulePpiGuid = { 0x3acf33ee, 0xd892, 0x40f4, { 0xa2, 0xfc, 0x38, 0x54, 0xd2, 0xe1, 0x32, 0x3d }}
## Include/Ppi/Reset2.h
gEfiPeiReset2PpiGuid = { 0x6cc45765, 0xcce4, 0x42fd, {0xbc, 0x56, 0x1, 0x1a, 0xaa, 0xc6, 0xc9, 0xa8 } }
## Include/Ppi/BlockIo2.h
gEfiPeiVirtualBlockIo2PpiGuid = { 0x26cc0fad, 0xbeb3, 0x478a, { 0x91, 0xb2, 0xc, 0x18, 0x8f, 0x72, 0x61, 0x98 }}
## Include/Ppi/SecPlatformInformation.h
gEfiSecPlatformInformation2PpiGuid = { 0x9e9f374b, 0x8f16, 0x4230, {0x98, 0x24, 0x58, 0x46, 0xee, 0x76, 0x6a, 0x97 } }
+ #
+ # PPIs defined in PI 1.5.
+ #
+
+ ## Include/Ppi/SecHobData.h
+ gEfiSecHobDataPpiGuid = { 0x3ebdaf20, 0x6667, 0x40d8, {0xb4, 0xee, 0xf5, 0x99, 0x9a, 0xc1, 0xb7, 0x1f } }
+
+ ## Include/Ppi/MmAccess.h
+ gEfiPeiMmAccessPpiGuid = { 0x268f33a9, 0xcccd, 0x48be, { 0x88, 0x17, 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6 }}
+
+ ## Include/Ppi/MmControl.h
+ gEfiPeiMmControlPpiGuid = { 0x61c68702, 0x4d7e, 0x4f43, { 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5 }}
+
+ #
+ # PPIs defined in PI 1.7.
+ #
+
+ ## Include/Ppi/PeiCoreFvLocation.h
+ gEfiPeiCoreFvLocationPpiGuid = { 0x52888eae, 0x5b10, 0x47d0, { 0xa8, 0x7f, 0xb8, 0x22, 0xab, 0xa0, 0xca, 0xf4 }}
+
+ ## Include/Ppi/DelayedDispatch.h
+ gEfiPeiDelayedDispatchPpiGuid = { 0x869c711d, 0x649c, 0x44fe, { 0x8b, 0x9e, 0x2c, 0xbb, 0x29, 0x11, 0xc3, 0xe6 }}
+
[Protocols]
## Include/Protocol/Pcd.h
gPcdProtocolGuid = { 0x11B34006, 0xD85B, 0x4D0A, { 0xA2, 0x90, 0xD5, 0xA5, 0x71, 0x31, 0x0E, 0xF7 }}
## Include/Protocol/PcdInfo.h
gGetPcdInfoProtocolGuid = { 0x5be40f57, 0xfa68, 0x4610, { 0xbb, 0xbf, 0xe9, 0xc5, 0xfc, 0xda, 0xd3, 0x65 } }
#
# Protocols defined in PI1.0.
#
## Include/Protocol/Bds.h
gEfiBdsArchProtocolGuid = { 0x665E3FF6, 0x46CC, 0x11D4, { 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/Cpu.h
gEfiCpuArchProtocolGuid = { 0x26BACCB1, 0x6F42, 0x11D4, { 0xBC, 0xE7, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
## Include/Protocol/Metronome.h
gEfiMetronomeArchProtocolGuid = { 0x26BACCB2, 0x6F42, 0x11D4, { 0xBC, 0xE7, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
## Include/Protocol/MonotonicCounter.h
gEfiMonotonicCounterArchProtocolGuid = { 0x1DA97072, 0xBDDC, 0x4B30, { 0x99, 0xF1, 0x72, 0xA0, 0xB5, 0x6F, 0xFF, 0x2A }}
## Include/Protocol/RealTimeClock.h
gEfiRealTimeClockArchProtocolGuid = { 0x27CFAC87, 0x46CC, 0x11D4, { 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/Reset.h
gEfiResetArchProtocolGuid = { 0x27CFAC88, 0x46CC, 0x11D4, { 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/Runtime.h
gEfiRuntimeArchProtocolGuid = { 0xb7dfb4e1, 0x052f, 0x449f, { 0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33 }}
## Include/Protocol/Security.h
gEfiSecurityArchProtocolGuid = { 0xA46423E3, 0x4617, 0x49F1, { 0xB9, 0xFF, 0xD1, 0xBF, 0xA9, 0x11, 0x58, 0x39 }}
## Include/Protocol/SecurityPolicy.h
gEfiSecurityPolicyProtocolGuid = { 0x78E4D245, 0xCD4D, 0x4A05, { 0xA2, 0xBA, 0x47, 0x43, 0xE8, 0x6C, 0xFC, 0xAB }}
## Include/Protocol/Timer.h
gEfiTimerArchProtocolGuid = { 0x26BACCB3, 0x6F42, 0x11D4, { 0xBC, 0xE7, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
## Include/Protocol/VariableWrite.h
gEfiVariableWriteArchProtocolGuid = { 0x6441F818, 0x6362, 0x4E44, { 0xB5, 0x70, 0x7D, 0xBA, 0x31, 0xDD, 0x24, 0x53 }}
## Include/Protocol/Variable.h
gEfiVariableArchProtocolGuid = { 0x1E5668E2, 0x8481, 0x11D4, { 0xBC, 0xF1, 0x00, 0x80, 0xC7, 0x3C, 0x88, 0x81 }}
## Include/Protocol/WatchdogTimer.h
gEfiWatchdogTimerArchProtocolGuid = { 0x665E3FF5, 0x46CC, 0x11D4, { 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/StatusCode.h
gEfiStatusCodeRuntimeProtocolGuid = { 0xD2B2B828, 0x0826, 0x48A7, { 0xB3, 0xDF, 0x98, 0x3C, 0x00, 0x60, 0x24, 0xF0 }}
## Include/Protocol/SmbusHc.h
gEfiSmbusHcProtocolGuid = {0xe49d33ed, 0x513d, 0x4634, { 0xb6, 0x98, 0x6f, 0x55, 0xaa, 0x75, 0x1c, 0x1b} }
## Include/Protocol/FirmwareVolume2.h
gEfiFirmwareVolume2ProtocolGuid = { 0x220e73b6, 0x6bdb, 0x4413, { 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a } }
## Include/Protocol/FirmwareVolumeBlock.h
gEfiFirmwareVolumeBlockProtocolGuid = { 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } }
## Include/Protocol/Capsule.h
gEfiCapsuleArchProtocolGuid = { 0x5053697E, 0x2CBC, 0x4819, { 0x90, 0xD9, 0x05, 0x80, 0xDE, 0xEE, 0x57, 0x54 }}
#
# Protocols defined in PI 1.2.
#
## Include/Protocol/MpService.h
gEfiMpServiceProtocolGuid = { 0x3fdda605, 0xa76e, 0x4f46, { 0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08 }}
## Include/Protocol/PciHostBridgeResourceAllocation.h
gEfiPciHostBridgeResourceAllocationProtocolGuid = { 0xCF8034BE, 0x6768, 0x4d8b, { 0xb7, 0x39, 0x7c, 0xce, 0x68, 0x3a, 0x9f, 0xbe }}
## Include/Protocol/PciPlatform.h
gEfiPciPlatformProtocolGuid = { 0x07d75280, 0x27d4, 0x4d69, { 0x90, 0xd0, 0x56, 0x43, 0xe2, 0x38, 0xb3, 0x41 }}
## Include/Protocol/PciOverride.h
gEfiPciOverrideProtocolGuid = { 0xb5b35764, 0x460c, 0x4a06, {0x99, 0xfc, 0x77, 0xa1, 0x7c, 0x1b, 0x5c, 0xeb }}
## Include/Protocol/PciEnumerationComplete.h
gEfiPciEnumerationCompleteProtocolGuid = { 0x30cfe3e7, 0x3de1, 0x4586, {0xbe, 0x20, 0xde, 0xab, 0xa1, 0xb3, 0xb7, 0x93}}
## Include/Protocol/IncompatiblePciDeviceSupport.h
gEfiIncompatiblePciDeviceSupportProtocolGuid = { 0xeb23f55a, 0x7863, 0x4ac2, { 0x8d, 0x3d, 0x95, 0x65, 0x35, 0xde, 0x03, 0x75 }}
## Include/Protocol/PciHotPlugInit.h
gEfiPciHotPlugInitProtocolGuid = { 0xaa0e8bc1, 0xdabc, 0x46b0, { 0xa8, 0x44, 0x37, 0xb8, 0x16, 0x9b, 0x2b, 0xea }}
## This protocol is used to add or remove all PCI child devices on the PCI root bridge.
# Include/Protocol/PciHotPlugRequest.h
gEfiPciHotPlugRequestProtocolGuid = { 0x19CB87AB, 0x2CB9, 0x4665, { 0x83, 0x60, 0xDD, 0xCF, 0x60, 0x54, 0xF7, 0x9D }}
## Include/Protocol/IdeControllerInit.h
gEfiIdeControllerInitProtocolGuid = { 0xa1e37052, 0x80d9, 0x4e65, { 0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9 }}
## Disk Info protocol is used to export Inquiry Data for a drive.
# Include/Protocol/DiskInfo.h
gEfiDiskInfoProtocolGuid = { 0xD432A67F, 0x14DC, 0x484B, { 0xB3, 0xBB, 0x3F, 0x02, 0x91, 0x84, 0x93, 0x27 }}
## Include/Protocol/Smbios.h
gEfiSmbiosProtocolGuid = {0x3583ff6, 0xcb36, 0x4940, { 0x94, 0x7e, 0xb9, 0xb3, 0x9f, 0x4a, 0xfa, 0xf7}}
## Include/Protocol/S3SaveState.h
gEfiS3SaveStateProtocolGuid = {0xe857caf6, 0xc046, 0x45dc, { 0xbe, 0x3f, 0xee, 0x7, 0x65, 0xfb, 0xa8, 0x87}}
## Include/Protocol/S3SmmSaveState.h
gEfiS3SmmSaveStateProtocolGuid = {0x320afe62, 0xe593, 0x49cb, { 0xa9, 0xf1, 0xd4, 0xc2, 0xf4, 0xaf, 0x1, 0x4c}}
## Include/Protocol/ReportStatusCodeHandler.h
gEfiRscHandlerProtocolGuid = { 0x86212936, 0xe76, 0x41c8, { 0xa0, 0x3a, 0x2a, 0xf2, 0xfc, 0x1c, 0x39, 0xe2 }}
## Include/Protocol/SmmReportStatusCodeHandler.h
gEfiSmmRscHandlerProtocolGuid = { 0x2ff29fa7, 0x5e80, 0x4ed9, { 0xb3, 0x80, 0x1, 0x7d, 0x3c, 0x55, 0x4f, 0xf4 }}
## Include/Protocol/AcpiSystemDescriptionTable.h
gEfiAcpiSdtProtocolGuid = { 0xeb97088e, 0xcfdf, 0x49c6, { 0xbe, 0x4b, 0xd9, 0x6, 0xa5, 0xb2, 0xe, 0x86 }}
## Include/Protocol/SuperIo.h
gEfiSioProtocolGuid = { 0x215fdd18, 0xbd50, 0x4feb, { 0x89, 0xb, 0x58, 0xca, 0xb, 0x47, 0x39, 0xe9 }}
## Include/Protocol/SmmCpuIo2.h
gEfiSmmCpuIo2ProtocolGuid = { 0x3242a9d8, 0xce70, 0x4aa0, { 0x95, 0x5d, 0x5e, 0x7b, 0x14, 0x0d, 0xe4, 0xd2 }}
## Include/Protocol/SmmBase2.h
gEfiSmmBase2ProtocolGuid = { 0xf4ccbfb7, 0xf6e0, 0x47fd, { 0x9d, 0xd4, 0x10, 0xa8, 0xf1, 0x50, 0xc1, 0x91 }}
## Include/Protocol/SmmAccess2.h
gEfiSmmAccess2ProtocolGuid = { 0xc2702b74, 0x800c, 0x4131, { 0x87, 0x46, 0x8f, 0xb5, 0xb8, 0x9c, 0xe4, 0xac }}
## Include/Protocol/SmmControl2.h
gEfiSmmControl2ProtocolGuid = { 0x843dc720, 0xab1e, 0x42cb, { 0x93, 0x57, 0x8a, 0x0, 0x78, 0xf3, 0x56, 0x1b}}
## Include/Protocol/SmmConfiguration.h
gEfiSmmConfigurationProtocolGuid= { 0x26eeb3de, 0xb689, 0x492e, { 0x80, 0xf0, 0xbe, 0x8b, 0xd7, 0xda, 0x4b, 0xa7 }}
## Include/Protocol/SmmReadyToLock.h
gEfiSmmReadyToLockProtocolGuid = { 0x47b7fa8c, 0xf4bd, 0x4af6, { 0x82, 0x00, 0x33, 0x30, 0x86, 0xf0, 0xd2, 0xc8 }}
## Include/Protocol/DxeSmmReadyToLock.h
gEfiDxeSmmReadyToLockProtocolGuid = { 0x60ff8964, 0xe906, 0x41d0, { 0xaf, 0xed, 0xf2, 0x41, 0xe9, 0x74, 0xe0, 0x8e }}
## Include/Protocol/SmmCommunication.h
gEfiSmmCommunicationProtocolGuid = { 0xc68ed8e2, 0x9dc6, 0x4cbd, { 0x9d, 0x94, 0xdb, 0x65, 0xac, 0xc5, 0xc3, 0x32 }}
## Include/Protocol/SmmStatusCode.h
gEfiSmmStatusCodeProtocolGuid = { 0x6afd2b77, 0x98c1, 0x4acd, { 0xa6, 0xf9, 0x8a, 0x94, 0x39, 0xde, 0xf, 0xb1}}
## Include/Protocol/SmmCpu.h
gEfiSmmCpuProtocolGuid = { 0xeb346b97, 0x975f, 0x4a9f, { 0x8b, 0x22, 0xf8, 0xe9, 0x2b, 0xb3, 0xd5, 0x69 }}
## Include/Protocol/SmmPciRootBridgeIo.h
gEfiSmmPciRootBridgeIoProtocolGuid = { 0x8bc1714d, 0xffcb, 0x41c3, { 0x89, 0xdc, 0x6c, 0x74, 0xd0, 0x6d, 0x98, 0xea }}
## Include/Protocol/SmmSwDispatch2.h
gEfiSmmSwDispatch2ProtocolGuid = { 0x18a3c6dc, 0x5eea, 0x48c8, {0xa1, 0xc1, 0xb5, 0x33, 0x89, 0xf9, 0x89, 0x99 }}
## Include/Protocol/SmmSxDispatch2.h
gEfiSmmSxDispatch2ProtocolGuid = { 0x456d2859, 0xa84b, 0x4e47, {0xa2, 0xee, 0x32, 0x76, 0xd8, 0x86, 0x99, 0x7d }}
## Include/Protocol/SmmPeriodicTimerDispatch2.h
gEfiSmmPeriodicTimerDispatch2ProtocolGuid = { 0x4cec368e, 0x8e8e, 0x4d71, {0x8b, 0xe1, 0x95, 0x8c, 0x45, 0xfc, 0x8a, 0x53 }}
## Include/Protocol/SmmUsbDispatch2.h
gEfiSmmUsbDispatch2ProtocolGuid = { 0xee9b8d90, 0xc5a6, 0x40a2, {0xbd, 0xe2, 0x52, 0x55, 0x8d, 0x33, 0xcc, 0xa1 }}
## Include/Protocol/SmmGpiDispatch2.h
gEfiSmmGpiDispatch2ProtocolGuid = { 0x25566b03, 0xb577, 0x4cbf, {0x95, 0x8c, 0xed, 0x66, 0x3e, 0xa2, 0x43, 0x80 }}
## Include/Protocol/SmmStandbyButtonDispatch2.h
gEfiSmmStandbyButtonDispatch2ProtocolGuid = { 0x7300c4a1, 0x43f2, 0x4017, {0xa5, 0x1b, 0xc8, 0x1a, 0x7f, 0x40, 0x58, 0x5b }}
## Include/Protocol/SmmPowerButtonDispatch2.h
gEfiSmmPowerButtonDispatch2ProtocolGuid = { 0x1b1183fa, 0x1823, 0x46a7, {0x88, 0x72, 0x9c, 0x57, 0x87, 0x55, 0x40, 0x9d }}
## Include/Protocol/SmmIoTrapDispatch2.h
gEfiSmmIoTrapDispatch2ProtocolGuid = { 0x58dc368d, 0x7bfa, 0x4e77, {0xab, 0xbc, 0xe, 0x29, 0x41, 0x8d, 0xf9, 0x30 }}
## Include/Protocol/PiPcd.h
gEfiPcdProtocolGuid = { 0x13a3f0f6, 0x264a, 0x3ef0, { 0xf2, 0xe0, 0xde, 0xc5, 0x12, 0x34, 0x2f, 0x34 } }
## Include/Protocol/FirmwareVolumeBlock.h
gEfiFirmwareVolumeBlock2ProtocolGuid = { 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } }
## Include/Protocol/CpuIo2.h
gEfiCpuIo2ProtocolGuid = {0xad61f191, 0xae5f, 0x4c0e, {0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f } }
## Include/Protocol/LegacyRegion2.h
gEfiLegacyRegion2ProtocolGuid = {0x70101eaf, 0x85, 0x440c, {0xb3, 0x56, 0x8e, 0xe3, 0x6f, 0xef, 0x24, 0xf0 } }
- ## Include/Protocol/McaInitPmi.h
- gEfiSalMcaInitPmiProtocolGuid = { 0xb60dc6e8, 0x3b6f, 0x11d5, {0xaf, 0x9, 0x0, 0xa0, 0xc9, 0x44, 0xa0, 0x5b } }
-
- ## Include/Protocol/ExtendedSalBootService.h
- gEfiExtendedSalBootServiceProtocolGuid = { 0xde0ee9a4, 0x3c7a, 0x44f2, {0xb7, 0x8b, 0xe3, 0xcc, 0xd6, 0x9c, 0x3a, 0xf7 } }
-
- ## Include/Protocol/ExtendedSalServiceClasses.h
- gEfiExtendedSalBaseIoServicesProtocolGuid = { 0x5aea42b5, 0x31e1, 0x4515, {0xbc, 0x31, 0xb8, 0xd5, 0x25, 0x75, 0x65, 0xa6 } }
- gEfiExtendedSalStallServicesProtocolGuid = { 0x53a58d06, 0xac27, 0x4d8c, {0xb5, 0xe9, 0xf0, 0x8a, 0x80, 0x65, 0x41, 0x70 } }
- gEfiExtendedSalRtcServicesProtocolGuid = { 0x7e97a470, 0xefdb, 0x4d02, {0x8f, 0xce, 0x61, 0x90, 0xd2, 0x7b, 0xa2, 0x96 } }
- gEfiExtendedSalVariableServicesProtocolGuid = { 0x4ecb6c53, 0xc641, 0x4370, {0x8c, 0xb2, 0x3b, 0x0e, 0x49, 0x6e, 0x83, 0x78 } }
- gEfiExtendedSalMtcServicesProtocolGuid = { 0x899afd18, 0x75e8, 0x408b, {0xa4, 0x1a, 0x6e, 0x2e, 0x7e, 0xcd, 0xf4, 0x54 } }
- gEfiExtendedSalResetServicesProtocolGuid = { 0x7d019990, 0x8ce1, 0x46f5, {0xa7, 0x76, 0x3c, 0x51, 0x98, 0x67, 0x6a, 0xa0 } }
- gEfiExtendedSalStatusCodeServicesProtocolGuid = { 0xdbd91d, 0x55e9, 0x420f, {0x96, 0x39, 0x5e, 0x9f, 0x84, 0x37, 0xb4, 0x4f } }
- gEfiExtendedSalFvBlockServicesProtocolGuid = { 0xa2271df1, 0xbcbb, 0x4f1d, {0x98, 0xa9, 0x06, 0xbc, 0x17, 0x2f, 0x07, 0x1a } }
- gEfiExtendedSalMpServicesProtocolGuid = { 0x697d81a2, 0xcf18, 0x4dc0, {0x9e, 0x0d, 0x06, 0x11, 0x3b, 0x61, 0x8a, 0x3f } }
- gEfiExtendedSalPalServicesProtocolGuid = { 0xe1cd9d21, 0x0fc2, 0x438d, {0x97, 0x03, 0x04, 0xe6, 0x6d, 0x96, 0x1e, 0x57 } }
- gEfiExtendedSalBaseServicesProtocolGuid = { 0xd9e9fa06, 0x0fe0, 0x41c3, {0x96, 0xfb, 0x83, 0x42, 0x5a, 0x33, 0x94, 0xf8 } }
- gEfiExtendedSalMcaServicesProtocolGuid = { 0x2a591128, 0x6cc7, 0x42b1, {0x8a, 0xf0, 0x58, 0x93, 0x3b, 0x68, 0x2d, 0xbb } }
- gEfiExtendedSalPciServicesProtocolGuid = { 0xa46b1a31, 0xad66, 0x4905, {0x92, 0xf6, 0x2b, 0x46, 0x59, 0xdc, 0x30, 0x63 } }
- gEfiExtendedSalCacheServicesProtocolGuid = { 0xedc9494, 0x2743, 0x4ba5, { 0x88, 0x18, 0x0a, 0xef, 0x52, 0x13, 0xf1, 0x88 } }
- gEfiExtendedSalMcaLogServicesProtocolGuid = { 0xcb3fd86e, 0x38a3, 0x4c03, {0x9a, 0x5c, 0x90, 0xcf, 0xa3, 0xa2, 0xab, 0x7a } }
-
#
# Protocols defined in PI 1.2.1
#
## Include/Protocol/Security2.h
gEfiSecurity2ArchProtocolGuid = { 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68 } }
## Include/Protocol/SmmEndOfDxe.h
gEfiSmmEndOfDxeProtocolGuid = { 0x24e70042, 0xd5c5, 0x4260, { 0x8c, 0x39, 0xa, 0xd3, 0xaa, 0x32, 0xe9, 0x3d }}
## Include/Protocol/IsaHc.h
gEfiIsaHcProtocolGuid = { 0xbcdaf080, 0x1bde, 0x4e22, {0xae, 0x6a, 0x43, 0x54, 0x1e, 0x12, 0x8e, 0xc4 } }
gEfiIsaHcServiceBindingProtocolGuid = { 0xfad7933a, 0x6c21, 0x4234, {0xa4, 0x34, 0x0a, 0x8a, 0x0d, 0x2b, 0x07, 0x81 } }
## Include/Protocol/SuperIoControl.h
gEfiSioControlProtocolGuid = { 0xb91978df, 0x9fc1, 0x427d, { 0xbb, 0x5, 0x4c, 0x82, 0x84, 0x55, 0xca, 0x27 } }
## Include/Protocol/PiPcdInfo.h
gEfiGetPcdInfoProtocolGuid = { 0xfd0f4478, 0xefd, 0x461d, { 0xba, 0x2d, 0xe5, 0x8c, 0x45, 0xfd, 0x5f, 0x5e } }
#
# Protocols defined in PI 1.3.
#
## Include/Protocol/I2cMaster.h
gEfiI2cMasterProtocolGuid = { 0xcd72881f, 0x45b5, 0x4feb, { 0x98, 0xc8, 0x31, 0x3d, 0xa8, 0x11, 0x74, 0x62 }}
## Include/Protocol/I2cIo.h
gEfiI2cIoProtocolGuid = { 0xb60a3e6b, 0x18c4, 0x46e5, { 0xa2, 0x9a, 0xc9, 0xa1, 0x06, 0x65, 0xa2, 0x8e }}
## Include/Protocol/I2cEnumerate.h
gEfiI2cEnumerateProtocolGuid = { 0xda8cd7c4, 0x1c00, 0x49e2, { 0x80, 0x3e, 0x52, 0x14, 0xe7, 0x01, 0x89, 0x4c }}
## Include/Protocol/I2cHost.h
gEfiI2cHostProtocolGuid = { 0xa5aab9e3, 0xc727, 0x48cd, { 0x8b, 0xbf, 0x42, 0x72, 0x33, 0x85, 0x49, 0x48 }}
## Include/Protocol/I2cBusConfigurationManagement.h
gEfiI2cBusConfigurationManagementProtocolGuid = { 0x55b71fb5, 0x17c6, 0x410e, { 0xb5, 0xbd, 0x5f, 0xa2, 0xe3, 0xd4, 0x46, 0x6b }}
#
+ # Protocols defined in PI 1.5.
+ #
+
+ ## Include/Protocol/MmMp.h
+ gEfiMmMpProtocolGuid = { 0x5d5450d7, 0x990c, 0x4180, { 0xa8, 0x3, 0x8e, 0x63, 0xf0, 0x60, 0x83, 0x7 }}
+
+ ## Include/Protocol/MmEndOfDxe.h
+ gEfiMmEndOfDxeProtocolGuid = { 0x24e70042, 0xd5c5, 0x4260, { 0x8c, 0x39, 0xa, 0xd3, 0xaa, 0x32, 0xe9, 0x3d }}
+
+ ## Include/Protocol/MmIoTrapDispatch.h
+ gEfiMmIoTrapDispatchProtocolGuid = { 0x58dc368d, 0x7bfa, 0x4e77, {0xab, 0xbc, 0xe, 0x29, 0x41, 0x8d, 0xf9, 0x30 }}
+
+ ## Include/Protocol/MmPowerButtonDispatch.h
+ gEfiMmPowerButtonDispatchProtocolGuid = { 0x1b1183fa, 0x1823, 0x46a7, {0x88, 0x72, 0x9c, 0x57, 0x87, 0x55, 0x40, 0x9d }}
+
+ ## Include/Protocol/MmStandbyButtonDispatch.h
+ gEfiMmStandbyButtonDispatchProtocolGuid = { 0x7300c4a1, 0x43f2, 0x4017, {0xa5, 0x1b, 0xc8, 0x1a, 0x7f, 0x40, 0x58, 0x5b }}
+
+ ## Include/Protocol/MmGpiDispatch.h
+ gEfiMmGpiDispatchProtocolGuid = { 0x25566b03, 0xb577, 0x4cbf, {0x95, 0x8c, 0xed, 0x66, 0x3e, 0xa2, 0x43, 0x80 }}
+
+ ## Include/Protocol/MmUsbDispatch.h
+ gEfiMmUsbDispatchProtocolGuid = { 0xee9b8d90, 0xc5a6, 0x40a2, {0xbd, 0xe2, 0x52, 0x55, 0x8d, 0x33, 0xcc, 0xa1 }}
+
+ ## Include/Protocol/MmPeriodicTimerDispatch.h
+ gEfiMmPeriodicTimerDispatchProtocolGuid = { 0x4cec368e, 0x8e8e, 0x4d71, {0x8b, 0xe1, 0x95, 0x8c, 0x45, 0xfc, 0x8a, 0x53 }}
+
+ ## Include/Protocol/MmSxDispatch.h
+ gEfiMmSxDispatchProtocolGuid = { 0x456d2859, 0xa84b, 0x4e47, {0xa2, 0xee, 0x32, 0x76, 0xd8, 0x86, 0x99, 0x7d }}
+
+ ## Include/Protocol/MmSwDispatch.h
+ gEfiMmSwDispatchProtocolGuid = { 0x18a3c6dc, 0x5eea, 0x48c8, {0xa1, 0xc1, 0xb5, 0x33, 0x89, 0xf9, 0x89, 0x99 }}
+
+ ## Include/Protocol/MmPciRootBridgeIo.h
+ gEfiMmPciRootBridgeIoProtocolGuid = { 0x8bc1714d, 0xffcb, 0x41c3, { 0x89, 0xdc, 0x6c, 0x74, 0xd0, 0x6d, 0x98, 0xea }}
+
+ ## Include/Protocol/MmCpu.h
+ gEfiMmCpuProtocolGuid = { 0xeb346b97, 0x975f, 0x4a9f, { 0x8b, 0x22, 0xf8, 0xe9, 0x2b, 0xb3, 0xd5, 0x69 }}
+
+ ## Include/Protocol/MmStatusCode.h
+ gEfiMmStatusCodeProtocolGuid = { 0x6afd2b77, 0x98c1, 0x4acd, { 0xa6, 0xf9, 0x8a, 0x94, 0x39, 0xde, 0xf, 0xb1}}
+
+ ## Include/Protocol/DxeMmReadyToLock.h
+ gEfiDxeMmReadyToLockProtocolGuid = { 0x60ff8964, 0xe906, 0x41d0, { 0xaf, 0xed, 0xf2, 0x41, 0xe9, 0x74, 0xe0, 0x8e }}
+
+ ## Include/Protocol/MmConfiguration.h
+ gEfiMmConfigurationProtocolGuid= { 0x26eeb3de, 0xb689, 0x492e, { 0x80, 0xf0, 0xbe, 0x8b, 0xd7, 0xda, 0x4b, 0xa7 }}
+
+ ## Include/Protocol/MmReadyToLock.h
+ gEfiMmReadyToLockProtocolGuid = { 0x47b7fa8c, 0xf4bd, 0x4af6, { 0x82, 0x00, 0x33, 0x30, 0x86, 0xf0, 0xd2, 0xc8 }}
+
+ ## Include/Protocol/MmControl.h
+ gEfiMmControlProtocolGuid = { 0x843dc720, 0xab1e, 0x42cb, { 0x93, 0x57, 0x8a, 0x0, 0x78, 0xf3, 0x56, 0x1b}}
+
+ ## Include/Protocol/MmAccess.h
+ gEfiMmAccessProtocolGuid = { 0xc2702b74, 0x800c, 0x4131, { 0x87, 0x46, 0x8f, 0xb5, 0xb8, 0x9c, 0xe4, 0xac }}
+
+ ## Include/Protocol/MmBase.h
+ gEfiMmBaseProtocolGuid = { 0xf4ccbfb7, 0xf6e0, 0x47fd, { 0x9d, 0xd4, 0x10, 0xa8, 0xf1, 0x50, 0xc1, 0x91 }}
+
+ ## Include/Protocol/MmCpuIo.h
+ gEfiMmCpuIoProtocolGuid = { 0x3242a9d8, 0xce70, 0x4aa0, { 0x95, 0x5d, 0x5e, 0x7b, 0x14, 0x0d, 0xe4, 0xd2 }}
+
+ ## Include/Protocol/MmReportStatusCodeHandler.h
+ gEfiMmRscHandlerProtocolGuid = { 0x2ff29fa7, 0x5e80, 0x4ed9, { 0xb3, 0x80, 0x1, 0x7d, 0x3c, 0x55, 0x4f, 0xf4 }}
+
+ ## Include/Protocol/MmCommunication.h
+ gEfiMmCommunicationProtocolGuid = { 0xc68ed8e2, 0x9dc6, 0x4cbd, { 0x9d, 0x94, 0xdb, 0x65, 0xac, 0xc5, 0xc3, 0x32 }}
+
+ #
+ # Protocols defined in PI 1.6.
+ #
+
+ ## Include/Protocol/LegacySpiController.h
+ gEfiLegacySpiControllerProtocolGuid = { 0x39136fc7, 0x1a11, 0x49de, { 0xbf, 0x35, 0x0e, 0x78, 0xdd, 0xb5, 0x24, 0xfc }}
+
+ ## Include/Protocol/LegacySpiFlash.h
+ gEfiLegacySpiFlashProtocolGuid = { 0xf01bed57, 0x04bc, 0x4f3f, { 0x96, 0x60, 0xd6, 0xf2, 0xea, 0x22, 0x82, 0x59 }}
+
+ ## Include/Protocol/LegacySpiSmmController.h
+ gEfiLegacySpiSmmControllerProtocolGuid = { 0x62331b78, 0xd8d0, 0x4c8c, { 0x8c, 0xcb, 0xd2, 0x7d, 0xfe, 0x32, 0xdb, 0x9b }}
+
+ ## Include/Protocol/LegacySpiSmmFlash.h
+ gEfiLegacySpiSmmFlashProtocolGuid = { 0x5e3848d4, 0x0db5, 0x4fc0, { 0x97, 0x29, 0x3f, 0x35, 0x3d, 0x4f, 0x87, 0x9f }}
+
+ ## Include/Protocol/SpiConfiguration.h
+ gEfiSpiConfigurationProtocolGuid = { 0x85a6d3e6, 0xb65b, 0x4afc, { 0xb3, 0x8f, 0xc6, 0xd5, 0x4a, 0xf6, 0xdd, 0xc8 }}
+
+ ## Include/Protocol/SpiHc.h
+ gEfiSpiHcProtocolGuid = { 0xc74e5db2, 0xfa96, 0x4ae2, { 0xb3, 0x99, 0x15, 0x97, 0x7f, 0xe3, 0x0, 0x2d }}
+
+ ## Include/Protocol/SpiNorFlash.h
+ gEfiSpiNorFlashProtocolGuid = { 0xb57ec3fe, 0xf833, 0x4ba6, { 0x85, 0x78, 0x2a, 0x7d, 0x6a, 0x87, 0x44, 0x4b }}
+
+ ## Include/Protocol/SpiSmmConfiguration.h
+ gEfiSpiSmmConfigurationProtocolGuid = { 0x995c6eca, 0x171b, 0x45fd, { 0xa3, 0xaa, 0xfd, 0x4c, 0x9c, 0x9d, 0xef, 0x59 }}
+
+ ## Include/Protocol/SpiSmmHc.h
+ gEfiSpiSmmHcProtocolGuid = { 0xe9f02217, 0x2093, 0x4470, { 0x8a, 0x54, 0x5c, 0x2c, 0xff, 0xe7, 0x3e, 0xcb }}
+
+ ## Include/Protocol/SpiSmmNorFlash.h
+ gEfiSpiSmmNorFlashProtocolGuid = { 0xaab18f19, 0xfe14, 0x4666, { 0x86, 0x04, 0x87, 0xff, 0x6d, 0x66, 0x2c, 0x9a }}
+
+ #
+ # Protocols defined in PI 1.7.
+ #
+
+ ## Include/Protocol/MmCommunication2.h
+ gEfiMmCommunication2ProtocolGuid = { 0x378daedc, 0xf06b, 0x4446, { 0x83, 0x14, 0x40, 0xab, 0x93, 0x3c, 0x87, 0xa3 }}
+
+ #
# Protocols defined in UEFI2.1/UEFI2.0/EFI1.1
#
## Include/Protocol/DebugPort.h
gEfiDebugPortProtocolGuid = { 0xEBA4E8D2, 0x3858, 0x41EC, { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 }}
## Include/Protocol/DebugSupport.h
gEfiDebugSupportProtocolGuid = { 0x2755590C, 0x6F3C, 0x42FA, { 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 }}
## Include/Protocol/Decompress.h
gEfiDecompressProtocolGuid = { 0xD8117CFE, 0x94A6, 0x11D4, { 0x9A, 0x3A, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/DeviceIo.h
gEfiDeviceIoProtocolGuid = { 0xAF6AC311, 0x84C3, 0x11D2, { 0x8E, 0x3C, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/DevicePath.h
gEfiDevicePathProtocolGuid = { 0x09576E91, 0x6D3F, 0x11D2, { 0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/DevicePathFromText.h
gEfiDevicePathFromTextProtocolGuid = { 0x05C99A21, 0xC70F, 0x4AD2, { 0x8A, 0x5F, 0x35, 0xDF, 0x33, 0x43, 0xF5, 0x1E }}
## Include/Protocol/DevicePathToText.h
gEfiDevicePathToTextProtocolGuid = { 0x8B843E20, 0x8132, 0x4852, { 0x90, 0xCC, 0x55, 0x1A, 0x4E, 0x4A, 0x7F, 0x1C }}
## Include/Protocol/DevicePathUtilities.h
gEfiDevicePathUtilitiesProtocolGuid = { 0x0379BE4E, 0xD706, 0x437D, { 0xB0, 0x37, 0xED, 0xB8, 0x2F, 0xB7, 0x72, 0xA4 }}
## Include/Protocol/DriverBinding.h
gEfiDriverBindingProtocolGuid = { 0x18A031AB, 0xB443, 0x4D1A, { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71 }}
## Include/Protocol/PlatformDriverOverride.h
gEfiPlatformDriverOverrideProtocolGuid = { 0x6b30c738, 0xa391, 0x11d4, {0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
## Include/Protocol/DriverFamilyOverride.h
gEfiDriverFamilyOverrideProtocolGuid = { 0xb1ee129e, 0xda36, 0x4181, { 0x91, 0xf8, 0x4, 0xa4, 0x92, 0x37, 0x66, 0xa7 }}
## Include/Protocol/BusSpecificDriverOverride.h
gEfiBusSpecificDriverOverrideProtocolGuid = { 0x3BC1B285, 0x8A15, 0x4A82, { 0xAA, 0xBF, 0x4D, 0x7D, 0x13, 0xFB, 0x32, 0x65 }}
## Include/Protocol/DriverDiagnostics2.h
gEfiDriverDiagnostics2ProtocolGuid = { 0x4D330321, 0x025F, 0x4AAC, { 0x90, 0xD8, 0x5E, 0xD9, 0x00, 0x17, 0x3B, 0x63 }}
## Include/Protocol/DriverDiagnostics.h
gEfiDriverDiagnosticsProtocolGuid = { 0x0784924F, 0xE296, 0x11D4, { 0x9A, 0x49, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/ComponentName2.h
gEfiComponentName2ProtocolGuid = { 0x6A7A5CFF, 0xE8D9, 0x4F70, { 0xBA, 0xDA, 0x75, 0xAB, 0x30, 0x25, 0xCE, 0x14 }}
## Include/Protocol/ComponentName.h
gEfiComponentNameProtocolGuid = { 0x107A772C, 0xD5E1, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/DriverConfiguration2.h
gEfiDriverConfiguration2ProtocolGuid = { 0xBFD7DC1D, 0x24F1, 0x40D9, { 0x82, 0xE7, 0x2E, 0x09, 0xBB, 0x6B, 0x4E, 0xBE }}
## Include/Protocol/DriverConfiguration.h
gEfiDriverConfigurationProtocolGuid = { 0x107A772B, 0xD5E1, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/PlatformToDriverConfiguration.h
gEfiPlatformToDriverConfigurationProtocolGuid = { 0x642cd590, 0x8059, 0x4c0a, { 0xa9, 0x58, 0xc5, 0xec, 0x7, 0xd2, 0x3c, 0x4b } }
## Include/Protocol/DriverSupportedEfiVersion.h
gEfiDriverSupportedEfiVersionProtocolGuid = { 0x5c198761, 0x16a8, 0x4e69, { 0x97, 0x2c, 0x89, 0xd6, 0x79, 0x54, 0xf8, 0x1d } }
## Include/Protocol/SimpleTextIn.h
gEfiSimpleTextInProtocolGuid = { 0x387477C1, 0x69C7, 0x11D2, { 0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/SimpleTextInEx.h
gEfiSimpleTextInputExProtocolGuid = {0xdd9e7534, 0x7762, 0x4698, { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } }
## Include/Protocol/SimpleTextOut.h
gEfiSimpleTextOutProtocolGuid = { 0x387477C2, 0x69C7, 0x11D2, { 0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/SimplePointer.h
gEfiSimplePointerProtocolGuid = { 0x31878C87, 0x0B75, 0x11D5, { 0x9A, 0x4F, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/AbsolutePointer.h
gEfiAbsolutePointerProtocolGuid = { 0x8D59D32B, 0xC655, 0x4AE9, { 0x9B, 0x15, 0xF2, 0x59, 0x04, 0x99, 0x2A, 0x43 } }
## Include/Protocol/SerialIo.h
gEfiSerialIoProtocolGuid = { 0xBB25CF6F, 0xF1D4, 0x11D2, { 0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD }}
## Include/Protocol/GraphicsOutput.h
gEfiGraphicsOutputProtocolGuid = { 0x9042A9DE, 0x23DC, 0x4A38, { 0x96, 0xFB, 0x7A, 0xDE, 0xD0, 0x80, 0x51, 0x6A }}
## Include/Protocol/EdidDiscovered.h
gEfiEdidDiscoveredProtocolGuid = { 0x1C0C34F6, 0xD380, 0x41FA, { 0xA0, 0x49, 0x8A, 0xD0, 0x6C, 0x1A, 0x66, 0xAA }}
## Include/Protocol/EdidActive.h
gEfiEdidActiveProtocolGuid = { 0xBD8C1056, 0x9F36, 0x44EC, { 0x92, 0xA8, 0xA6, 0x33, 0x7F, 0x81, 0x79, 0x86 }}
## Include/Protocol/EdidOverride.h
gEfiEdidOverrideProtocolGuid = { 0x48ECB431, 0xFB72, 0x45C0, { 0xA9, 0x22, 0xF4, 0x58, 0xFE, 0x04, 0x0B, 0xD5 }}
## Include/Protocol/UgaIo.h
gEfiUgaIoProtocolGuid = { 0x61A4D49E, 0x6F68, 0x4F1B, { 0xB9, 0x22, 0xA8, 0x6E, 0xED, 0x0B, 0x07, 0xA2 }}
## Include/Protocol/UgaDraw.h
gEfiUgaDrawProtocolGuid = { 0x982C298B, 0xF4FA, 0x41CB, { 0xB8, 0x38, 0x77, 0xAA, 0x68, 0x8F, 0xB8, 0x39 }}
## Include/Protocol/LoadedImage.h
gEfiLoadedImageProtocolGuid = { 0x5B1B31A1, 0x9562, 0x11D2, { 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/LoadedImage.h
gEfiLoadedImageDevicePathProtocolGuid = { 0xbc62157e, 0x3e33, 0x4fec, {0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf }}
## Include/Protocol/LoadFile.h
gEfiLoadFileProtocolGuid = { 0x56EC3091, 0x954C, 0x11D2, { 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/LoadFile2.h
gEfiLoadFile2ProtocolGuid = { 0x4006c0c1, 0xfcb3, 0x403e, {0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d }}
## Include/Protocol/SimpleFileSystem.h
gEfiSimpleFileSystemProtocolGuid = { 0x964E5B22, 0x6459, 0x11D2, { 0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/TapeIo.h
gEfiTapeIoProtocolGuid = { 0x1E93E633, 0xD65A, 0x459E, { 0xAB, 0x84, 0x93, 0xD9, 0xEC, 0x26, 0x6D, 0x18 }}
## Include/Protocol/DiskIo.h
gEfiDiskIoProtocolGuid = { 0xCE345171, 0xBA0B, 0x11D2, { 0x8E, 0x4F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/BlockIo.h
gEfiBlockIoProtocolGuid = { 0x964E5B21, 0x6459, 0x11D2, { 0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/UnicodeCollation.h
gEfiUnicodeCollationProtocolGuid = { 0x1D85CD7F, 0xF43D, 0x11D2, { 0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/UnicodeCollation.h
gEfiUnicodeCollation2ProtocolGuid = {0xa4c751fc, 0x23ae, 0x4c3e, { 0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49 }}
## Include/Protocol/PciRootBridgeIo.h
gEfiPciRootBridgeIoProtocolGuid = { 0x2F707EBB, 0x4A1A, 0x11D4, { 0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/PciIo.h
gEfiPciIoProtocolGuid = { 0x4CF5B200, 0x68B8, 0x4CA5, { 0x9E, 0xEC, 0xB2, 0x3E, 0x3F, 0x50, 0x02, 0x9A }}
## Include/Protocol/ScsiIo.h
gEfiScsiIoProtocolGuid = { 0x932F47e6, 0x2362, 0x4002, { 0x80, 0x3E, 0x3C, 0xD5, 0x4B, 0x13, 0x8F, 0x85 }}
## Include/Protocol/ScsiPassThruExt.h
gEfiExtScsiPassThruProtocolGuid = { 0x143b7632, 0xb81b, 0x4cb7, {0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe }}
## Include/Protocol/ScsiPassThru.h
gEfiScsiPassThruProtocolGuid = { 0xA59E8FCF, 0xBDA0, 0x43BB, { 0x90, 0xB1, 0xD3, 0x73, 0x2E, 0xCA, 0xA8, 0x77 }}
## Include/Protocol/IScsiInitiatorName.h
gEfiIScsiInitiatorNameProtocolGuid = { 0x59324945, 0xEC44, 0x4C0D, { 0xB1, 0xCD, 0x9D, 0xB1, 0x39, 0xDF, 0x07, 0x0C }}
## Include/Protocol/Usb2HostController.h
gEfiUsb2HcProtocolGuid = { 0x3E745226, 0x9818, 0x45B6, { 0xA2, 0xAC, 0xD7, 0xCD, 0x0E, 0x8B, 0xA2, 0xBC }}
## Include/Protocol/UsbHostController.h
gEfiUsbHcProtocolGuid = { 0xF5089266, 0x1AA0, 0x4953, { 0x97, 0xD8, 0x56, 0x2F, 0x8A, 0x73, 0xB5, 0x19 }}
## Include/Protocol/UsbIo.h
gEfiUsbIoProtocolGuid = { 0x2B2F68D6, 0x0CD2, 0x44CF, { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 }}
## Include/Protocol/AcpiTable.h
gEfiAcpiTableProtocolGuid = { 0xFFE06BDD, 0x6107, 0x46A6, { 0x7B, 0xB2, 0x5A, 0x9C, 0x7E, 0xC5, 0x27, 0x5C }}
## Include/Protocol/Ebc.h
gEfiEbcProtocolGuid = { 0x13AC6DD1, 0x73D0, 0x11D4, { 0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7 }}
## Include/Protocol/SimpleNetwork.h
gEfiSimpleNetworkProtocolGuid = { 0xA19832B9, 0xAC25, 0x11D3, { 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/NetworkInterfaceIdentifier.h
gEfiNetworkInterfaceIdentifierProtocolGuid_31 = { 0x1ACED566, 0x76ED, 0x4218, { 0xBC, 0x81, 0x76, 0x7F, 0x1F, 0x97, 0x7A, 0x89 }}
## Include/Protocol/NetworkInterfaceIdentifier.h
gEfiNetworkInterfaceIdentifierProtocolGuid = { 0xE18541CD, 0xF755, 0x4F73, { 0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29 }}
## Include/Protocol/PxeBaseCodeCallBack.h
gEfiPxeBaseCodeCallbackProtocolGuid = { 0x245DCA21, 0xFB7B, 0x11D3, { 0x8F, 0x01, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }}
## Include/Protocol/PxeBaseCode.h
gEfiPxeBaseCodeProtocolGuid = { 0x03C4E603, 0xAC28, 0x11D3, { 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
## Include/Protocol/Bis.h
gEfiBisProtocolGuid = { 0x0B64AAB0, 0x5429, 0x11D4, { 0x98, 0x16, 0x00, 0xA0, 0xC9, 0x1F, 0xAD, 0xCF }}
## Include/Protocol/ManagedNetwork.h
gEfiManagedNetworkServiceBindingProtocolGuid = { 0xF36FF770, 0xA7E1, 0x42CF, { 0x9E, 0xD2, 0x56, 0xF0, 0xF2, 0x71, 0xF4, 0x4C }}
## Include/Protocol/ManagedNetwork.h
gEfiManagedNetworkProtocolGuid = { 0x7ab33a91, 0xace5, 0x4326, { 0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16 }}
## Include/Protocol/Arp.h
gEfiArpServiceBindingProtocolGuid = { 0xF44C00EE, 0x1F2C, 0x4A00, { 0xAA, 0x09, 0x1C, 0x9F, 0x3E, 0x08, 0x00, 0xA3 }}
## Include/Protocol/Arp.h
gEfiArpProtocolGuid = { 0xF4B427BB, 0xBA21, 0x4F16, { 0xBC, 0x4E, 0x43, 0xE4, 0x16, 0xAB, 0x61, 0x9C }}
## Include/Protocol/Dhcp4.h
gEfiDhcp4ServiceBindingProtocolGuid = { 0x9D9A39D8, 0xBD42, 0x4A73, { 0xA4, 0xD5, 0x8E, 0xE9, 0x4B, 0xE1, 0x13, 0x80 }}
## Include/Protocol/Dhcp4.h
gEfiDhcp4ProtocolGuid = { 0x8A219718, 0x4EF5, 0x4761, { 0x91, 0xC8, 0xC0, 0xF0, 0x4B, 0xDA, 0x9E, 0x56 }}
## Include/Protocol/Tcp4.h
gEfiTcp4ServiceBindingProtocolGuid = { 0x00720665, 0x67EB, 0x4A99, { 0xBA, 0xF7, 0xD3, 0xC3, 0x3A, 0x1C, 0x7C, 0xC9 }}
## Include/Protocol/Tcp4.h
gEfiTcp4ProtocolGuid = { 0x65530BC7, 0xA359, 0x410F, { 0xB0, 0x10, 0x5A, 0xAD, 0xC7, 0xEC, 0x2B, 0x62 }}
## Include/Protocol/Ip4.h
gEfiIp4ServiceBindingProtocolGuid = { 0xC51711E7, 0xB4BF, 0x404A, { 0xBF, 0xB8, 0x0A, 0x04, 0x8E, 0xF1, 0xFF, 0xE4 }}
## Include/Protocol/Ip4.h
gEfiIp4ProtocolGuid = { 0x41D94CD2, 0x35B6, 0x455A, { 0x82, 0x58, 0xD4, 0xE5, 0x13, 0x34, 0xAA, 0xDD }}
## Include/Protocol/Ip4Config.h
gEfiIp4ConfigProtocolGuid = { 0x3B95AA31, 0x3793, 0x434B, { 0x86, 0x67, 0xC8, 0x07, 0x08, 0x92, 0xE0, 0x5E }}
## Include/Protocol/Udp4.h
gEfiUdp4ServiceBindingProtocolGuid = { 0x83F01464, 0x99BD, 0x45E5, { 0xB3, 0x83, 0xAF, 0x63, 0x05, 0xD8, 0xE9, 0xE6 }}
## Include/Protocol/Udp4.h
gEfiUdp4ProtocolGuid = { 0x3AD9DF29, 0x4501, 0x478D, { 0xB1, 0xF8, 0x7F, 0x7F, 0xE7, 0x0E, 0x50, 0xF3 }}
## Include/Protocol/Mtftp4.h
gEfiMtftp4ServiceBindingProtocolGuid = { 0x2FE800BE, 0x8F01, 0x4AA6, { 0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F }}
## Include/Protocol/Mtftp4.h
gEfiMtftp4ProtocolGuid = { 0x78247C57, 0x63DB, 0x4708, { 0x99, 0xC2, 0xA8, 0xB4, 0xA9, 0xA6, 0x1F, 0x6B }}
## Include/Protocol/AuthenticationInfo.h
gEfiAuthenticationInfoProtocolGuid = { 0x7671D9D0, 0x53DB, 0x4173, { 0xAA, 0x69, 0x23, 0x27, 0xF2, 0x1F, 0x0B, 0xC7 }}
## Include/Protocol/Hash.h
gEfiHashServiceBindingProtocolGuid = { 0x42881c98, 0xa4f3, 0x44b0, { 0xa3, 0x9d, 0xdf, 0xa1, 0x86, 0x67, 0xd8, 0xcd }}
## Include/Protocol/Hash.h
gEfiHashProtocolGuid = { 0xC5184932, 0xDBA5, 0x46DB, { 0xA5, 0xBA, 0xCC, 0x0B, 0xDA, 0x9C, 0x14, 0x35 }}
## Include/Protocol/TcgService.h
gEfiTcgProtocolGuid = { 0xf541796d, 0xa62e, 0x4954, { 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd }}
## Include/Protocol/TrEEProtocol.h
gEfiTrEEProtocolGuid = {0x607f766c, 0x7455, 0x42be, { 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f }}
## Include/Protocol/Tcg2Protocol.h
gEfiTcg2ProtocolGuid = {0x607f766c, 0x7455, 0x42be, { 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f }}
gEfiTcg2FinalEventsTableGuid = {0x1e2ed096, 0x30e2, 0x4254, { 0xbd, 0x89, 0x86, 0x3b, 0xbe, 0xf8, 0x23, 0x25 }}
## Include/Protocol/FormBrowser2.h
gEfiFormBrowser2ProtocolGuid = {0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58}}
## Include/Protocol/HiiString.h
gEfiHiiStringProtocolGuid = {0x0fd96974, 0x23aa, 0x4cdc, {0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a}}
## Include/Protocol/HiiImage.h
gEfiHiiImageProtocolGuid = {0x31a6406a, 0x6bdf, 0x4e46, {0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x09, 0x20}}
## Include/Protocol/HiiConfigRouting.h
gEfiHiiConfigRoutingProtocolGuid = {0x587e72d7, 0xcc50, 0x4f79, {0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f}}
## Include/Protocol/HiiDatabase.h
gEfiHiiDatabaseProtocolGuid = {0xef9fc172, 0xa1b2, 0x4693, {0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42}}
## Include/Protocol/HiiFont.h
gEfiHiiFontProtocolGuid = {0xe9ca4775, 0x8657, 0x47fc, {0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x08, 0x43, 0x24}}
## Include/Protocol/HiiConfigAccess.h
gEfiHiiConfigAccessProtocolGuid = {0x330d4706, 0xf2a0, 0x4e4f, {0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85}}
## Include/Protocol/HiiPackageList.h
gEfiHiiPackageListProtocolGuid = { 0x6a1ee763, 0xd47a, 0x43b4, {0xaa, 0xbe, 0xef, 0x1d, 0xe2, 0xab, 0x56, 0xfc}}
#
# Protocols defined in UEFI2.2
#
## Include/Protocol/Ip6.h
gEfiIp6ServiceBindingProtocolGuid = { 0xec835dd3, 0xfe0f, 0x617b, {0xa6, 0x21, 0xb3, 0x50, 0xc3, 0xe1, 0x33, 0x88 }}
## Include/Protocol/Ip6.h
gEfiIp6ProtocolGuid = { 0x2c8759d5, 0x5c2d, 0x66ef, {0x92, 0x5f, 0xb6, 0x6c, 0x10, 0x19, 0x57, 0xe2 }}
## Include/Protocol/Ip6Config.h
gEfiIp6ConfigProtocolGuid = { 0x937fe521, 0x95ae, 0x4d1a, {0x89, 0x29, 0x48, 0xbc, 0xd9, 0x0a, 0xd3, 0x1a }}
## Include/Protocol/Mtftp6.h
gEfiMtftp6ServiceBindingProtocolGuid = { 0xd9760ff3, 0x3cca, 0x4267, {0x80, 0xf9, 0x75, 0x27, 0xfa, 0xfa, 0x42, 0x23 }}
## Include/Protocol/Mtftp6.h
gEfiMtftp6ProtocolGuid = { 0xbf0a78ba, 0xec29, 0x49cf, {0xa1, 0xc9, 0x7a, 0xe5, 0x4e, 0xab, 0x6a, 0x51 }}
## Include/Protocol/Dhcp6.h
gEfiDhcp6ServiceBindingProtocolGuid = { 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5 }}
## Include/Protocol/Dhcp6.h
gEfiDhcp6ProtocolGuid = { 0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b }}
## Include/Protocol/Udp6.h
gEfiUdp6ServiceBindingProtocolGuid = { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54 }}
## Include/Protocol/Udp6.h
gEfiUdp6ProtocolGuid = { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3, 0x49, 0x55 }}
## Include/Protocol/Tcp6.h
gEfiTcp6ServiceBindingProtocolGuid = { 0xec20eb79, 0x6c1a, 0x4664, {0x9a, 0x0d, 0xd2, 0xe4, 0xcc, 0x16, 0xd6, 0x64 }}
## Include/Protocol/Tcp6.h
gEfiTcp6ProtocolGuid = { 0x46e44855, 0xbd60, 0x4ab7, {0xab, 0x0d, 0xa6, 0x79, 0xb9, 0x44, 0x7d, 0x77 }}
## Include/Protocol/VlanConfig.h
gEfiVlanConfigProtocolGuid = { 0x9e23d768, 0xd2f3, 0x4366, {0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74 }}
## Include/Protocol/Eap.h
gEfiEapProtocolGuid = { 0x5d9f96db, 0xe731, 0x4caa, {0xa0, 0xd, 0x72, 0xe1, 0x87, 0xcd, 0x77, 0x62 }}
## Include/Protocol/EapManagement.h
gEfiEapManagementProtocolGuid = { 0xbb62e663, 0x625d, 0x40b2, {0xa0, 0x88, 0xbb, 0xe8, 0x36, 0x23, 0xa2, 0x45 }}
## Include/Protocol/Ftp4.h
gEfiFtp4ServiceBindingProtocolGuid = { 0xfaaecb1, 0x226e, 0x4782, {0xaa, 0xce, 0x7d, 0xb9, 0xbc, 0xbf, 0x4d, 0xaf }}
## Include/Protocol/Ftp4.h
gEfiFtp4ProtocolGuid = { 0xeb338826, 0x681b, 0x4295, {0xb3, 0x56, 0x2b, 0x36, 0x4c, 0x75, 0x7b, 0x9 }}
## Include/Protocol/IpSecConfig.h
gEfiIpSecConfigProtocolGuid = { 0xce5e5929, 0xc7a3, 0x4602, {0xad, 0x9e, 0xc9, 0xda, 0xf9, 0x4e, 0xbf, 0xcf }}
## Include/Protocol/DriverHealth.h
gEfiDriverHealthProtocolGuid = { 0x2a534210, 0x9280, 0x41d8, {0xae, 0x79, 0xca, 0xda, 0x1, 0xa2, 0xb1, 0x27 }}
## Include/Protocol/DeferredImageLoad.h
gEfiDeferredImageLoadProtocolGuid = { 0x15853d7c, 0x3ddf, 0x43e0, {0xa1, 0xcb, 0xeb, 0xf8, 0x5b, 0x8f, 0x87, 0x2c }}
## Include/Protocol/UserCredential.h
gEfiUserCredentialProtocolGuid = { 0x71ee5e94, 0x65b9, 0x45d5, {0x82, 0x1a, 0x3a, 0x4d, 0x86, 0xcf, 0xe6, 0xbe }}
## Include/Protocol/UserManager.h
gEfiUserManagerProtocolGuid = { 0x6fd5b00c, 0xd426, 0x4283, {0x98, 0x87, 0x6c, 0xf5, 0xcf, 0x1c, 0xb1, 0xfe }}
## Include/Protocol/AtaPassThru.h
gEfiAtaPassThruProtocolGuid = { 0x1d3de7f0, 0x807, 0x424f, {0xaa, 0x69, 0x11, 0xa5, 0x4e, 0x19, 0xa4, 0x6f }}
#
# Protocols defined in UEFI2.3
#
## Include/Protocol/FirmwareManagement.h
gEfiFirmwareManagementProtocolGuid = { 0x86c77a67, 0xb97, 0x4633, {0xa1, 0x87, 0x49, 0x10, 0x4d, 0x6, 0x85, 0xc7 }}
## Include/Protocol/IpSec.h
gEfiIpSecProtocolGuid = { 0xdfb386f7, 0xe100, 0x43ad, {0x9c, 0x9a, 0xed, 0x90, 0xd0, 0x8a, 0x5e, 0x12 }}
## Include/Protocol/IpSec.h
gEfiIpSec2ProtocolGuid = { 0xa3979e64, 0xace8, 0x4ddc, {0xbc, 0x7, 0x4d, 0x66, 0xb8, 0xfd, 0x9, 0x77 }}
#
# Protocols defined in UEFI2.3.1
#
## Include/Protocol/Kms.h
gEfiKmsProtocolGuid = { 0xEC3A978D, 0x7C4E, 0x48FA, {0x9A, 0xBE, 0x6A, 0xD9, 0x1C, 0xC8, 0xF8, 0x11 }}
## Include/Protocol/BlockIo2.h
gEfiBlockIo2ProtocolGuid = { 0xa77b2472, 0xe282, 0x4e9f, {0xa2, 0x45, 0xc2, 0xc0, 0xe2, 0x7b, 0xbc, 0xc1 }}
## Include/Protocol/StorageSecurityCommand.h
gEfiStorageSecurityCommandProtocolGuid = { 0xc88b0b6d, 0x0dfc, 0x49a7, {0x9c, 0xb4, 0x49, 0x7, 0x4b, 0x4c, 0x3a, 0x78 }}
## Include/Protocol/UserCredential2.h
gEfiUserCredential2ProtocolGuid = { 0xe98adb03, 0xb8b9, 0x4af8, {0xba, 0x20, 0x26, 0xe9, 0x11, 0x4c, 0xbc, 0xe5 }}
#
# Protocols defined in UEFI2.4
#
## Include/Protocol/DiskIo2.h
gEfiDiskIo2ProtocolGuid = { 0x151c8eae, 0x7f2c, 0x472c, { 0x9e, 0x54, 0x98, 0x28, 0x19, 0x4f, 0x6a, 0x88 }}
## Include/Protocol/Timestamp.h
gEfiTimestampProtocolGuid = { 0xafbfde41, 0x2e6e, 0x4262, {0xba, 0x65, 0x62, 0xb9, 0x23, 0x6e, 0x54, 0x95 }}
## Include/Protocol/Rng.h
gEfiRngProtocolGuid = { 0x3152bca5, 0xeade, 0x433d, {0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44 }}
## Include/Protocol/AdapterInformation.h
gEfiAdapterInformationProtocolGuid = { 0xE5DD1403, 0xD622, 0xC24E, {0x84, 0x88, 0xC7, 0x1B, 0x17, 0xF5, 0xE8, 0x02 }}
#
# Protocols defined in UEFI2.5
#
## Include/Protocol/NvmExpressPassthru.h
gEfiNvmExpressPassThruProtocolGuid = { 0x52c78312, 0x8edc, 0x4233, { 0x98, 0xf2, 0x1a, 0x1a, 0xa5, 0xe3, 0x88, 0xa5 }}
## Include/Protocol/Hash2.h
gEfiHash2ServiceBindingProtocolGuid = { 0xda836f8d, 0x217f, 0x4ca0, { 0x99, 0xc2, 0x1c, 0xa4, 0xe1, 0x60, 0x77, 0xea }}
## Include/Protocol/Hash2.h
gEfiHash2ProtocolGuid = { 0x55b1d734, 0xc5e1, 0x49db, { 0x96, 0x47, 0xb1, 0x6a, 0xfb, 0xe, 0x30, 0x5b }}
## Include/Protocol/BlockIoCrypto.h
gEfiBlockIoCryptoProtocolGuid = { 0xa00490ba, 0x3f1a, 0x4b4c, { 0xab, 0x90, 0x4f, 0xa9, 0x97, 0x26, 0xa1, 0xe8 }}
## Include/Protocol/SmartCardReader.h
gEfiSmartCardReaderProtocolGuid = { 0x2a4d1adf, 0x21dc, 0x4b81, {0xa4, 0x2f, 0x8b, 0x8e, 0xe2, 0x38, 0x00, 0x60 }}
## Include/Protocol/SmartCardEdge.h
gEfiSmartCardEdgeProtocolGuid = { 0xd317f29b, 0xa325, 0x4712, {0x9b, 0xf1, 0xc6, 0x19, 0x54, 0xdc, 0x19, 0x8c }}
## Include/Protocol/UsbFunctionIo.h
gEfiUsbFunctionIoProtocolGuid = { 0x32d2963a, 0xfe5d, 0x4f30, {0xb6, 0x33, 0x6e, 0x5d, 0xc5, 0x58, 0x3, 0xcc }}
## Include/Protocol/BluetoothHc.h
gEfiBluetoothHcProtocolGuid = { 0xb3930571, 0xbeba, 0x4fc5, { 0x92, 0x3, 0x94, 0x27, 0x24, 0x2e, 0x6a, 0x43 }}
## Include/Protocol/BluetoothIo.h
gEfiBluetoothIoServiceBindingProtocolGuid = { 0x388278d3, 0x7b85, 0x42f0, { 0xab, 0xa9, 0xfb, 0x4b, 0xfd, 0x69, 0xf5, 0xab }}
gEfiBluetoothIoProtocolGuid = { 0x467313de, 0x4e30, 0x43f1, { 0x94, 0x3e, 0x32, 0x3f, 0x89, 0x84, 0x5d, 0xb5 }}
## Include/Protocol/BluetoothConfig.h
gEfiBluetoothConfigProtocolGuid = { 0x62960cf3, 0x40ff, 0x4263, { 0xa7, 0x7c, 0xdf, 0xde, 0xbd, 0x19, 0x1b, 0x4b }}
## Include/Protocol/RegularExpressionProtocol.h
gEfiRegularExpressionProtocolGuid = { 0xB3F79D9A, 0x436C, 0xDC11, {0xB0, 0x52, 0xCD, 0x85, 0xDF, 0x52, 0x4C, 0xE6 }}
## Include/Protocol/BootManagerPolicy.h
gEfiBootManagerPolicyProtocolGuid = { 0xfedf8e0c, 0xe147, 0x11e3, { 0x99, 0x03, 0xb8, 0xe8, 0x56, 0x2c, 0xba, 0xfa }}
## Include/Protocol/HiiConfigKeyword.h
gEfiConfigKeywordHandlerProtocolGuid = {0x0a8badd5, 0x03b8, 0x4d19, {0xb1, 0x28, 0x7b, 0x8f, 0x0e, 0xda, 0xa5, 0x96}}
## Include/Protocol/WiFi.h
gEfiWiFiProtocolGuid = { 0xda55bc9, 0x45f8, 0x4bb4, {0x87, 0x19, 0x52, 0x24, 0xf1, 0x8a, 0x4d, 0x45 }}
## Include/Protocol/EapManagement2.h
gEfiEapManagement2ProtocolGuid = { 0x5e93c847, 0x456d, 0x40b3, {0xa6, 0xb4, 0x78, 0xb0, 0xc9, 0xcf, 0x7f, 0x20 }}
## Include/Protocol/EapConfiguration.h
gEfiEapConfigurationProtocolGuid = { 0xe5b58dbb, 0x7688, 0x44b4, {0x97, 0xbf, 0x5f, 0x1d, 0x4b, 0x7c, 0xc8, 0xdb }}
## Include/Protocol/Pkcs7Verify.h
gEfiPkcs7VerifyProtocolGuid = { 0x47889fb2, 0xd671, 0x4fab, { 0xa0, 0xca, 0xdf, 0x0e, 0x44, 0xdf, 0x70, 0xd6 }}
## Include/Protocol/Ip4Config2.h
gEfiIp4Config2ProtocolGuid = { 0x5b446ed1, 0xe30b, 0x4faa, {0x87, 0x1a, 0x36, 0x54, 0xec, 0xa3, 0x60, 0x80 }}
## Include/Protocol/Dns4.h
gEfiDns4ServiceBindingProtocolGuid = { 0xb625b186, 0xe063, 0x44f7, { 0x89, 0x5, 0x6a, 0x74, 0xdc, 0x6f, 0x52, 0xb4 }}
## Include/Protocol/Dns4.h
gEfiDns4ProtocolGuid = { 0xae3d28cc, 0xe05b, 0x4fa1, { 0xa0, 0x11, 0x7e, 0xb5, 0x5a, 0x3f, 0x14, 0x1 }}
## Include/Protocol/Dns6.h
gEfiDns6ServiceBindingProtocolGuid = { 0x7f1647c8, 0xb76e, 0x44b2, { 0xa5, 0x65, 0xf7, 0xf, 0xf1, 0x9c, 0xd1, 0x9e }}
## Include/Protocol/Dns6.h
gEfiDns6ProtocolGuid = { 0xca37bc1f, 0xa327, 0x4ae9, { 0x82, 0x8a, 0x8c, 0x40, 0xd8, 0x50, 0x6a, 0x17 }}
## Include/Protocol/Http.h
gEfiHttpServiceBindingProtocolGuid = { 0xbdc8e6af, 0xd9bc, 0x4379, {0xa7, 0x2a, 0xe0, 0xc4, 0xe7, 0x5d, 0xae, 0x1c }}
## Include/Protocol/Http.h
gEfiHttpProtocolGuid = { 0x7a59b29b, 0x910b, 0x4171, {0x82, 0x42, 0xa8, 0x5a, 0x0d, 0xf2, 0x5b, 0x5b }}
## Include/Protocol/HttpUtilities.h
gEfiHttpUtilitiesProtocolGuid = { 0x3e35c163, 0x4074, 0x45dd, {0x43, 0x1e, 0x23, 0x98, 0x9d, 0xd8, 0x6b, 0x32 }}
## Include/Protocol/Tls.h
gEfiTlsServiceBindingProtocolGuid = { 0x952cb795, 0xff36, 0x48cf, {0xa2, 0x49, 0x4d, 0xf4, 0x86, 0xd6, 0xab, 0x8d }}
## Include/Protocol/Tls.h
gEfiTlsProtocolGuid = { 0xca959f, 0x6cfa, 0x4db1, {0x95, 0xbc, 0xe4, 0x6c, 0x47, 0x51, 0x43, 0x90 }}
-
+
## Include/Protocol/TlsConfig.h
gEfiTlsConfigurationProtocolGuid = { 0x1682fe44, 0xbd7a, 0x4407, { 0xb7, 0xc7, 0xdc, 0xa3, 0x7c, 0xa3, 0x92, 0x2d }}
## Include/Protocol/Rest.h
gEfiRestProtocolGuid = { 0x0db48a36, 0x4e54, 0xea9c, {0x9b, 0x09, 0x1e, 0xa5, 0xbe, 0x3a, 0x66, 0x0b }}
## Include/Protocol/Supplicant.h
gEfiSupplicantServiceBindingProtocolGuid = { 0x45bcd98e, 0x59ad, 0x4174, { 0x95, 0x46, 0x34, 0x4a, 0x7, 0x48, 0x58, 0x98 }}
gEfiSupplicantProtocolGuid = { 0x54fcc43e, 0xaa89, 0x4333, { 0x9a, 0x85, 0xcd, 0xea, 0x24, 0x5, 0x1e, 0x9e }}
#
# Protocols defined in UEFI2.6
#
## Include/Protocol/WiFi2.h
gEfiWiFi2ProtocolGuid = { 0x1b0fb9bf, 0x699d, 0x4fdd, {0xa7, 0xc3, 0x25, 0x46, 0x68, 0x1b, 0xf6, 0x3b }}
## Include/Protocol/RamDisk.h
gEfiRamDiskProtocolGuid = { 0xab38a0df, 0x6873, 0x44a9, { 0x87, 0xe6, 0xd4, 0xeb, 0x56, 0x14, 0x84, 0x49 }}
## Include/Protocol/ImageDecoder.h
- ##
- ## In UEFI 2.6 spec,this guid value is duplicate with
- ## EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID. Now update this guid value to
- ## avoid the duplicate guid issue. So its value is not consistent with
- ## UEFI spec definition now. We have proposed to update UEFI spec to
- ## use this new guid. After new spec released, we will remove this
- ## comments.
- ##
gEfiHiiImageDecoderProtocolGuid = { 0x9e66f251, 0x727c, 0x418c, { 0xbf, 0xd6, 0xc2, 0xb4, 0x25, 0x28, 0x18, 0xea }}
## Include/Protocol/HiiImageEx.h
gEfiHiiImageExProtocolGuid = { 0x1a1241e6, 0x8f19, 0x41a9, { 0xbc, 0xe, 0xe8, 0xef, 0x39, 0xe0, 0x65, 0x46 }}
## Include/Protocol/SdMmcPassThru.h
gEfiSdMmcPassThruProtocolGuid = { 0x716ef0d9, 0xff83, 0x4f69, {0x81, 0xe9, 0x51, 0x8b, 0xd3, 0x9a, 0x8e, 0x70 }}
## Include/Protocol/EraseBlock.h
gEfiEraseBlockProtocolGuid = { 0x95a9a93e, 0xa86e, 0x4926, {0xaa, 0xef, 0x99, 0x18, 0xe7, 0x72, 0xd9, 0x87 }}
#
+ # Protocols defined in UEFI2.7
+ #
+ ## Include/Protocol/BluetoothAttribute.h
+ gEfiBluetoothAttributeProtocolGuid = { 0x898890e9, 0x84b2, 0x4f3a, { 0x8c, 0x58, 0xd8, 0x57, 0x78, 0x13, 0xe0, 0xac } }
+ gEfiBluetoothAttributeServiceBindingProtocolGuid = { 0x5639867a, 0x8c8e, 0x408d, {0xac, 0x2f, 0x4b, 0x61, 0xbd, 0xc0, 0xbb, 0xbb }}
+
+ ## Include/Protocol/BluetoothLeConfig.h
+ gEfiBluetoothLeConfigProtocolGuid = { 0x8f76da58, 0x1f99, 0x4275, { 0xa4, 0xec, 0x47, 0x56, 0x51, 0x5b, 0x1c, 0xe8 } }
+
+ ## Include/Protocol/UfsDeviceConfig.h
+ gEfiUfsDeviceConfigProtocolGuid = { 0xb81bfab0, 0xeb3, 0x4cf9, { 0x84, 0x65, 0x7f, 0xa9, 0x86, 0x36, 0x16, 0x64 }}
+
+ ## Include/Protocol/HttpBootCallback.h
+ gEfiHttpBootCallbackProtocolGuid = {0xba23b311, 0x343d, 0x11e6, {0x91, 0x85, 0x58, 0x20, 0xb1, 0xd6, 0x52, 0x99}}
+
+ ## Include/Protocol/ResetNotification.h
+ gEfiResetNotificationProtocolGuid = { 0x9da34ae0, 0xeaf9, 0x4bbf, { 0x8e, 0xc3, 0xfd, 0x60, 0x22, 0x6c, 0x44, 0xbe } }
+
+ ## Include/Protocol/PartitionInfo.h
+ gEfiPartitionInfoProtocolGuid = { 0x8cf2f62c, 0xbc9b, 0x4821, { 0x80, 0x8d, 0xec, 0x9e, 0xc4, 0x21, 0xa1, 0xa0 }}
+
+ ## Include/Protocol/HiiPopup.h
+ gEfiHiiPopupProtocolGuid = { 0x4311edc0, 0x6054, 0x46d4, { 0x9e, 0x40, 0x89, 0x3e, 0xa9, 0x52, 0xfc, 0xcc }}
+
+ ## Include/Protocol/NvdimmLabel.h
+ gEfiNvdimmLabelProtocolGuid = { 0xd40b6b80, 0x97d5, 0x4282, { 0xbb, 0x1d, 0x22, 0x3a, 0x16, 0x91, 0x80, 0x58 }}
+
+ #
# Protocols defined in Shell2.0
#
## Include/Protocol/Shell.h
gEfiShellProtocolGuid = { 0x6302d008, 0x7f9b, 0x4f30, {0x87, 0xac, 0x60, 0xc9, 0xfe, 0xf5, 0xda, 0x4e }}
## Include/Protocol/ShellParameters.h
gEfiShellParametersProtocolGuid = { 0x752f3136, 0x4e16, 0x4fdc, {0xa2, 0x2a, 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca }}
#
# Protocols defined in Shell2.1
#
## Include/Protocol/ShellDynamicCommand.h
gEfiShellDynamicCommandProtocolGuid = { 0x3c7200e9, 0x005f, 0x4ea4, {0x87, 0xde, 0xa3, 0xdf, 0xac, 0x8a, 0x27, 0xc3 }}
#
# [Error.gEfiMdePkgTokenSpaceGuid]
# 0x80000001 | Invalid value provided.
# 0x80000002 | Reserved bits must be set to zero.
# 0x80000003 | Incorrect progress code provided.
#
[PcdsFeatureFlag]
## Indicates if the component name protocol will be installed.
# TRUE - Does not install component name protocol.
# FALSE - Install component name protocol.
# @Prompt Disable Component Name Protocol.
gEfiMdePkgTokenSpaceGuid.PcdComponentNameDisable|FALSE|BOOLEAN|0x0000000d
## Indicates if the diagnostics name protocol will be installed.
# TRUE - Does not install diagnostics name protocol.
# FALSE - Install diagnostics name protocol.
# @Prompt Disable Diagnostics Name protocol.
gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnosticsDisable|FALSE|BOOLEAN|0x0000000e
## Indicates if the component name2 protocol will be installed.
# TRUE - Does not install component name2 protocol.
# FALSE - Install component name2 protocol.
# @Prompt Disable Component Name2 Protocol.
gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable|FALSE|BOOLEAN|0x00000010
## Indicates if the diagnostics2 name protocol will be installed.
# TRUE - Does not install diagnostics2 name protocol.
# FALSE - Install diagnostics2 name protocol.
# @Prompt Disable Diagnostics2 Name Protocol.
gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable|FALSE|BOOLEAN|0x00000011
## Indicates if EFI 1.1 ISO 639-2 language supports are obsolete
# TRUE - Deprecate global variable LangCodes.
# FALSE - Does not deprecate global variable LangCodes.
# @Prompt Deprecate Global Variable LangCodes.
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate|FALSE|BOOLEAN|0x00000012
## Indicates if UGA Draw Protocol is still consumed.
# TRUE - Consume UGA Draw protocol.
# FALSE - Does not consume UGA Draw protocol.
# @Prompt Consume UGA Draw Protocol.
gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport|TRUE|BOOLEAN|0x00000027
## Indicates if a check will be made to see if a specified node is a member of linked list
# in the following BaseLib functions: GetNextNode(), IsNull(), IsNodeAtEnd(), SwapListEntries().
# TRUE - Verify a specified node is a member of linked list.
# FALSE - Does not verify a specified node is a member of linked list.
# @Prompt Verify Node In List.
gEfiMdePkgTokenSpaceGuid.PcdVerifyNodeInList|FALSE|BOOLEAN|0x00000028
## If TRUE, OrderedCollectionLib is instructed to validate the
# ORDERED_COLLECTION structure at the end of such operations (typically
# structure modifications) that justify validation of the structure for unit
# testing purposes.
# @Prompt Validate ORDERED_COLLECTION structure
gEfiMdePkgTokenSpaceGuid.PcdValidateOrderedCollection|FALSE|BOOLEAN|0x0000002a
[PcdsFixedAtBuild]
## Status code value for indicating a watchdog timer has expired.
# EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_TIMER_EXPIRED
# @Prompt Progress Code for WatchDog Timer Expired.
# @ValidList 0x80000003 | 0x00011003
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueEfiWatchDogTimerExpired|0x00011003|UINT32|0x00000013
## Status code value for indicating the invocation of SetVirtualAddressMap()
# EFI_SOFTWARE_EFI_RUNTIME_SERVICE | EFI_SW_RS_PC_SET_VIRTUAL_ADDRESS_MAP
# @Prompt Progress Code for Invocation of SetVirtualAddressMap.
# @ValidList 0x80000003 | 0x03111004
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueSetVirtualAddressMap|0x03111004|UINT32|0x00000014
## Status code value for indicating the start of memory test
# EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_PC_TEST
# @Prompt Progress Code for Memory Test Start.
# @ValidList 0x80000003 | 0x00051006
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueMemoryTestStarted|0x00051006|UINT32|0x00000015
## Status code value for indicating memory error in memory test
# EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_UNCORRECTABLE
# @Prompt Progress Code for Memory Error.
# @ValidList 0x80000003 | 0x00051003
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueUncorrectableMemoryError|0x00051003|UINT32|0x00000016
## Status code value for console operation failure.
# EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_CONTROLLER_ERROR
# @Prompt Progress Code for Console Error.
# @ValidList 0x80000003 | 0x01040006
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueRemoteConsoleError|0x01040006|UINT32|0x00000017
## Status code value for console reset operation failure.
# EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_PC_RESET
# @Prompt Progress Code for Console Reset.
# @ValidList 0x80000003 | 0x01040001
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueRemoteConsoleReset|0x01040001|UINT32|0x00000018
## Status code value for console input operation failure.
# EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_INPUT_ERROR
# @Prompt Progress Code for Console Input Error.
# @ValidList 0x80000003 | 0x01040007
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueRemoteConsoleInputError|0x01040007|UINT32|0x00000019
## Status code value for console output operation failure.
# EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_OUTPUT_ERROR
# @Prompt Progress Code for Console Output Error.
# @ValidList 0x80000003 | 0x01040008
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueRemoteConsoleOutputError|0x01040008|UINT32|0x0000001a
## Status code value for mouse operation failure.
# EFI_PERIPHERAL_MOUSE | EFI_P_EC_INTERFACE_ERROR
# @Prompt Progress Code for Module Device Failure.
# @ValidList 0x80000003 | 0x01020005
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueMouseInterfaceError|0x01020005|UINT32|0x30001000
## Status code value for indicating mouse device has been enabled.
# EFI_PERIPHERAL_MOUSE | EFI_P_PC_ENABLE
# @Prompt Progress Code for Enable Mouse Device.
# @ValidList 0x80000003 | 0x01020004
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueMouseEnable|0x01020004|UINT32|0x30001001
## Status code value for indicating mouse device has been disabled.
# EFI_PERIPHERAL_MOUSE | EFI_P_PC_DISABLE
# @Prompt Progress Code for Disable Mouse Device.
# @ValidList 0x80000003 | 0x01020002
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueMouseDisable|0x01020002|UINT32|0x30001002
## Status code value for enabling keyboard device.
# EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_ENABLE
# @Prompt Progress Code for Enable Keyboard Device.
# @ValidList 0x80000003 | 0x01010004
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueKeyboardEnable|0x01010004|UINT32|0x30001003
## Status code value for disabling keyboard device.
# EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_DISABLE
# @Prompt Progress Code for Disable Keyboard Device.
# @ValidList 0x80000003 | 0x01010002
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueKeyboardDisable|0x01010002|UINT32|0x30001004
## Status code value for indicating presence of keyboard.
# EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_PRESENCE_DETECT
# @Prompt Progress Code for Detect Keyboard Device.
# @ValidList 0x80000003 | 0x01010003
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueKeyboardPresenceDetect|0x01010003|UINT32|0x30001005
## Status code value for keyboard operation reset operation.
# EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_RESET
# @Prompt Progress Code for Keyboard Device Reset.
# @ValidList 0x80000003 | 0x01010001
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueKeyboardReset|0x01010001|UINT32|0x30001006
## Status code value for keyboard clear buffer operation.
# EFI_PERIPHERAL_KEYBOARD | EFI_P_KEYBOARD_PC_CLEAR_BUFFER
# @Prompt Progress Code for Keyboard Device Clear Buffer.
# @ValidList 0x80000003 | 0x01011000
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueKeyboardClearBuffer|0x01011000|UINT32|0x30001007
## Status code value for keyboard device self-test.
# EFI_PERIPHERAL_KEYBOARD | EFI_P_KEYBOARD_PC_SELF_TEST
# @Prompt Progress Code for Keyboard Device SelfTest.
# @ValidList 0x80000003 | 0x01011001
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueKeyboardSelfTest|0x01011001|UINT32|0x30001008
## Status code value for indicating keyboard device failure.
# EFI_PERIPHERAL_KEYBOARD | EFI_P_EC_INTERFACE_ERROR
# @Prompt Progress Code for Keyboard Device Failure.
# @ValidList 0x80000003 | 0x01010005
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueKeyboardInterfaceError|0x01010005|UINT32|0x30001009
## Status code value for indicating keyboard input handler failure.
# EFI_PERIPHERAL_KEYBOARD | EFI_P_EC_INPUT_ERROR
# @Prompt Progress Code for Keyboard Input Failure.
# @ValidList 0x80000003 | 0x01010007
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueKeyboardInputError|0x01010007|UINT32|0x3000100a
## Status code value for mouse input handler failure.
# EFI_PERIPHERAL_MOUSE | EFI_P_EC_INPUT_ERROR
# @Prompt Progress Code for Mouse Input Failure.
# @ValidList 0x80000003 | 0x01020007
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueMouseInputError|0x01020007|UINT32|0x3000100b
## Status code value for mouse device reset operation.
# EFI_PERIPHERAL_MOUSE | EFI_P_PC_RESET
# @Prompt Progress Code for Mouse Device Reset.
# @ValidList 0x80000003 | 0x01020001
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueMouseReset|0x01020001|UINT32|0x3000100c
## Status code value for indicating the handoff from PEI phase to DXE phase.
# EFI_SOFTWARE_PEI_CORE | EFI_SW_PEI_CORE_PC_HANDOFF_TO_NEXT
# @Prompt Progress Code for Handoff from Pei phase to Dxe phase.
# @ValidList 0x80000003 | 0x3021001
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValuePeiHandoffToDxe|0x3021001|UINT32|0x3000100d
## Status code value for indicating one PEIM is dispatched.
# EFI_SOFTWARE_PEI_CORE | EFI_SW_PC_INIT_BEGIN
# @Prompt Progress Code for Dispatching One PEIM.
# @ValidList 0x80000003 | 0x3020002
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValuePeimDispatch|0x3020002|UINT32|0x3000100e
## Status code value for PeiCore entry.
# EFI_SOFTWARE_PEI_CORE | EFI_SW_PC_INIT
# @Prompt Progress Code for PeiCore Entry.
# @ValidList 0x80000003 | 0x3020000
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValuePeiCoreEntry|0x3020000|UINT32|0x3000100f
## Status code value for DxeCore entry.
# EFI_SOFTWARE_DXE_CORE | EFI_SW_DXE_CORE_PC_ENTRY_POINT
# @Prompt Progress Code for DxeCore Entry.
# @ValidList 0x80000003 | 0x3041000
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueDxeCoreEntry|0x3041000|UINT32|0x30001010
## Status code value for handoff from DxeCore to BDS.
# EFI_SOFTWARE_DXE_CORE | EFI_SW_DXE_CORE_PC_HANDOFF_TO_NEXT
# @Prompt Progress Code for Handoff from DxeCore to BDS.
# @ValidList 0x80000003 | 0x3041001
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueDxeCoreHandoffToBds|0x3041001|UINT32|0x30001011
## Status code value for indicating boot service exit.
# EFI_SOFTWARE_EFI_BOOT_SERVICE | EFI_SW_BS_PC_EXIT_BOOT_SERVICES
# @Prompt Progress Code for Exit of Boot Service.
# @ValidList 0x80000003 | 0x3101019
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueBootServiceExit|0x3101019|UINT32|0x30001012
## Status code value for indicating the beginning of DXE driver.
# EFI_SOFTWARE_DXE_CORE | EFI_SW_PC_INIT_BEGIN
# @Prompt Progress Code for Begin of DXE Driver.
# @ValidList 0x80000003 | 0x3040002
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueDxeDriverBegin|0x3040002|UINT32|0x30001013
## Status code value for indicating the end of DXE drive.
# EFI_SOFTWARE_DXE_CORE | EFI_SW_PC_INIT_END
# @Prompt Progress Code for End of DXE Driver.
# @ValidList 0x80000003 | 0x3040003
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueDxeDriverEnd|0x3040003|UINT32|0x30001014
## This flag is used to control build time optimization based on debug print level.
# Its default value is 0xFFFFFFFF to expose all debug print level.
# BIT0 - Initialization message.
# BIT1 - Warning message.
# BIT2 - Load Event message.
# BIT3 - File System message.
# BIT4 - Allocate or Free Pool message.
# BIT5 - Allocate or Free Page message.
# BIT6 - Information message.
# BIT7 - Dispatcher message.
# BIT8 - Variable message.
# BIT10 - Boot Manager message.
# BIT12 - BlockIo Driver message.
# BIT14 - Network Driver message.
# BIT16 - UNDI Driver message.
# BIT17 - LoadFile message.
# BIT19 - Event message.
# BIT20 - Global Coherency Database changes message.
# BIT21 - Memory range cachability changes message.
# BIT22 - Detailed debug message.
# BIT31 - Error message.
# @Prompt Fixed Debug Message Print Level.
gEfiMdePkgTokenSpaceGuid.PcdFixedDebugPrintErrorLevel|0xFFFFFFFF|UINT32|0x30001016
+ ## Indicates the control flow enforcement enabling state.
+ # If enabled, it uses control flow enforcement technology to prevent ROP or JOP.
+ # BIT0 - SMM CET Shadow Stack is enabled.
+ # Other - reserved
+ # @Prompt Enable control flow enforcement.
+ gEfiMdePkgTokenSpaceGuid.PcdControlFlowEnforcementPropertyMask|0x0|UINT32|0x30001017
+
+ ## Indicates the type of instruction sequence to use for a speculation
+ # barrier. The default instruction sequence is LFENCE.
+ # 0x00 - No operation.
+ # 0x01 - LFENCE (IA32/X64).
+ # 0x02 - CPUID (IA32/X64).
+ # Other - reserved
+ # @Prompt Speculation Barrier Type.
+ gEfiMdePkgTokenSpaceGuid.PcdSpeculationBarrierType|0x01|UINT8|0x30001018
+
[PcdsFixedAtBuild,PcdsPatchableInModule]
## Indicates the maximum length of unicode string used in the following
# BaseLib functions: StrLen(), StrSize(), StrCmp(), StrnCmp(), StrCpy(), StrnCpy()
# 0 - No length check for unicode string.
# >0 - Maximum length of unicode string.
# @Prompt Maximum Length of Unicode String.
gEfiMdePkgTokenSpaceGuid.PcdMaximumUnicodeStringLength|1000000|UINT32|0x00000001
## Indicates the maximum length of ascii string used in the following
# BaseLib functions: AsciiStrLen(), AsciiStrSize(), AsciiStrCmp(), AsciiStrnCmp(),
# AsciiStrCpy(), AsciiStrnCpy().
# 0 - No length check for ascii string.
# >0 - Maximum length of ascii string.
# @Prompt Maximum Length of Ascii String.
gEfiMdePkgTokenSpaceGuid.PcdMaximumAsciiStringLength|1000000|UINT32|0x00000002
## Indicates the maximum node number of linked list.
# 0 - No node number check for linked list.
# >0 - Maximum node number of linked list.
# @Prompt Maximum Length of Linked List.
gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength|1000000|UINT32|0x00000003
## Indicates the maximum node number of device path.
# 0 - No node number check for device path.
# >0 - Maximum node number of device path.
# @Prompt Maximum node number of device path.
gEfiMdePkgTokenSpaceGuid.PcdMaximumDevicePathNodeCount|0|UINT32|0x00000029
## Indicates the timeout tick of holding spin lock.
# 0 - No timeout.
# >0 - Timeout tick of holding spin lock.
# @Prompt Spin Lock Timeout (us).
gEfiMdePkgTokenSpaceGuid.PcdSpinLockTimeout|10000000|UINT32|0x00000004
## The mask is used to control DebugLib behavior.
# BIT0 - Enable Debug Assert.
# BIT1 - Enable Debug Print.
# BIT2 - Enable Debug Code.
# BIT3 - Enable Clear Memory.
# BIT4 - Enable BreakPoint as ASSERT.
# BIT5 - Enable DeadLoop as ASSERT.
# @Prompt Debug Property.
# @Expression 0x80000002 | (gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask & 0xC0) == 0
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0|UINT8|0x00000005
## This flag is used to control the print out Debug message.
# BIT0 - Initialization message.
# BIT1 - Warning message.
# BIT2 - Load Event message.
# BIT3 - File System message.
# BIT4 - Allocate or Free Pool message.
# BIT5 - Allocate or Free Page message.
# BIT6 - Information message.
# BIT7 - Dispatcher message.
# BIT8 - Variable message.
# BIT10 - Boot Manager message.
# BIT12 - BlockIo Driver message.
# BIT14 - Network Driver message.
# BIT16 - UNDI Driver message.
# BIT17 - LoadFile message.
# BIT19 - Event message.
# BIT20 - Global Coherency Database changes message.
# BIT21 - Memory range cachability changes message.
# BIT22 - Detailed debug message.
# BIT31 - Error message.
# @Prompt Debug Message Print Level.
# @Expression 0x80000002 | (gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel & 0x7F84AA00) == 0
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000000|UINT32|0x00000006
## The mask is used to control ReportStatusCodeLib behavior.
# BIT0 - Enable Progress Code.
# BIT1 - Enable Error Code.
# BIT2 - Enable Debug Code.
# @Prompt Report Status Code Property.
# @Expression 0x80000002 | (gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask & 0xF8) == 0
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0|UINT8|0x00000007
## This value is used to fill a segment of memory when PcdDebugPropertyMask Clear Memory is enabled.
# @Prompt Value to Clear Memory.
gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue|0xAF|UINT8|0x00000008
## The mask is used to control PerformanceLib behavior.
# BIT0 - Enable Performance Measurement.
+ # BIT1 - Disable Start Image Logging.
+ # BIT2 - Disable Load Image logging.
+ # BIT3 - Disable Binding Support logging.
+ # BIT4 - Disable Binding Start logging.
+ # BIT5 - Disable Binding Stop logging.
+ # BIT6 - Disable all other general Perfs.
+ # BIT1-BIT6 are evaluated when BIT0 is set.
# @Prompt Performance Measurement Property.
- # @Expression 0x80000002 | (gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask & 0xFE) == 0
+ # @Expression 0x80000002 | (gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask & 0x80) == 0
gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|0|UINT8|0x00000009
## The mask is used to control PostCodeLib behavior.
# BIT0 - Enable Post Code.
# BIT1 - Enable Post Code with Description.
# @Prompt Post Code Property.
# @Expression 0x80000002 | (gEfiMdePkgTokenSpaceGuid.PcdPostCodePropertyMask & 0xFC) == 0
gEfiMdePkgTokenSpaceGuid.PcdPostCodePropertyMask|0|UINT8|0x0000000b
## The bit width of data to be written to Port80. The default value is 8.
# @Prompt Port80 Data Width
# @ValidList 0x80000001 | 8, 16, 32
gEfiMdePkgTokenSpaceGuid.PcdPort80DataWidth|8|UINT8|0x0000002d
## This value is used to configure X86 Processor FSB clock.
# @Prompt FSB Clock.
gEfiMdePkgTokenSpaceGuid.PcdFSBClock|200000000|UINT32|0x0000000c
## The maximum printable number of characters. UefLib functions: AsciiPrint(), AsciiErrorPrint(),
# PrintXY(), AsciiPrintXY(), Print(), ErrorPrint() base on this PCD value to print characters.
# @Prompt Maximum Printable Number of Characters.
gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|320|UINT32|0x101
## This is the print buffer length for FileHandleLib.
# FileHandlePrintLine() sizes buffers based on this PCD value for printing.
# @Prompt Number of Printable Characters.
gEfiMdePkgTokenSpaceGuid.PcdUefiFileHandleLibPrintBufferSize|1536|UINT16|0x201
## Indicates the allowable maximum number in extract handler table.
# @Prompt Maximum Number of GuidedExtractHandler.
gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler|0x10|UINT32|0x00000025
## Indicates the default timeouts for USB transfers in milliseconds.
# @Prompt USB Transfer Timeout (ms).
gEfiMdePkgTokenSpaceGuid.PcdUsbTransferTimeoutValue|3000|UINT32|0x00000026
## This value is used to set the available memory address to store Guided Extract Handlers.
# The required memory space is decided by the value of PcdMaximumGuidedExtractHandler.
# @Prompt Memory Address of GuidedExtractHandler Table.
gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress|0x1000000|UINT64|0x30001015
-
-[PcdsFixedAtBuild.IPF, PcdsPatchableInModule.IPF]
- ## The base address of IO port space for IA64 arch.
- # @Prompt IA64 IO Port Space Base Address.
- gEfiMdePkgTokenSpaceGuid.PcdIoBlockBaseAddressForIpf|0x0ffffc000000|UINT64|0x0000000f
[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
## This value is used to set the base address of PCI express hierarchy.
# @Prompt PCI Express Base Address.
gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0xE0000000|UINT64|0x0000000a
## Default current ISO 639-2 language: English & French.
# @Prompt Default Value of LangCodes Variable.
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangCodes|"engfraengfra"|VOID*|0x0000001c
## Default current ISO 639-2 language: English.
# @Prompt Default Value of Lang Variable.
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLang|"eng"|VOID*|0x0000001d
## Default platform supported RFC 4646 languages: (American) English & French.
# @Prompt Default Value of PlatformLangCodes Variable.
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLangCodes|"en;fr;en-US;fr-FR"|VOID*|0x0000001e
## Default current RFC 4646 language: (American) English.
# @Prompt Default Value of PlatformLang Variable.
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLang|"en-US"|VOID*|0x0000001f
## Indicates the default baud rate of UART.
# @Prompt Default UART Baud Rate.
# @ValidList 0x80000001 | 115200, 57600, 38400, 19200, 9600, 7200, 4800, 3600, 2400, 2000, 1800, 1200, 600, 300, 150, 134, 110, 75, 50
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|115200|UINT64|0x00000020
## Indicates the number of efficient data bit in UART transaction.
# @Prompt Default UART Data Bit.
# @ValidRange 0x80000001 | 5 - 8
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits|8|UINT8|0x00000021
## Indicates the setting of data parity in UART transaction.
# 0 - Default Parity.
# 1 - No Parity.
# 2 - Even Parity.
# 3 - Odd Parity.
# 4 - Mark Parity.
# 5 - Space Parity.
# @Prompt Default UART Parity.
# @ValidRange 0x80000001 | 0 - 5
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity|1|UINT8|0x00000022
## Indicates the setting of stop bit in UART transaction.
# 0 - Default Stop Bits.
# 1 - One Stop Bit.
# 2 - One Five Stop Bits.
# 3 - Two Stop Bits.
# @Prompt Default UART Stop Bits.
# @ValidRange 0x80000001 | 0 - 3
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits|1|UINT8|0x00000023
## Indicates the usable type of terminal.
# 0 - PCANSI
# 1 - VT100
# 2 - VT100+
# 3 - UTF8
# 4 - TTYTERM, NOT defined in UEFI SPEC
# @Prompt Default Terminal Type.
# @ValidRange 0x80000001 | 0 - 4
gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|0|UINT8|0x00000024
## Indicates the receive FIFO depth of UART controller.
# @Prompt Default UART Receive FIFO Depth.
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultReceiveFifoDepth|1|UINT16|0x00000030
## Error level for hardware recorder.
# If value 0, platform does not support feature of hardware error record.
# @Prompt Error Level For Hardware Recorder
gEfiMdePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel|0|UINT16|0x0000002b
## The number of seconds that the firmware will wait before initiating the original default boot selection.
# A value of 0 indicates that the default boot selection is to be initiated immediately on boot.
# The value of 0xFFFF then firmware will wait for user input before booting.
# @Prompt Boot Timeout (s)
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0xffff|UINT16|0x0000002c
[UserExtensions.TianoCore."ExtraFiles"]
MdePkgExtra.uni
Property changes on: head/sys/contrib/edk2/MdePkg.dec
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,57 ##
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2/MdePkg.dec:r301868
Merged /projects/clang360-import/sys/contrib/edk2/MdePkg.dec:r277327-280030
Merged /user/ngie/socket-tests/sys/contrib/edk2/MdePkg.dec:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/clang380-import/sys/contrib/edk2/MdePkg.dec:r292913-296412
Merged /projects/pms/sys/contrib/edk2/MdePkg.dec:r285199-285661
Merged /vendor/device-tree/dist/sys/contrib/edk2/MdePkg.dec:r303380
Merged /projects/elftoolchain/sys/contrib/edk2/MdePkg.dec:r260687-261245
Merged /projects/ipfw/sys/contrib/edk2/MdePkg.dec:r267383-272837
Merged /projects/random_number_generator/sys/contrib/edk2/MdePkg.dec:r254613-256243
Merged /user/ngie/more-tests2/sys/contrib/edk2/MdePkg.dec:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /projects/clang1000-import/sys/contrib/edk2/MdePkg.dec:r356848-358850
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2/MdePkg.dec:r303985-305318
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2/MdePkg.dec:r312125-313435
Merged /projects/vnet/sys/contrib/edk2/MdePkg.dec:r295220
Merged /projects/clang-sparc64/sys/contrib/edk2/MdePkg.dec:r262258-262612
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2/MdePkg.dec:r344081-345031,345036,345038,345042,345045,345047
Merged /vendor/edk2/dist/MdePkg/MdePkg.dec/MdePkg.dec:r361765
Merged /projects/release-embedded/sys/contrib/edk2/MdePkg.dec:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/bectl/sys/contrib/edk2/MdePkg.dec:r336666-337662
Merged /projects/largeSMP/sys/contrib/edk2/MdePkg.dec:r221273-222812,222815-223757
Merged /user/ngie/more-tests/sys/contrib/edk2/MdePkg.dec:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/pf/head/sys/contrib/edk2/MdePkg.dec:r263908
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2/MdePkg.dec:r295193
Merged /projects/clang-trunk/sys/contrib/edk2/MdePkg.dec:r283596-287505
Merged /projects/collation/sys/contrib/edk2/MdePkg.dec:r286424-290491
Merged /projects/head_mfi/sys/contrib/edk2/MdePkg.dec:r233621
Merged /projects/building-blocks/sys/contrib/edk2/MdePkg.dec:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /user/ngie/bug203673/sys/contrib/edk2/MdePkg.dec:r289470-289489
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2/MdePkg.dec:r281754
Merged /projects/release-arm64/sys/contrib/edk2/MdePkg.dec:r281786,281788,281792
Merged /projects/lldb-r201577/sys/contrib/edk2/MdePkg.dec:r262185-262527
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2/MdePkg.dec:r276164,276167,276170-276172
Merged /projects/clang350-import/sys/contrib/edk2/MdePkg.dec:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2/MdePkg.dec:r1540-186085
Merged /projects/clang370-import/sys/contrib/edk2/MdePkg.dec:r287506-288928
Merged /projects/quota64/sys/contrib/edk2/MdePkg.dec:r184125-207707
Merged /projects/multi-fibv6/head/sys/contrib/edk2/MdePkg.dec:r230929-231848
Merged /projects/clang390-import/sys/contrib/edk2/MdePkg.dec:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2/MdePkg.dec:r309166-310192
Merged /user/ngie/make_check/sys/contrib/edk2/MdePkg.dec:r291879-295379
Merged /projects/mpsutil/sys/contrib/edk2/MdePkg.dec:r286179-290100
Merged /projects/zfsd/head/sys/contrib/edk2/MdePkg.dec:r266519,269993
Merged /projects/fuse2/sys/contrib/edk2/MdePkg.dec:r344558-350621,350944,350955
Merged /projects/cxl_iscsi/sys/contrib/edk2/MdePkg.dec:r291227-291228,292618
Merged /projects/release-pkg/sys/contrib/edk2/MdePkg.dec:r274131-298104
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2/MdePkg.dec:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2/MdePkg.dec:r319973-326168
Merged /projects/release-arm-redux/sys/contrib/edk2/MdePkg.dec:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/clang900-import/sys/contrib/edk2/MdePkg.dec:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2/MdePkg.dec:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2/MdePkg.dec:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2/MdePkg.dec:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2/MdePkg.dec:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2/MdePkg.dec:r326936-327339,327341-327933
Merged /projects/openssl111/sys/contrib/edk2/MdePkg.dec:r339079
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2/MdePkg.dec:r298865-299093
Merged /vendor/edk2/dist/MdePkg/MdePkg.dec:r361765
Index: head/sys/contrib/edk2
===================================================================
--- head/sys/contrib/edk2 (revision 361801)
+++ head/sys/contrib/edk2 (revision 361802)
Property changes on: head/sys/contrib/edk2
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +0,56 ##
Merged /projects/ipfw/sys/contrib/edk2:r267383-272837
Merged /projects/import-googletest-1.8.1/sys/contrib/edk2:r344081-345031,345036,345038,345042,345045,345047
Merged /projects/bectl/sys/contrib/edk2:r336666-337662
Merged /user/ngie/more-tests2/sys/contrib/edk2:r288935-289179,289223-289224,289226-289227,289230,289236,289325,289437,289440,289478,289484-289486,290904,290921
Merged /vendor/device-tree/dist/sys/contrib/edk2:r303380
Merged /projects/clang1000-import/sys/contrib/edk2:r356848-358850
Merged /projects/vnet/sys/contrib/edk2:r295220
Merged /projects/pf/head/sys/contrib/edk2:r263908
Merged /projects/contrib-netbsd-update-12/sys/contrib/edk2:r303899-303984
Merged /projects/bsd_rdma_4_9/sys/contrib/edk2:r319973-326168
Merged /projects/head_mfi/sys/contrib/edk2:r233621
Merged /user/ngie/socket-tests/sys/contrib/edk2:r293882-293885,294103,294117,294119-294120,294245-294247,294488,294555,294643-294644
Merged /projects/bsnmp-improved-ipv6-support/sys/contrib/edk2:r301868
Merged /projects/quota64/sys/contrib/edk2:r184125-207707
Merged /projects/zfsd/head/sys/contrib/edk2:r266519,269993
Merged /user/ngie/bug203673/sys/contrib/edk2:r289470-289489
Merged /user/delphij/zfs-arc-rebase/sys/contrib/edk2:r281754
Merged /projects/random_number_generator/sys/contrib/edk2:r254613-256243
Merged /projects/mpsutil/sys/contrib/edk2:r286179-290100
Merged /user/ngie/release-pkg-fix-tests/sys/contrib/edk2:r298865-299093
Merged /projects/netbsd-tests-upstream-01-2017/sys/contrib/edk2:r312125-313435
Merged /projects/clang-sparc64/sys/contrib/edk2:r262258-262612
Merged /projects/multi-fibv6/head/sys/contrib/edk2:r230929-231848
Merged /projects/cxl_iscsi/sys/contrib/edk2:r291227-291228,292618
Merged /projects/release-pkg/sys/contrib/edk2:r274131-298104
Merged /projects/collation/sys/contrib/edk2:r286424-290491
Merged /user/ngie/more-tests/sys/contrib/edk2:r281427-281428,281430,281432,281450,281460,281464-281465,281485,281489-281491,281515,281519,281589,281593-281597,281619,284388,288316,288321-288327,288422,288476,288478-288481,288483,288578,288650-288651,288655-288656,288659-288661,288663,288673-288676,288680,288828,288930-288932
Merged /projects/release-arm-redux/sys/contrib/edk2:r278203,278595-278597,278610,280643-280650,280652,280655,282539-282546,282548,282553-282557,282564,282566,282570,282573,282587-282593,282596-282607,282615-282616,282624-282629,282631,282633,282635-282640,282642,282647-282648,282653-282654,282656-282657,282659,282662-282667,282682,282691
Merged /projects/clang-trunk/sys/contrib/edk2:r283596-287505
Merged /projects/release-arm64/sys/contrib/edk2:r281786,281788,281792
Merged /projects/building-blocks/sys/contrib/edk2:r275142-275143,275198,275297,275306-275307,275309,275311,275556,275558,275600,277445,277670,277673
Merged /projects/netbsd-tests-update-12/sys/contrib/edk2:r303985-305318
Merged /projects/release-embedded/sys/contrib/edk2:r262314,262504,262510-262511,262580,262660,262662,262700,262713,262774,262786-262788,262790-262792,262798,262802,262808
Merged /projects/largeSMP/sys/contrib/edk2:r221273-222812,222815-223757
Merged /projects/elftoolchain-update-r3130/sys/contrib/edk2:r276164,276167,276170-276172
Merged /projects/clang900-import/sys/contrib/edk2:r351317-353352
Merged /projects/clang800-import/sys/contrib/edk2:r343202-344778
Merged /projects/clang700-import/sys/contrib/edk2:r336870-341824
Merged /projects/clang400-import/sys/contrib/edk2:r311132-314524
Merged /projects/clang500-import/sys/contrib/edk2:r316992-321352
Merged /projects/clang600-import/sys/contrib/edk2:r326936-327339,327341-327933
Merged /projects/clang350-import/sys/contrib/edk2:r274961-275126,275128-275133,275135-276476
Merged /vendor/resolver/dist/sys/contrib/edk2:r1540-186085
Merged /projects/clang360-import/sys/contrib/edk2:r277327-280030
Merged /projects/clang370-import/sys/contrib/edk2:r287506-288928
Merged /projects/clang380-import/sys/contrib/edk2:r292913-296412
Merged /projects/pms/sys/contrib/edk2:r285199-285661
Merged /user/ngie/bsnmp_cleanup/sys/contrib/edk2:r295193
Merged /projects/clang390-import/sys/contrib/edk2:r303250-308866,308868-309123
Merged /projects/clang391-import/sys/contrib/edk2:r309166-310192
Merged /projects/lldb-r201577/sys/contrib/edk2:r262185-262527
Merged /projects/fuse2/sys/contrib/edk2:r344558-350621,350944,350955
Merged /user/ngie/make_check/sys/contrib/edk2:r291879-295379
Merged /projects/openssl111/sys/contrib/edk2:r339079
Merged /projects/elftoolchain/sys/contrib/edk2:r260687-261245
Merged /vendor/edk2/dist/MdePkg/MdePkg.dec:r361765