TianoCore EDK2 master
Loading...
Searching...
No Matches
Base.h File Reference
#include <ProcessorBind.h>

Go to the source code of this file.

Data Structures

struct  GUID
 
struct  IPv4_ADDRESS
 
struct  IPv6_ADDRESS
 
struct  _LIST_ENTRY
 

Macros

#define GLOBAL_REMOVE_IF_UNREFERENCED
 
#define UNREACHABLE()
 
#define NORETURN
 
#define ANALYZER_UNREACHABLE()
 
#define ANALYZER_NORETURN
 
#define RETURNS_TWICE
 
#define _CONCATENATE(a, b)   __CONCATENATE(a, b)
 
#define __CONCATENATE(a, b)   a ## b
 
#define ASM_PFX(name)   _CONCATENATE (__USER_LABEL_PREFIX__, name)
 
#define ASM_FUNCTION_REMOVE_IF_UNREFERENCED
 
#define PACKED
 
#define CONST   const
 
#define STATIC   static
 
#define VOID   void
 
#define IN
 
#define OUT
 
#define OPTIONAL
 
#define TRUE   ((BOOLEAN)(1==1))
 
#define FALSE   ((BOOLEAN)(0==1))
 
#define NULL   ((VOID *) 0)
 
#define CHAR_NULL   0x0000
 
#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)
 
#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
 
#define _INT_SIZE_OF(n)   ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))
 
#define VA_START(Marker, Parameter)   (Marker = (VA_LIST) ((UINTN) & (Parameter) + _INT_SIZE_OF (Parameter)))
 
#define VA_ARG(Marker, TYPE)   (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE)) - _INT_SIZE_OF (TYPE)))
 
#define VA_END(Marker)   (Marker = (VA_LIST) 0)
 
#define VA_COPY(Dest, Start)   ((void)((Dest) = (Start)))
 
#define _BASE_INT_SIZE_OF(TYPE)   ((sizeof (TYPE) + sizeof (UINTN) - 1) / sizeof (UINTN))
 
#define BASE_ARG(Marker, TYPE)   (*(TYPE *) ((Marker += _BASE_INT_SIZE_OF (TYPE)) - _BASE_INT_SIZE_OF (TYPE)))
 
#define OFFSET_OF(TYPE, Field)   ((UINTN) &(((TYPE *)0)->Field))
 
#define ALIGNOF(TYPE)   OFFSET_OF (struct { CHAR8 C; TYPE A; }, A)
 
#define STATIC_ASSERT   _Static_assert
 
#define BASE_CR(Record, TYPE, Field)   ((TYPE *) ((CHAR8 *) (Record) - OFFSET_OF (TYPE, Field)))
 
#define IS_POW2(Value)   ((Value) != 0U && ((Value) & ((Value) - 1U)) == 0U)
 
#define IS_ALIGNED(Value, Alignment)   (((Value) & ((Alignment) - 1U)) == 0U)
 
#define ADDRESS_IS_ALIGNED(Address, Alignment)   IS_ALIGNED ((UINTN) (Address), Alignment)
 
#define ALIGN_VALUE_ADDEND(Value, Alignment)   (((Alignment) - (Value)) & ((Alignment) - 1U))
 
#define ALIGN_VALUE(Value, Alignment)   ((Value) + ALIGN_VALUE_ADDEND (Value, Alignment))
 
#define ALIGN_POINTER(Pointer, Alignment)   ((VOID *) (ALIGN_VALUE ((UINTN)(Pointer), (Alignment))))
 
#define ALIGN_VARIABLE(Value)   ALIGN_VALUE ((Value), sizeof (UINTN))
 
#define MAX(a, b)    (((a) > (b)) ? (a) : (b))
 
#define MIN(a, b)    (((a) < (b)) ? (a) : (b))
 
#define ABS(a)    (((a) < 0) ? (-(a)) : (a))
 
#define ENCODE_ERROR(StatusCode)   ((RETURN_STATUS)(MAX_BIT | (StatusCode)))
 
#define ENCODE_WARNING(StatusCode)   ((RETURN_STATUS)(StatusCode))
 
#define RETURN_ERROR(StatusCode)   (((RETURN_STATUS)(StatusCode)) >= MAX_BIT)
 
#define RETURN_SUCCESS   (RETURN_STATUS)(0)
 
#define RETURN_LOAD_ERROR   ENCODE_ERROR (1)
 
#define RETURN_INVALID_PARAMETER   ENCODE_ERROR (2)
 
#define RETURN_UNSUPPORTED   ENCODE_ERROR (3)
 
#define RETURN_BAD_BUFFER_SIZE   ENCODE_ERROR (4)
 
#define RETURN_BUFFER_TOO_SMALL   ENCODE_ERROR (5)
 
#define RETURN_NOT_READY   ENCODE_ERROR (6)
 
#define RETURN_DEVICE_ERROR   ENCODE_ERROR (7)
 
#define RETURN_WRITE_PROTECTED   ENCODE_ERROR (8)
 
#define RETURN_OUT_OF_RESOURCES   ENCODE_ERROR (9)
 
#define RETURN_VOLUME_CORRUPTED   ENCODE_ERROR (10)
 
#define RETURN_VOLUME_FULL   ENCODE_ERROR (11)
 
#define RETURN_NO_MEDIA   ENCODE_ERROR (12)
 
#define RETURN_MEDIA_CHANGED   ENCODE_ERROR (13)
 
#define RETURN_NOT_FOUND   ENCODE_ERROR (14)
 
#define RETURN_ACCESS_DENIED   ENCODE_ERROR (15)
 
#define RETURN_NO_RESPONSE   ENCODE_ERROR (16)
 
#define RETURN_NO_MAPPING   ENCODE_ERROR (17)
 
#define RETURN_TIMEOUT   ENCODE_ERROR (18)
 
#define RETURN_NOT_STARTED   ENCODE_ERROR (19)
 
#define RETURN_ALREADY_STARTED   ENCODE_ERROR (20)
 
#define RETURN_ABORTED   ENCODE_ERROR (21)
 
#define RETURN_ICMP_ERROR   ENCODE_ERROR (22)
 
#define RETURN_TFTP_ERROR   ENCODE_ERROR (23)
 
#define RETURN_PROTOCOL_ERROR   ENCODE_ERROR (24)
 
#define RETURN_INCOMPATIBLE_VERSION   ENCODE_ERROR (25)
 
#define RETURN_SECURITY_VIOLATION   ENCODE_ERROR (26)
 
#define RETURN_CRC_ERROR   ENCODE_ERROR (27)
 
#define RETURN_END_OF_MEDIA   ENCODE_ERROR (28)
 
#define RETURN_END_OF_FILE   ENCODE_ERROR (31)
 
#define RETURN_INVALID_LANGUAGE   ENCODE_ERROR (32)
 
#define RETURN_COMPROMISED_DATA   ENCODE_ERROR (33)
 
#define RETURN_IP_ADDRESS_CONFLICT   ENCODE_ERROR (34)
 
#define RETURN_HTTP_ERROR   ENCODE_ERROR (35)
 
#define RETURN_WARN_UNKNOWN_GLYPH   ENCODE_WARNING (1)
 
#define RETURN_WARN_DELETE_FAILURE   ENCODE_WARNING (2)
 
#define RETURN_WARN_WRITE_FAILURE   ENCODE_WARNING (3)
 
#define RETURN_WARN_BUFFER_TOO_SMALL   ENCODE_WARNING (4)
 
#define RETURN_WARN_STALE_DATA   ENCODE_WARNING (5)
 
#define RETURN_WARN_FILE_SYSTEM   ENCODE_WARNING (6)
 
#define RETURN_WARN_RESET_REQUIRED   ENCODE_WARNING (7)
 
#define SIGNATURE_16(A, B)   ((A) | (B << 8))
 
#define SIGNATURE_32(A, B, C, D)   (SIGNATURE_16 (A, B) | (SIGNATURE_16 (C, D) << 16))
 
#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))
 
#define RETURN_ADDRESS(L)   ((VOID *) 0)
 
#define ARRAY_SIZE(Array)   (sizeof (Array) / sizeof ((Array)[0]))
 

Typedefs

typedef UINT64 PHYSICAL_ADDRESS
 
typedef struct _LIST_ENTRY LIST_ENTRY
 
typedef CHAR8 * VA_LIST
 
typedef UINTNBASE_LIST
 
typedef UINTN RETURN_STATUS
 

Enumerations

enum  __VERIFY_UINT8_ENUM_SIZE { __VerifyUint8EnumValue = 0xff }
 
enum  __VERIFY_UINT16_ENUM_SIZE { __VerifyUint16EnumValue = 0xffff }
 
enum  __VERIFY_INT32_ENUM_SIZE { __VerifyInt32EnumValue = 0x7fffffff }
 

Functions

 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(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(L 'A')==2, "sizeof (L'A') does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (sizeof(L"A")==4, "sizeof (L\"A\") does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(BOOLEAN)==sizeof(BOOLEAN), "Alignment of BOOLEAN does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(INT8)==sizeof(INT8), "Alignment of INT8 does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(UINT8)==sizeof(UINT8), "Alignment of INT16 does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(INT16)==sizeof(INT16), "Alignment of INT16 does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(UINT16)==sizeof(UINT16), "Alignment of UINT16 does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(INT32)==sizeof(INT32), "Alignment of INT32 does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(UINT32)==sizeof(UINT32), "Alignment of UINT32 does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(INT64)==sizeof(INT64), "Alignment of INT64 does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(UINT64)==sizeof(UINT64), "Alignment of UINT64 does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(CHAR8)==sizeof(CHAR8), "Alignment of CHAR8 does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(VOID *)==sizeof(VOID *), "Alignment of VOID * does not meet UEFI Specification Data Type requirements")
 
 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_INT32_ENUM_SIZE)==4, "Size of enum does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(__VERIFY_UINT8_ENUM_SIZE)==sizeof(__VERIFY_UINT8_ENUM_SIZE), "Alignment of enum does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(__VERIFY_UINT16_ENUM_SIZE)==sizeof(__VERIFY_UINT16_ENUM_SIZE), "Alignment of enum does not meet UEFI Specification Data Type requirements")
 
 STATIC_ASSERT (ALIGNOF(__VERIFY_INT32_ENUM_SIZE)==sizeof(__VERIFY_INT32_ENUM_SIZE), "Alignment of enum does not meet UEFI Specification Data Type requirements")
 

Detailed Description

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 - 2021, Intel Corporation. All rights reserved.
Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file Base.h.

Macro Definition Documentation

◆ __CONCATENATE

#define __CONCATENATE (   a,
 
)    a ## b

Definition at line 189 of file Base.h.

◆ _BASE_INT_SIZE_OF

#define _BASE_INT_SIZE_OF (   TYPE)    ((sizeof (TYPE) + sizeof (UINTN) - 1) / sizeof (UINTN))

Returns the size of a data type in sizeof(UINTN) units rounded up to the nearest UINTN boundary.

Parameters
TYPEThe date type to determine the size of.
Returns
The size of TYPE in sizeof (UINTN) units rounded up to the nearest UINTN boundary.

Definition at line 720 of file Base.h.

◆ _CONCATENATE

#define _CONCATENATE (   a,
 
)    __CONCATENATE(a, b)

Private worker functions for ASM_PFX()

Definition at line 188 of file Base.h.

◆ _INT_SIZE_OF

#define _INT_SIZE_OF (   n)    ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))

Return the size of argument that has been aligned to sizeof (UINTN).

Parameters
nThe parameter size to be aligned.
Returns
The aligned size.

Definition at line 579 of file Base.h.

◆ ABS

#define ABS (   a)     (((a) < 0) ? (-(a)) : (a))

Return the absolute value of a signed operand.

This macro returns the absolute value of the signed operand specified by a.

Parameters
aThe signed operand.
Returns
The absolute value of the signed operand.

Definition at line 1020 of file Base.h.

◆ ADDRESS_IS_ALIGNED

#define ADDRESS_IS_ALIGNED (   Address,
  Alignment 
)    IS_ALIGNED ((UINTN) (Address), Alignment)

Checks whether a pointer or address is aligned by a specified alignment.

Parameters
AddressThe pointer or address to check.
AlignmentThe alignment boundary used to check against.
Return values
TRUEAddress is aligned by Alignment.
FALSEAddress is not aligned by Alignment.

Definition at line 923 of file Base.h.

◆ ALIGN_POINTER

#define ALIGN_POINTER (   Pointer,
  Alignment 
)    ((VOID *) (ALIGN_VALUE ((UINTN)(Pointer), (Alignment))))

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.

Parameters
PointerThe pointer to round up.
AlignmentThe alignment boundary to use to return an aligned pointer.
Returns
Pointer to the aligned address.

Definition at line 963 of file Base.h.

◆ ALIGN_VALUE

#define ALIGN_VALUE (   Value,
  Alignment 
)    ((Value) + ALIGN_VALUE_ADDEND (Value, Alignment))

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.

Parameters
ValueThe value to round up.
AlignmentThe alignment boundary used to return the aligned value.
Returns
A value up to the next boundary.

Definition at line 948 of file Base.h.

◆ ALIGN_VALUE_ADDEND

#define ALIGN_VALUE_ADDEND (   Value,
  Alignment 
)    (((Alignment) - (Value)) & ((Alignment) - 1U))

Determines the addend to add to a value to round it up to the next boundary of a specified alignment.

Parameters
ValueThe value to round up.
AlignmentThe alignment boundary used to return the addend.
Returns
Addend to round Value up to alignment boundary Alignment.

Definition at line 934 of file Base.h.

◆ ALIGN_VARIABLE

#define ALIGN_VARIABLE (   Value)    ALIGN_VALUE ((Value), sizeof (UINTN))

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.

Parameters
ValueThe value to round up.
Returns
Rounded value specified by Value.

Definition at line 977 of file Base.h.

◆ ALIGNOF

#define ALIGNOF (   TYPE)    OFFSET_OF (struct { CHAR8 C; TYPE A; }, A)

Returns the alignment requirement of a type.

Parameters
TYPEThe name of the type to retrieve the alignment requirement of.
Returns
Alignment requirement, in Bytes, of TYPE.

Definition at line 792 of file Base.h.

◆ ANALYZER_NORETURN

#define ANALYZER_NORETURN

Signal the analyzer that the function cannot return. This excludes compilers.

Definition at line 157 of file Base.h.

◆ ANALYZER_UNREACHABLE

#define ANALYZER_UNREACHABLE ( )

Signal the analyzer that this call is not reachable. This excludes compilers.

Definition at line 131 of file Base.h.

◆ ARRAY_SIZE

#define ARRAY_SIZE (   Array)    (sizeof (Array) / sizeof ((Array)[0]))

Return the number of elements in an array.

Parameters
ArrayAn 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.
Returns
The number of elements in Array. The result has type UINTN.

Definition at line 1393 of file Base.h.

◆ ASM_FUNCTION_REMOVE_IF_UNREFERENCED

#define ASM_FUNCTION_REMOVE_IF_UNREFERENCED

Definition at line 204 of file Base.h.

◆ ASM_PFX

#define ASM_PFX (   name)    _CONCATENATE (__USER_LABEL_PREFIX__, name)

The USER_LABEL_PREFIX macro predefined by GNUC represents the prefix on symbols in assembly language.

Definition at line 195 of file Base.h.

◆ BASE_128GB

#define BASE_128GB   0x0000002000000000ULL

Definition at line 494 of file Base.h.

◆ BASE_128KB

#define BASE_128KB   0x00020000

Definition at line 474 of file Base.h.

◆ BASE_128MB

#define BASE_128MB   0x08000000

Definition at line 484 of file Base.h.

◆ BASE_128PB

#define BASE_128PB   0x0200000000000000ULL

Definition at line 514 of file Base.h.

◆ BASE_128TB

#define BASE_128TB   0x0000800000000000ULL

Definition at line 504 of file Base.h.

◆ BASE_16GB

#define BASE_16GB   0x0000000400000000ULL

Definition at line 491 of file Base.h.

◆ BASE_16KB

#define BASE_16KB   0x00004000

Definition at line 471 of file Base.h.

◆ BASE_16MB

#define BASE_16MB   0x01000000

Definition at line 481 of file Base.h.

◆ BASE_16PB

#define BASE_16PB   0x0040000000000000ULL

Definition at line 511 of file Base.h.

◆ BASE_16TB

#define BASE_16TB   0x0000100000000000ULL

Definition at line 501 of file Base.h.

◆ BASE_1EB

#define BASE_1EB   0x1000000000000000ULL

Definition at line 517 of file Base.h.

◆ BASE_1GB

#define BASE_1GB   0x40000000

Definition at line 487 of file Base.h.

◆ BASE_1KB

#define BASE_1KB   0x00000400

Definition at line 467 of file Base.h.

◆ BASE_1MB

#define BASE_1MB   0x00100000

Definition at line 477 of file Base.h.

◆ BASE_1PB

#define BASE_1PB   0x0004000000000000ULL

Definition at line 507 of file Base.h.

◆ BASE_1TB

#define BASE_1TB   0x0000010000000000ULL

Definition at line 497 of file Base.h.

◆ BASE_256GB

#define BASE_256GB   0x0000004000000000ULL

Definition at line 495 of file Base.h.

◆ BASE_256KB

#define BASE_256KB   0x00040000

Definition at line 475 of file Base.h.

◆ BASE_256MB

#define BASE_256MB   0x10000000

Definition at line 485 of file Base.h.

◆ BASE_256PB

#define BASE_256PB   0x0400000000000000ULL

Definition at line 515 of file Base.h.

◆ BASE_256TB

#define BASE_256TB   0x0001000000000000ULL

Definition at line 505 of file Base.h.

◆ BASE_2EB

#define BASE_2EB   0x2000000000000000ULL

Definition at line 518 of file Base.h.

◆ BASE_2GB

#define BASE_2GB   0x80000000

Definition at line 488 of file Base.h.

◆ BASE_2KB

#define BASE_2KB   0x00000800

Definition at line 468 of file Base.h.

◆ BASE_2MB

#define BASE_2MB   0x00200000

Definition at line 478 of file Base.h.

◆ BASE_2PB

#define BASE_2PB   0x0008000000000000ULL

Definition at line 508 of file Base.h.

◆ BASE_2TB

#define BASE_2TB   0x0000020000000000ULL

Definition at line 498 of file Base.h.

◆ BASE_32GB

#define BASE_32GB   0x0000000800000000ULL

Definition at line 492 of file Base.h.

◆ BASE_32KB

#define BASE_32KB   0x00008000

Definition at line 472 of file Base.h.

◆ BASE_32MB

#define BASE_32MB   0x02000000

Definition at line 482 of file Base.h.

◆ BASE_32PB

#define BASE_32PB   0x0080000000000000ULL

Definition at line 512 of file Base.h.

◆ BASE_32TB

#define BASE_32TB   0x0000200000000000ULL

Definition at line 502 of file Base.h.

◆ BASE_4EB

#define BASE_4EB   0x4000000000000000ULL

Definition at line 519 of file Base.h.

◆ BASE_4GB

#define BASE_4GB   0x0000000100000000ULL

Definition at line 489 of file Base.h.

◆ BASE_4KB

#define BASE_4KB   0x00001000

Definition at line 469 of file Base.h.

◆ BASE_4MB

#define BASE_4MB   0x00400000

Definition at line 479 of file Base.h.

◆ BASE_4PB

#define BASE_4PB   0x0010000000000000ULL

Definition at line 509 of file Base.h.

◆ BASE_4TB

#define BASE_4TB   0x0000040000000000ULL

Definition at line 499 of file Base.h.

◆ BASE_512GB

#define BASE_512GB   0x0000008000000000ULL

Definition at line 496 of file Base.h.

◆ BASE_512KB

#define BASE_512KB   0x00080000

Definition at line 476 of file Base.h.

◆ BASE_512MB

#define BASE_512MB   0x20000000

Definition at line 486 of file Base.h.

◆ BASE_512PB

#define BASE_512PB   0x0800000000000000ULL

Definition at line 516 of file Base.h.

◆ BASE_512TB

#define BASE_512TB   0x0002000000000000ULL

Definition at line 506 of file Base.h.

◆ BASE_64GB

#define BASE_64GB   0x0000001000000000ULL

Definition at line 493 of file Base.h.

◆ BASE_64KB

#define BASE_64KB   0x00010000

Definition at line 473 of file Base.h.

◆ BASE_64MB

#define BASE_64MB   0x04000000

Definition at line 483 of file Base.h.

◆ BASE_64PB

#define BASE_64PB   0x0100000000000000ULL

Definition at line 513 of file Base.h.

◆ BASE_64TB

#define BASE_64TB   0x0000400000000000ULL

Definition at line 503 of file Base.h.

◆ BASE_8EB

#define BASE_8EB   0x8000000000000000ULL

Definition at line 520 of file Base.h.

◆ BASE_8GB

#define BASE_8GB   0x0000000200000000ULL

Definition at line 490 of file Base.h.

◆ BASE_8KB

#define BASE_8KB   0x00002000

Definition at line 470 of file Base.h.

◆ BASE_8MB

#define BASE_8MB   0x00800000

Definition at line 480 of file Base.h.

◆ BASE_8PB

#define BASE_8PB   0x0020000000000000ULL

Definition at line 510 of file Base.h.

◆ BASE_8TB

#define BASE_8TB   0x0000080000000000ULL

Definition at line 500 of file Base.h.

◆ BASE_ARG

#define BASE_ARG (   Marker,
  TYPE 
)    (*(TYPE *) ((Marker += _BASE_INT_SIZE_OF (TYPE)) - _BASE_INT_SIZE_OF (TYPE)))

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.

Parameters
MarkerThe pointer to the beginning of a variable argument list.
TYPEThe type of argument to retrieve from the beginning of the variable argument list.
Returns
An argument of the type specified by TYPE.

Definition at line 738 of file Base.h.

◆ BASE_CR

#define BASE_CR (   Record,
  TYPE,
  Field 
)    ((TYPE *) ((CHAR8 *) (Record) - OFFSET_OF (TYPE, Field)))

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.

Parameters
RecordPointer to the field specified by Field within a data structure of type TYPE.
TYPEThe name of the data structure type to return. This data structure must contain the field specified by Field.
FieldThe name of the field in the data structure specified by TYPE to which Record points.
Returns
A pointer to the structure from one of it's elements.

Definition at line 891 of file Base.h.

◆ BIT0

#define BIT0   0x00000001

Definition at line 347 of file Base.h.

◆ BIT1

#define BIT1   0x00000002

Definition at line 348 of file Base.h.

◆ BIT10

#define BIT10   0x00000400

Definition at line 357 of file Base.h.

◆ BIT11

#define BIT11   0x00000800

Definition at line 358 of file Base.h.

◆ BIT12

#define BIT12   0x00001000

Definition at line 359 of file Base.h.

◆ BIT13

#define BIT13   0x00002000

Definition at line 360 of file Base.h.

◆ BIT14

#define BIT14   0x00004000

Definition at line 361 of file Base.h.

◆ BIT15

#define BIT15   0x00008000

Definition at line 362 of file Base.h.

◆ BIT16

#define BIT16   0x00010000

Definition at line 363 of file Base.h.

◆ BIT17

#define BIT17   0x00020000

Definition at line 364 of file Base.h.

◆ BIT18

#define BIT18   0x00040000

Definition at line 365 of file Base.h.

◆ BIT19

#define BIT19   0x00080000

Definition at line 366 of file Base.h.

◆ BIT2

#define BIT2   0x00000004

Definition at line 349 of file Base.h.

◆ BIT20

#define BIT20   0x00100000

Definition at line 367 of file Base.h.

◆ BIT21

#define BIT21   0x00200000

Definition at line 368 of file Base.h.

◆ BIT22

#define BIT22   0x00400000

Definition at line 369 of file Base.h.

◆ BIT23

#define BIT23   0x00800000

Definition at line 370 of file Base.h.

◆ BIT24

#define BIT24   0x01000000

Definition at line 371 of file Base.h.

◆ BIT25

#define BIT25   0x02000000

Definition at line 372 of file Base.h.

◆ BIT26

#define BIT26   0x04000000

Definition at line 373 of file Base.h.

◆ BIT27

#define BIT27   0x08000000

Definition at line 374 of file Base.h.

◆ BIT28

#define BIT28   0x10000000

Definition at line 375 of file Base.h.

◆ BIT29

#define BIT29   0x20000000

Definition at line 376 of file Base.h.

◆ BIT3

#define BIT3   0x00000008

Definition at line 350 of file Base.h.

◆ BIT30

#define BIT30   0x40000000

Definition at line 377 of file Base.h.

◆ BIT31

#define BIT31   0x80000000

Definition at line 378 of file Base.h.

◆ BIT32

#define BIT32   0x0000000100000000ULL

Definition at line 379 of file Base.h.

◆ BIT33

#define BIT33   0x0000000200000000ULL

Definition at line 380 of file Base.h.

◆ BIT34

#define BIT34   0x0000000400000000ULL

Definition at line 381 of file Base.h.

◆ BIT35

#define BIT35   0x0000000800000000ULL

Definition at line 382 of file Base.h.

◆ BIT36

#define BIT36   0x0000001000000000ULL

Definition at line 383 of file Base.h.

◆ BIT37

#define BIT37   0x0000002000000000ULL

Definition at line 384 of file Base.h.

◆ BIT38

#define BIT38   0x0000004000000000ULL

Definition at line 385 of file Base.h.

◆ BIT39

#define BIT39   0x0000008000000000ULL

Definition at line 386 of file Base.h.

◆ BIT4

#define BIT4   0x00000010

Definition at line 351 of file Base.h.

◆ BIT40

#define BIT40   0x0000010000000000ULL

Definition at line 387 of file Base.h.

◆ BIT41

#define BIT41   0x0000020000000000ULL

Definition at line 388 of file Base.h.

◆ BIT42

#define BIT42   0x0000040000000000ULL

Definition at line 389 of file Base.h.

◆ BIT43

#define BIT43   0x0000080000000000ULL

Definition at line 390 of file Base.h.

◆ BIT44

#define BIT44   0x0000100000000000ULL

Definition at line 391 of file Base.h.

◆ BIT45

#define BIT45   0x0000200000000000ULL

Definition at line 392 of file Base.h.

◆ BIT46

#define BIT46   0x0000400000000000ULL

Definition at line 393 of file Base.h.

◆ BIT47

#define BIT47   0x0000800000000000ULL

Definition at line 394 of file Base.h.

◆ BIT48

#define BIT48   0x0001000000000000ULL

Definition at line 395 of file Base.h.

◆ BIT49

#define BIT49   0x0002000000000000ULL

Definition at line 396 of file Base.h.

◆ BIT5

#define BIT5   0x00000020

Definition at line 352 of file Base.h.

◆ BIT50

#define BIT50   0x0004000000000000ULL

Definition at line 397 of file Base.h.

◆ BIT51

#define BIT51   0x0008000000000000ULL

Definition at line 398 of file Base.h.

◆ BIT52

#define BIT52   0x0010000000000000ULL

Definition at line 399 of file Base.h.

◆ BIT53

#define BIT53   0x0020000000000000ULL

Definition at line 400 of file Base.h.

◆ BIT54

#define BIT54   0x0040000000000000ULL

Definition at line 401 of file Base.h.

◆ BIT55

#define BIT55   0x0080000000000000ULL

Definition at line 402 of file Base.h.

◆ BIT56

#define BIT56   0x0100000000000000ULL

Definition at line 403 of file Base.h.

◆ BIT57

#define BIT57   0x0200000000000000ULL

Definition at line 404 of file Base.h.

◆ BIT58

#define BIT58   0x0400000000000000ULL

Definition at line 405 of file Base.h.

◆ BIT59

#define BIT59   0x0800000000000000ULL

Definition at line 406 of file Base.h.

◆ BIT6

#define BIT6   0x00000040

Definition at line 353 of file Base.h.

◆ BIT60

#define BIT60   0x1000000000000000ULL

Definition at line 407 of file Base.h.

◆ BIT61

#define BIT61   0x2000000000000000ULL

Definition at line 408 of file Base.h.

◆ BIT62

#define BIT62   0x4000000000000000ULL

Definition at line 409 of file Base.h.

◆ BIT63

#define BIT63   0x8000000000000000ULL

Definition at line 410 of file Base.h.

◆ BIT7

#define BIT7   0x00000080

Definition at line 354 of file Base.h.

◆ BIT8

#define BIT8   0x00000100

Definition at line 355 of file Base.h.

◆ BIT9

#define BIT9   0x00000200

Definition at line 356 of file Base.h.

◆ CHAR_NULL

#define CHAR_NULL   0x0000

Definition at line 325 of file Base.h.

◆ CONST

#define CONST   const

Datum is read-only.

Definition at line 259 of file Base.h.

◆ ENCODE_ERROR

#define ENCODE_ERROR (   StatusCode)    ((RETURN_STATUS)(MAX_BIT | (StatusCode)))

Produces a RETURN_STATUS code with the highest bit set.

Parameters
StatusCodeThe status code value to convert into a warning code. StatusCode must be in the range 0x00000000..0x7FFFFFFF.
Returns
The value specified by StatusCode with the highest bit set.

Definition at line 1037 of file Base.h.

◆ ENCODE_WARNING

#define ENCODE_WARNING (   StatusCode)    ((RETURN_STATUS)(StatusCode))

Produces a RETURN_STATUS code with the highest bit clear.

Parameters
StatusCodeThe status code value to convert into a warning code. StatusCode must be in the range 0x00000000..0x7FFFFFFF.
Returns
The value specified by StatusCode with the highest bit clear.

Definition at line 1048 of file Base.h.

◆ FALSE

#define FALSE   ((BOOLEAN)(0==1))

Boolean false value. UEFI Specification defines this value to be 0, but this form is more portable.

Definition at line 307 of file Base.h.

◆ GLOBAL_REMOVE_IF_UNREFERENCED

#define GLOBAL_REMOVE_IF_UNREFERENCED

Remove the global variable from the linked image if there are no references to it after all compiler and linker optimizations have been performed.

Definition at line 48 of file Base.h.

◆ IN

#define IN

Datum is passed to the function.

Definition at line 279 of file Base.h.

◆ IS_ALIGNED

#define IS_ALIGNED (   Value,
  Alignment 
)    (((Value) & ((Alignment) - 1U)) == 0U)

Checks whether a value is aligned by a specified alignment.

Parameters
ValueThe value to check.
AlignmentThe alignment boundary used to check against.
Return values
TRUEValue is aligned by Alignment.
FALSEValue is not aligned by Alignment.

Definition at line 912 of file Base.h.

◆ IS_POW2

#define IS_POW2 (   Value)    ((Value) != 0U && ((Value) & ((Value) - 1U)) == 0U)

Checks whether a value is a power of two.

Parameters
ValueThe value to check.
Return values
TRUEValue is a power of two.
FALSEValue is not a power of two.

Definition at line 901 of file Base.h.

◆ MAX

#define MAX (   a,
 
)     (((a) > (b)) ? (a) : (b))

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.

Parameters
aThe first operand with any numerical type.
bThe second operand. Can be any numerical type as long as is the same type as a.
Returns
Maximum of two operands.

Definition at line 992 of file Base.h.

◆ MAX_INT16

#define MAX_INT16   ((INT16)0x7FFF)

Definition at line 332 of file Base.h.

◆ MAX_INT32

#define MAX_INT32   ((INT32)0x7FFFFFFF)

Definition at line 334 of file Base.h.

◆ MAX_INT64

#define MAX_INT64   ((INT64)0x7FFFFFFFFFFFFFFFULL)

Definition at line 336 of file Base.h.

◆ MAX_INT8

#define MAX_INT8   ((INT8)0x7F)

Maximum values for common UEFI Data Types

Definition at line 330 of file Base.h.

◆ MAX_UINT16

#define MAX_UINT16   ((UINT16)0xFFFF)

Definition at line 333 of file Base.h.

◆ MAX_UINT32

#define MAX_UINT32   ((UINT32)0xFFFFFFFF)

Definition at line 335 of file Base.h.

◆ MAX_UINT64

#define MAX_UINT64   ((UINT64)0xFFFFFFFFFFFFFFFFULL)

Definition at line 337 of file Base.h.

◆ MAX_UINT8

#define MAX_UINT8   ((UINT8)0xFF)

Definition at line 331 of file Base.h.

◆ MIN

#define MIN (   a,
 
)     (((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.

Parameters
aThe first operand with any numerical type.
bThe second operand. It should be the same any numerical type with a.
Returns
Minimum of two operands.

Definition at line 1007 of file Base.h.

◆ MIN_INT16

#define MIN_INT16   (((INT16) -32767) - 1)

Definition at line 343 of file Base.h.

◆ MIN_INT32

#define MIN_INT32   (((INT32) -2147483647) - 1)

Definition at line 344 of file Base.h.

◆ MIN_INT64

#define MIN_INT64   (((INT64) -9223372036854775807LL) - 1)

Definition at line 345 of file Base.h.

◆ MIN_INT8

#define MIN_INT8   (((INT8) -127) - 1)

Minimum values for the signed UEFI Data Types

Definition at line 342 of file Base.h.

◆ NORETURN

#define NORETURN

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.

Definition at line 107 of file Base.h.

◆ NULL

#define NULL   ((VOID *) 0)

NULL pointer (VOID *)

Definition at line 319 of file Base.h.

◆ OFFSET_OF

#define OFFSET_OF (   TYPE,
  Field 
)    ((UINTN) &(((TYPE *)0)->Field))

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.

Parameters
TYPEThe name of the data structure that contains the field specified by Field.
FieldThe name of the field in the data structure.
Returns
Offset, in bytes, of field.

Definition at line 758 of file Base.h.

◆ OPTIONAL

IN VOID *Buffer OPTIONAL

Passing the datum to the function is optional, and a NULL is passed if the value is not supplied.

Definition at line 290 of file Base.h.

◆ OUT

#define OUT

Datum is returned from the function.

Definition at line 284 of file Base.h.

◆ PACKED

#define PACKED

Definition at line 207 of file Base.h.

◆ RETURN_ABORTED

#define RETURN_ABORTED   ENCODE_ERROR (21)

The operation was aborted.

Definition at line 1177 of file Base.h.

◆ RETURN_ACCESS_DENIED

#define RETURN_ACCESS_DENIED   ENCODE_ERROR (15)

Access was denied.

Definition at line 1147 of file Base.h.

◆ RETURN_ADDRESS

#define RETURN_ADDRESS (   L)    ((VOID *) 0)

Get the return address of the calling function.

Parameters
LReturn Level.
Returns
0 as compilers don't support this feature.

Definition at line 1379 of file Base.h.

◆ RETURN_ALREADY_STARTED

#define RETURN_ALREADY_STARTED   ENCODE_ERROR (20)

The protocol has already been started.

Definition at line 1172 of file Base.h.

◆ RETURN_BAD_BUFFER_SIZE

#define RETURN_BAD_BUFFER_SIZE   ENCODE_ERROR (4)

The buffer was not the proper size for the request.

Definition at line 1086 of file Base.h.

◆ RETURN_BUFFER_TOO_SMALL

#define RETURN_BUFFER_TOO_SMALL   ENCODE_ERROR (5)

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.

Definition at line 1093 of file Base.h.

◆ RETURN_COMPROMISED_DATA

#define RETURN_COMPROMISED_DATA   ENCODE_ERROR (33)

The security status of the data is unknown or compromised and the data must be updated or replaced to restore a valid security status.

Definition at line 1230 of file Base.h.

◆ RETURN_CRC_ERROR

#define RETURN_CRC_ERROR   ENCODE_ERROR (27)

A CRC error was detected.

Definition at line 1208 of file Base.h.

◆ RETURN_DEVICE_ERROR

#define RETURN_DEVICE_ERROR   ENCODE_ERROR (7)

The physical device reported an error while attempting the operation.

Definition at line 1104 of file Base.h.

◆ RETURN_END_OF_FILE

#define RETURN_END_OF_FILE   ENCODE_ERROR (31)

The end of the file was reached.

Definition at line 1218 of file Base.h.

◆ RETURN_END_OF_MEDIA

#define RETURN_END_OF_MEDIA   ENCODE_ERROR (28)

The beginning or end of media was reached.

Definition at line 1213 of file Base.h.

◆ RETURN_ERROR

#define RETURN_ERROR (   StatusCode)    (((RETURN_STATUS)(StatusCode)) >= MAX_BIT)

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.

Parameters
StatusCodeThe status code value to evaluate.
Return values
TRUEThe high bit of StatusCode is set.
FALSEThe high bit of StatusCode is clear.

Definition at line 1061 of file Base.h.

◆ RETURN_HTTP_ERROR

#define RETURN_HTTP_ERROR   ENCODE_ERROR (35)

A HTTP error occurred during the network operation.

Definition at line 1240 of file Base.h.

◆ RETURN_ICMP_ERROR

#define RETURN_ICMP_ERROR   ENCODE_ERROR (22)

An ICMP error occurred during the network operation.

Definition at line 1182 of file Base.h.

◆ RETURN_INCOMPATIBLE_VERSION

#define RETURN_INCOMPATIBLE_VERSION   ENCODE_ERROR (25)

A function encountered an internal version that was incompatible with a version requested by the caller.

Definition at line 1198 of file Base.h.

◆ RETURN_INVALID_LANGUAGE

#define RETURN_INVALID_LANGUAGE   ENCODE_ERROR (32)

The language specified was invalid.

Definition at line 1223 of file Base.h.

◆ RETURN_INVALID_PARAMETER

#define RETURN_INVALID_PARAMETER   ENCODE_ERROR (2)

The parameter was incorrect.

Definition at line 1076 of file Base.h.

◆ RETURN_IP_ADDRESS_CONFLICT

#define RETURN_IP_ADDRESS_CONFLICT   ENCODE_ERROR (34)

There is an address conflict address allocation.

Definition at line 1235 of file Base.h.

◆ RETURN_LOAD_ERROR

#define RETURN_LOAD_ERROR   ENCODE_ERROR (1)

The image failed to load.

Definition at line 1071 of file Base.h.

◆ RETURN_MEDIA_CHANGED

#define RETURN_MEDIA_CHANGED   ENCODE_ERROR (13)

The medium in the device has changed since the last access.

Definition at line 1137 of file Base.h.

◆ RETURN_NO_MAPPING

#define RETURN_NO_MAPPING   ENCODE_ERROR (17)

A mapping to the device does not exist.

Definition at line 1157 of file Base.h.

◆ RETURN_NO_MEDIA

#define RETURN_NO_MEDIA   ENCODE_ERROR (12)

The device does not contain any medium to perform the operation.

Definition at line 1131 of file Base.h.

◆ RETURN_NO_RESPONSE

#define RETURN_NO_RESPONSE   ENCODE_ERROR (16)

The server was not found or did not respond to the request.

Definition at line 1152 of file Base.h.

◆ RETURN_NOT_FOUND

#define RETURN_NOT_FOUND   ENCODE_ERROR (14)

The item was not found.

Definition at line 1142 of file Base.h.

◆ RETURN_NOT_READY

#define RETURN_NOT_READY   ENCODE_ERROR (6)

There is no data pending upon return.

Definition at line 1098 of file Base.h.

◆ RETURN_NOT_STARTED

#define RETURN_NOT_STARTED   ENCODE_ERROR (19)

The protocol has not been started.

Definition at line 1167 of file Base.h.

◆ RETURN_OUT_OF_RESOURCES

#define RETURN_OUT_OF_RESOURCES   ENCODE_ERROR (9)

The resource has run out.

Definition at line 1114 of file Base.h.

◆ RETURN_PROTOCOL_ERROR

#define RETURN_PROTOCOL_ERROR   ENCODE_ERROR (24)

A protocol error occurred during the network operation.

Definition at line 1192 of file Base.h.

◆ RETURN_SECURITY_VIOLATION

#define RETURN_SECURITY_VIOLATION   ENCODE_ERROR (26)

The function was not performed due to a security violation.

Definition at line 1203 of file Base.h.

◆ RETURN_SUCCESS

#define RETURN_SUCCESS   (RETURN_STATUS)(0)

The operation completed successfully.

Definition at line 1066 of file Base.h.

◆ RETURN_TFTP_ERROR

#define RETURN_TFTP_ERROR   ENCODE_ERROR (23)

A TFTP error occurred during the network operation.

Definition at line 1187 of file Base.h.

◆ RETURN_TIMEOUT

#define RETURN_TIMEOUT   ENCODE_ERROR (18)

A timeout time expired.

Definition at line 1162 of file Base.h.

◆ RETURN_UNSUPPORTED

#define RETURN_UNSUPPORTED   ENCODE_ERROR (3)

The operation is not supported.

Definition at line 1081 of file Base.h.

◆ RETURN_VOLUME_CORRUPTED

#define RETURN_VOLUME_CORRUPTED   ENCODE_ERROR (10)

An inconsistency was detected on the file system causing the operation to fail.

Definition at line 1120 of file Base.h.

◆ RETURN_VOLUME_FULL

#define RETURN_VOLUME_FULL   ENCODE_ERROR (11)

There is no more space on the file system.

Definition at line 1125 of file Base.h.

◆ RETURN_WARN_BUFFER_TOO_SMALL

#define RETURN_WARN_BUFFER_TOO_SMALL   ENCODE_WARNING (4)

The resulting buffer was too small, and the data was truncated to the buffer size.

Definition at line 1263 of file Base.h.

◆ RETURN_WARN_DELETE_FAILURE

#define RETURN_WARN_DELETE_FAILURE   ENCODE_WARNING (2)

The handle was closed, but the file was not deleted.

Definition at line 1251 of file Base.h.

◆ RETURN_WARN_FILE_SYSTEM

#define RETURN_WARN_FILE_SYSTEM   ENCODE_WARNING (6)

The resulting buffer contains UEFI-compliant file system.

Definition at line 1274 of file Base.h.

◆ RETURN_WARN_RESET_REQUIRED

#define RETURN_WARN_RESET_REQUIRED   ENCODE_WARNING (7)

The operation will be processed across a system reset.

Definition at line 1279 of file Base.h.

◆ RETURN_WARN_STALE_DATA

#define RETURN_WARN_STALE_DATA   ENCODE_WARNING (5)

The data has not been updated within the timeframe set by local policy for this type of data.

Definition at line 1269 of file Base.h.

◆ RETURN_WARN_UNKNOWN_GLYPH

#define RETURN_WARN_UNKNOWN_GLYPH   ENCODE_WARNING (1)

The string contained one or more characters that the device could not render and were skipped.

Definition at line 1246 of file Base.h.

◆ RETURN_WARN_WRITE_FAILURE

#define RETURN_WARN_WRITE_FAILURE   ENCODE_WARNING (3)

The handle was closed, but the data to the file was not flushed properly.

Definition at line 1257 of file Base.h.

◆ RETURN_WRITE_PROTECTED

#define RETURN_WRITE_PROTECTED   ENCODE_ERROR (8)

The device can not be written to.

Definition at line 1109 of file Base.h.

◆ RETURNS_TWICE

#define RETURNS_TWICE

Tell the code optimizer that the function will return twice. This prevents wrong optimizations which can cause bugs. Tell the code optimizer that the function will return twice. This prevents wrong optimizations which can cause bugs.

Definition at line 177 of file Base.h.

◆ SIGNATURE_16

#define SIGNATURE_16 (   A,
 
)    ((A) | (B << 8))

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.

Parameters
AThe first ASCII character.
BThe second ASCII character.
Returns
A 16-bit value built from the two ASCII characters specified by A and B.

Definition at line 1293 of file Base.h.

◆ SIGNATURE_32

#define SIGNATURE_32 (   A,
  B,
  C,
 
)    (SIGNATURE_16 (A, B) | (SIGNATURE_16 (C, D) << 16))

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.

Parameters
AThe first ASCII character.
BThe second ASCII character.
CThe third ASCII character.
DThe fourth ASCII character.
Returns
A 32-bit value built from the two ASCII characters specified by A, B, C and D.

Definition at line 1310 of file Base.h.

◆ SIGNATURE_64

#define SIGNATURE_64 (   A,
  B,
  C,
  D,
  E,
  F,
  G,
 
)     (SIGNATURE_32 (A, B, C, D) | ((UINT64) (SIGNATURE_32 (E, F, G, H)) << 32))

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.

Parameters
AThe first ASCII character.
BThe second ASCII character.
CThe third ASCII character.
DThe fourth ASCII character.
EThe fifth ASCII character.
FThe sixth ASCII character.
GThe seventh ASCII character.
HThe eighth ASCII character.
Returns
A 64-bit value built from the two ASCII characters specified by A, B, C, D, E, F, G and H.

Definition at line 1331 of file Base.h.

◆ SIZE_128GB

#define SIZE_128GB   0x0000002000000000ULL

Definition at line 439 of file Base.h.

◆ SIZE_128KB

#define SIZE_128KB   0x00020000

Definition at line 419 of file Base.h.

◆ SIZE_128MB

#define SIZE_128MB   0x08000000

Definition at line 429 of file Base.h.

◆ SIZE_128PB

#define SIZE_128PB   0x0200000000000000ULL

Definition at line 459 of file Base.h.

◆ SIZE_128TB

#define SIZE_128TB   0x0000800000000000ULL

Definition at line 449 of file Base.h.

◆ SIZE_16GB

#define SIZE_16GB   0x0000000400000000ULL

Definition at line 436 of file Base.h.

◆ SIZE_16KB

#define SIZE_16KB   0x00004000

Definition at line 416 of file Base.h.

◆ SIZE_16MB

#define SIZE_16MB   0x01000000

Definition at line 426 of file Base.h.

◆ SIZE_16PB

#define SIZE_16PB   0x0040000000000000ULL

Definition at line 456 of file Base.h.

◆ SIZE_16TB

#define SIZE_16TB   0x0000100000000000ULL

Definition at line 446 of file Base.h.

◆ SIZE_1EB

#define SIZE_1EB   0x1000000000000000ULL

Definition at line 462 of file Base.h.

◆ SIZE_1GB

#define SIZE_1GB   0x40000000

Definition at line 432 of file Base.h.

◆ SIZE_1KB

#define SIZE_1KB   0x00000400

Definition at line 412 of file Base.h.

◆ SIZE_1MB

#define SIZE_1MB   0x00100000

Definition at line 422 of file Base.h.

◆ SIZE_1PB

#define SIZE_1PB   0x0004000000000000ULL

Definition at line 452 of file Base.h.

◆ SIZE_1TB

#define SIZE_1TB   0x0000010000000000ULL

Definition at line 442 of file Base.h.

◆ SIZE_256GB

#define SIZE_256GB   0x0000004000000000ULL

Definition at line 440 of file Base.h.

◆ SIZE_256KB

#define SIZE_256KB   0x00040000

Definition at line 420 of file Base.h.

◆ SIZE_256MB

#define SIZE_256MB   0x10000000

Definition at line 430 of file Base.h.

◆ SIZE_256PB

#define SIZE_256PB   0x0400000000000000ULL

Definition at line 460 of file Base.h.

◆ SIZE_256TB

#define SIZE_256TB   0x0001000000000000ULL

Definition at line 450 of file Base.h.

◆ SIZE_2EB

#define SIZE_2EB   0x2000000000000000ULL

Definition at line 463 of file Base.h.

◆ SIZE_2GB

#define SIZE_2GB   0x80000000

Definition at line 433 of file Base.h.

◆ SIZE_2KB

#define SIZE_2KB   0x00000800

Definition at line 413 of file Base.h.

◆ SIZE_2MB

#define SIZE_2MB   0x00200000

Definition at line 423 of file Base.h.

◆ SIZE_2PB

#define SIZE_2PB   0x0008000000000000ULL

Definition at line 453 of file Base.h.

◆ SIZE_2TB

#define SIZE_2TB   0x0000020000000000ULL

Definition at line 443 of file Base.h.

◆ SIZE_32GB

#define SIZE_32GB   0x0000000800000000ULL

Definition at line 437 of file Base.h.

◆ SIZE_32KB

#define SIZE_32KB   0x00008000

Definition at line 417 of file Base.h.

◆ SIZE_32MB

#define SIZE_32MB   0x02000000

Definition at line 427 of file Base.h.

◆ SIZE_32PB

#define SIZE_32PB   0x0080000000000000ULL

Definition at line 457 of file Base.h.

◆ SIZE_32TB

#define SIZE_32TB   0x0000200000000000ULL

Definition at line 447 of file Base.h.

◆ SIZE_4EB

#define SIZE_4EB   0x4000000000000000ULL

Definition at line 464 of file Base.h.

◆ SIZE_4GB

#define SIZE_4GB   0x0000000100000000ULL

Definition at line 434 of file Base.h.

◆ SIZE_4KB

#define SIZE_4KB   0x00001000

Definition at line 414 of file Base.h.

◆ SIZE_4MB

#define SIZE_4MB   0x00400000

Definition at line 424 of file Base.h.

◆ SIZE_4PB

#define SIZE_4PB   0x0010000000000000ULL

Definition at line 454 of file Base.h.

◆ SIZE_4TB

#define SIZE_4TB   0x0000040000000000ULL

Definition at line 444 of file Base.h.

◆ SIZE_512GB

#define SIZE_512GB   0x0000008000000000ULL

Definition at line 441 of file Base.h.

◆ SIZE_512KB

#define SIZE_512KB   0x00080000

Definition at line 421 of file Base.h.

◆ SIZE_512MB

#define SIZE_512MB   0x20000000

Definition at line 431 of file Base.h.

◆ SIZE_512PB

#define SIZE_512PB   0x0800000000000000ULL

Definition at line 461 of file Base.h.

◆ SIZE_512TB

#define SIZE_512TB   0x0002000000000000ULL

Definition at line 451 of file Base.h.

◆ SIZE_64GB

#define SIZE_64GB   0x0000001000000000ULL

Definition at line 438 of file Base.h.

◆ SIZE_64KB

#define SIZE_64KB   0x00010000

Definition at line 418 of file Base.h.

◆ SIZE_64MB

#define SIZE_64MB   0x04000000

Definition at line 428 of file Base.h.

◆ SIZE_64PB

#define SIZE_64PB   0x0100000000000000ULL

Definition at line 458 of file Base.h.

◆ SIZE_64TB

#define SIZE_64TB   0x0000400000000000ULL

Definition at line 448 of file Base.h.

◆ SIZE_8EB

#define SIZE_8EB   0x8000000000000000ULL

Definition at line 465 of file Base.h.

◆ SIZE_8GB

#define SIZE_8GB   0x0000000200000000ULL

Definition at line 435 of file Base.h.

◆ SIZE_8KB

#define SIZE_8KB   0x00002000

Definition at line 415 of file Base.h.

◆ SIZE_8MB

#define SIZE_8MB   0x00800000

Definition at line 425 of file Base.h.

◆ SIZE_8PB

#define SIZE_8PB   0x0020000000000000ULL

Definition at line 455 of file Base.h.

◆ SIZE_8TB

#define SIZE_8TB   0x0000080000000000ULL

Definition at line 445 of file Base.h.

◆ STATIC

#define STATIC   static

Datum is scoped to the current file or function.

Definition at line 264 of file Base.h.

◆ STATIC_ASSERT

STATIC_ASSERT   _Static_assert

Portable definition for compile time assertions. Equivalent to C11 static_assert macro from assert.h.

Parameters
ExpressionBoolean expression.
MessageRaised compiler diagnostic message when expression is false.

Definition at line 808 of file Base.h.

◆ TRUE

#define TRUE   ((BOOLEAN)(1==1))

Boolean true value. UEFI Specification defines this value to be 1, but this form is more portable.

Definition at line 301 of file Base.h.

◆ UNREACHABLE

#define UNREACHABLE ( )

Signal compilers and analyzers that this call is not reachable. It is up to the compiler to remove any code past that point.

Definition at line 77 of file Base.h.

◆ VA_ARG

#define VA_ARG (   Marker,
  TYPE 
)    (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE)) - _INT_SIZE_OF (TYPE)))

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.

Parameters
MarkerVA_LIST used to traverse the list of arguments.
TYPEThe type of argument to retrieve from the beginning of the variable argument list.
Returns
An argument of the type specified by TYPE.

Definition at line 679 of file Base.h.

◆ VA_COPY

#define VA_COPY (   Dest,
  Start 
)    ((void)((Dest) = (Start)))

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.

Parameters
DestVA_LIST used to traverse the list of arguments.
StartVA_LIST used to traverse the list of arguments.

Definition at line 704 of file Base.h.

◆ VA_END

#define VA_END (   Marker)    (Marker = (VA_LIST) 0)

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.

Parameters
MarkerVA_LIST used to traverse the list of arguments.

Definition at line 691 of file Base.h.

◆ VA_START

#define VA_START (   Marker,
  Parameter 
)    (Marker = (VA_LIST) ((UINTN) & (Parameter) + _INT_SIZE_OF (Parameter)))

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.

Parameters
MarkerThe VA_LIST used to traverse the list of arguments.
ParameterThe name of the parameter that immediately precedes the variable argument list.
Returns
A pointer to the beginning of a variable argument list.

Definition at line 661 of file Base.h.

◆ VOID

#define VOID   void

Undeclared type.

Definition at line 269 of file Base.h.

Typedef Documentation

◆ BASE_LIST

typedef UINTN* BASE_LIST

Pointer to the start of a variable argument list stored in a memory buffer. Same as UINT8 *.

Definition at line 711 of file Base.h.

◆ LIST_ENTRY

typedef struct _LIST_ENTRY LIST_ENTRY

LIST_ENTRY structure definition.

Definition at line 242 of file Base.h.

◆ PHYSICAL_ADDRESS

typedef UINT64 PHYSICAL_ADDRESS

Definition at line 237 of file Base.h.

◆ RETURN_STATUS

typedef UINTN RETURN_STATUS

Definition at line 1026 of file Base.h.

◆ VA_LIST

typedef CHAR8* VA_LIST

Variable used to traverse the list of arguments. This type can vary by implementation and could be an array or structure.

Definition at line 643 of file Base.h.

Enumeration Type Documentation

◆ __VERIFY_INT32_ENUM_SIZE

enum __VERIFY_INT32_ENUM_SIZE

Definition at line 860 of file Base.h.

◆ __VERIFY_UINT16_ENUM_SIZE

enum __VERIFY_UINT16_ENUM_SIZE

Definition at line 856 of file Base.h.

◆ __VERIFY_UINT8_ENUM_SIZE

enum __VERIFY_UINT8_ENUM_SIZE

Definition at line 852 of file Base.h.