TianoCore EDK2 master
Loading...
Searching...
No Matches
PrintLib.c File Reference
#include <Uefi.h>
#include <Base.h>
#include <Protocol/Print2.h>
#include <Library/PrintLib.h>
#include <Library/BaseLib.h>
#include <Library/DebugLib.h>
#include <Library/PcdLib.h>

Go to the source code of this file.

Data Structures

struct  TIME
 

Macros

#define ASSERT_UNICODE_BUFFER(Buffer)   ASSERT ((((UINTN) (Buffer)) & 0x01) == 0)
 
#define RSIZE_MAX   (PcdGet32 (PcdMaximumUnicodeStringLength))
 
#define ASCII_RSIZE_MAX   (PcdGet32 (PcdMaximumAsciiStringLength))
 
#define SAFE_PRINT_CONSTRAINT_CHECK(Expression, RetVal)
 
#define PREFIX_SIGN   BIT1
 
#define PREFIX_BLANK   BIT2
 
#define LONG_TYPE   BIT4
 
#define OUTPUT_UNICODE   BIT6
 
#define FORMAT_UNICODE   BIT8
 
#define PAD_TO_WIDTH   BIT9
 
#define ARGUMENT_UNICODE   BIT10
 
#define PRECISION   BIT11
 
#define ARGUMENT_REVERSED   BIT12
 
#define COUNT_ONLY_NO_PRINT   BIT13
 
#define UNSIGNED_TYPE   BIT14
 
#define WARNING_STATUS_NUMBER   5
 
#define ERROR_STATUS_NUMBER   33
 

Functions

EFI_STATUS EFIAPI PrintLibConstructor (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
 
BOOLEAN DxePrintLibPrint2ProtocolVaListToBaseList (IN BOOLEAN AsciiFormat, IN CONST CHAR8 *Format, IN VA_LIST VaListMarker, OUT BASE_LIST BaseListMarker, IN UINTN Size)
 
UINTN EFIAPI UnicodeVSPrint (OUT CHAR16 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR16 *FormatString, IN VA_LIST Marker)
 
UINTN EFIAPI UnicodeBSPrint (OUT CHAR16 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR16 *FormatString, IN BASE_LIST Marker)
 
UINTN EFIAPI UnicodeSPrint (OUT CHAR16 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR16 *FormatString,...)
 
UINTN EFIAPI UnicodeVSPrintAsciiFormat (OUT CHAR16 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR8 *FormatString, IN VA_LIST Marker)
 
UINTN EFIAPI UnicodeBSPrintAsciiFormat (OUT CHAR16 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR8 *FormatString, IN BASE_LIST Marker)
 
UINTN EFIAPI UnicodeSPrintAsciiFormat (OUT CHAR16 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR8 *FormatString,...)
 
RETURN_STATUS EFIAPI UnicodeValueToStringS (IN OUT CHAR16 *Buffer, IN UINTN BufferSize, IN UINTN Flags, IN INT64 Value, IN UINTN Width)
 
UINTN EFIAPI AsciiVSPrint (OUT CHAR8 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR8 *FormatString, IN VA_LIST Marker)
 
UINTN EFIAPI AsciiBSPrint (OUT CHAR8 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR8 *FormatString, IN BASE_LIST Marker)
 
UINTN EFIAPI AsciiSPrint (OUT CHAR8 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR8 *FormatString,...)
 
UINTN EFIAPI AsciiVSPrintUnicodeFormat (OUT CHAR8 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR16 *FormatString, IN VA_LIST Marker)
 
UINTN EFIAPI AsciiBSPrintUnicodeFormat (OUT CHAR8 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR16 *FormatString, IN BASE_LIST Marker)
 
UINTN EFIAPI AsciiSPrintUnicodeFormat (OUT CHAR8 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR16 *FormatString,...)
 
RETURN_STATUS EFIAPI AsciiValueToStringS (IN OUT CHAR8 *Buffer, IN UINTN BufferSize, IN UINTN Flags, IN INT64 Value, IN UINTN Width)
 
CHAR8 * InternalPrintLibValueToString (IN OUT CHAR8 *Buffer, IN INT64 Value, IN UINTN Radix)
 
UINTN InternalPrintLibSPrintMarker (OUT CHAR8 *Buffer, IN UINTN BufferSize, IN UINTN Flags, IN CONST CHAR8 *Format, IN VA_LIST VaListMarker OPTIONAL, IN BASE_LIST BaseListMarker OPTIONAL)
 
UINTN EFIAPI InternalPrintLibSPrint (OUT CHAR8 *StartOfBuffer, IN UINTN BufferSize, IN UINTN Flags, IN CONST CHAR8 *FormatString,...)
 
CHAR8 * InternalPrintLibFillBuffer (OUT CHAR8 *Buffer, IN CHAR8 *EndBuffer, IN INTN Length, IN UINTN Character, IN INTN Increment)
 
UINTN EFIAPI SPrintLength (IN CONST CHAR16 *FormatString, IN VA_LIST Marker)
 
UINTN EFIAPI SPrintLengthAsciiFormat (IN CONST CHAR8 *FormatString, IN VA_LIST Marker)
 

Variables

EFI_PRINT2S_PROTOCOLmPrint2SProtocol = NULL
 
GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 mHexStr [] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }
 
GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *CONST mStatusString []
 

Detailed Description

Instance of Print Library based on gEfiPrint2SProtocolGuid.

Implement the print library instance by wrap the interface provided in the Print2S protocol. This protocol is defined as the internal protocol related to this implementation, not in the public spec. So, this library instance is only for this code base.

Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file PrintLib.c.

Macro Definition Documentation

◆ ARGUMENT_REVERSED

#define ARGUMENT_REVERSED   BIT12

Definition at line 1074 of file PrintLib.c.

◆ ARGUMENT_UNICODE

#define ARGUMENT_UNICODE   BIT10

Definition at line 1072 of file PrintLib.c.

◆ ASCII_RSIZE_MAX

#define ASCII_RSIZE_MAX   (PcdGet32 (PcdMaximumAsciiStringLength))

Definition at line 30 of file PrintLib.c.

◆ ASSERT_UNICODE_BUFFER

#define ASSERT_UNICODE_BUFFER (   Buffer)    ASSERT ((((UINTN) (Buffer)) & 0x01) == 0)

Definition at line 24 of file PrintLib.c.

◆ COUNT_ONLY_NO_PRINT

#define COUNT_ONLY_NO_PRINT   BIT13

Definition at line 1075 of file PrintLib.c.

◆ ERROR_STATUS_NUMBER

#define ERROR_STATUS_NUMBER   33

Definition at line 1211 of file PrintLib.c.

◆ FORMAT_UNICODE

#define FORMAT_UNICODE   BIT8

Definition at line 1070 of file PrintLib.c.

◆ LONG_TYPE

#define LONG_TYPE   BIT4

Definition at line 1068 of file PrintLib.c.

◆ OUTPUT_UNICODE

#define OUTPUT_UNICODE   BIT6

Definition at line 1069 of file PrintLib.c.

◆ PAD_TO_WIDTH

#define PAD_TO_WIDTH   BIT9

Definition at line 1071 of file PrintLib.c.

◆ PRECISION

#define PRECISION   BIT11

Definition at line 1073 of file PrintLib.c.

◆ PREFIX_BLANK

#define PREFIX_BLANK   BIT2

Definition at line 1067 of file PrintLib.c.

◆ PREFIX_SIGN

#define PREFIX_SIGN   BIT1

Definition at line 1066 of file PrintLib.c.

◆ RSIZE_MAX

#define RSIZE_MAX   (PcdGet32 (PcdMaximumUnicodeStringLength))

Definition at line 29 of file PrintLib.c.

◆ SAFE_PRINT_CONSTRAINT_CHECK

#define SAFE_PRINT_CONSTRAINT_CHECK (   Expression,
  RetVal 
)
Value:
do { \
ASSERT (Expression); \
if (!(Expression)) { \
return RetVal; \
} \
} while (FALSE)
#define FALSE
Definition: Base.h:307

Definition at line 32 of file PrintLib.c.

◆ UNSIGNED_TYPE

#define UNSIGNED_TYPE   BIT14

Definition at line 1076 of file PrintLib.c.

◆ WARNING_STATUS_NUMBER

#define WARNING_STATUS_NUMBER   5

Definition at line 1210 of file PrintLib.c.

Function Documentation

◆ AsciiBSPrint()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated ASCII string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated ASCII format string.
MarkerBASE_LIST marker for the variable argument list.
Returns
The number of ASCII characters in the produced output buffer not including the Null-terminator.

Definition at line 763 of file PrintLib.c.

◆ AsciiBSPrintUnicodeFormat()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated ASCII string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated Unicode format string.
MarkerBASE_LIST marker for the variable argument list.
Returns
The number of ASCII characters in the produced output buffer not including the Null-terminator.

Definition at line 935 of file PrintLib.c.

◆ AsciiSPrint()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated ASCII string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated ASCII format string.
...Variable argument list whose contents are accessed based on the format string specified by FormatString.
Returns
The number of ASCII characters in the produced output buffer not including the Null-terminator.

Definition at line 813 of file PrintLib.c.

◆ AsciiSPrintUnicodeFormat()

UINTN EFIAPI AsciiSPrintUnicodeFormat ( OUT CHAR8 *  StartOfBuffer,
IN UINTN  BufferSize,
IN CONST CHAR16 *  FormatString,
  ... 
)

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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated ASCII string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated Unicode format string.
...Variable argument list whose contents are accessed based on the format string specified by FormatString.
Returns
The number of ASCII characters in the produced output buffer not including the Null-terminator.

Definition at line 988 of file PrintLib.c.

◆ AsciiValueToStringS()

RETURN_STATUS EFIAPI AsciiValueToStringS ( IN OUT CHAR8 *  Buffer,
IN UINTN  BufferSize,
IN UINTN  Flags,
IN INT64  Value,
IN UINTN  Width 
)

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 an error would be returned, then the function will ASSERT().

Parameters
BufferThe pointer to the output buffer for the produced Null-terminated Ascii string.
BufferSizeThe size of Buffer in bytes, including the Null-terminator.
FlagsThe bitmask of flags that specify left justification, zero pad, and commas.
ValueThe 64-bit signed value to convert to a string.
WidthThe maximum number of Ascii characters to place in Buffer, not including the Null-terminator.
Return values
RETURN_SUCCESSThe decimal value is converted.
RETURN_BUFFER_TOO_SMALLIf BufferSize cannot hold the converted value.
RETURN_INVALID_PARAMETERIf 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.

Definition at line 1055 of file PrintLib.c.

◆ AsciiVSPrint()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated ASCII string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated ASCII format string.
MarkerVA_LIST marker for the variable argument list.
Returns
The number of ASCII characters in the produced output buffer not including the Null-terminator.

Definition at line 702 of file PrintLib.c.

◆ AsciiVSPrintUnicodeFormat()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated ASCII string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated Unicode format string.
MarkerVA_LIST marker for the variable argument list.
Returns
The number of ASCII characters in the produced output buffer not including the Null-terminator.

Definition at line 870 of file PrintLib.c.

◆ DxePrintLibPrint2ProtocolVaListToBaseList()

BOOLEAN DxePrintLibPrint2ProtocolVaListToBaseList ( IN BOOLEAN  AsciiFormat,
IN CONST CHAR8 *  Format,
IN VA_LIST  VaListMarker,
OUT BASE_LIST  BaseListMarker,
IN UINTN  Size 
)

Worker function that converts a VA_LIST to a BASE_LIST based on a Null-terminated format string.

Parameters
AsciiFormatTRUE if Format is an ASCII string. FALSE if Format is a Unicode string.
FormatNull-terminated format string.
VaListMarkerVA_LIST style variable argument list consumed by processing Format.
BaseListMarkerBASE_LIST style variable argument list consumed by processing Format.
SizeThe size, in bytes, of the BaseListMarker buffer.
Returns
TRUE The VA_LIST has been converted to BASE_LIST.
FALSE The VA_LIST has not been converted to BASE_LIST.

Definition at line 89 of file PrintLib.c.

◆ InternalPrintLibFillBuffer()

CHAR8 * InternalPrintLibFillBuffer ( OUT CHAR8 *  Buffer,
IN CHAR8 *  EndBuffer,
IN INTN  Length,
IN UINTN  Character,
IN INTN  Increment 
)

Internal function that places the character into the Buffer.

Internal function that places ASCII or Unicode character into the Buffer.

Parameters
BufferThe buffer to place the Unicode or ASCII string.
EndBufferThe end of the input Buffer. No characters will be placed after that.
LengthThe count of character to be placed into Buffer. (Negative value indicates no buffer fill.)
CharacterThe character to be placed into Buffer.
IncrementThe character increment in Buffer.
Returns
Buffer.

Definition at line 1272 of file PrintLib.c.

◆ InternalPrintLibSPrint()

UINTN EFIAPI InternalPrintLibSPrint ( OUT CHAR8 *  StartOfBuffer,
IN UINTN  BufferSize,
IN UINTN  Flags,
IN CONST CHAR8 *  FormatString,
  ... 
)

Worker function that produces a Null-terminated string in an output buffer based on a Null-terminated format string and variable argument list.

VSPrint function to process format and place the results in Buffer. Since a VA_LIST is used this routine allows the nesting of Vararg routines. Thus this is the main print working routine

Parameters
StartOfBufferThe character buffer to print the results of the parsing of Format into.
BufferSizeThe maximum number of characters to put into buffer. Zero means no limit.
FlagsInitial flags value. Can only have FORMAT_UNICODE and OUTPUT_UNICODE set
FormatStringA Null-terminated format string.
...The variable argument list.
Returns
The number of characters printed.

Definition at line 1193 of file PrintLib.c.

◆ InternalPrintLibSPrintMarker()

UINTN InternalPrintLibSPrintMarker ( OUT CHAR8 *  Buffer,
IN UINTN  BufferSize,
IN UINTN  Flags,
IN CONST CHAR8 *  Format,
IN VA_LIST VaListMarker  OPTIONAL,
IN BASE_LIST BaseListMarker  OPTIONAL 
)

Worker function that produces a Null-terminated string in an output buffer based on a Null-terminated format string and a VA_LIST argument list.

VSPrint function to process format and place the results in Buffer. Since a VA_LIST is used this routine allows the nesting of Vararg routines. Thus this is the main print working routine.

If COUNT_ONLY_NO_PRINT is set in Flags, Buffer will not be modified at all.

Parameters
[out]BufferThe character buffer to print the results of the parsing of Format into.
[in]BufferSizeThe maximum number of characters to put into buffer.
[in]FlagsInitial flags value. Can only have FORMAT_UNICODE, OUTPUT_UNICODE, and COUNT_ONLY_NO_PRINT set.
[in]FormatA Null-terminated format string.
[in]VaListMarkerVA_LIST style variable argument list consumed by processing Format.
[in]BaseListMarkerBASE_LIST style variable argument list consumed by processing Format.
Returns
The number of characters printed not including the Null-terminator. If COUNT_ONLY_NO_PRINT was set returns the same, but without any modification to Buffer.

Definition at line 1323 of file PrintLib.c.

◆ InternalPrintLibValueToString()

CHAR8 * InternalPrintLibValueToString ( IN OUT CHAR8 *  Buffer,
IN INT64  Value,
IN UINTN  Radix 
)

Internal function that convert a number to a string in Buffer.

Print worker function that converts a decimal or hexadecimal number to an ASCII string in Buffer.

Parameters
BufferLocation to place the ASCII string of Value.
ValueThe value to convert to a Decimal or Hexadecimal string in Buffer.
RadixRadix of the value
Returns
A pointer to the end of buffer filled with ASCII string.

Definition at line 1110 of file PrintLib.c.

◆ PrintLibConstructor()

EFI_STATUS EFIAPI PrintLibConstructor ( IN EFI_HANDLE  ImageHandle,
IN EFI_SYSTEM_TABLE SystemTable 
)

The constructor function caches the pointer to Print2S protocol.

The constructor function locates Print2S protocol from protocol database. It will ASSERT() if that operation fails and it will always return EFI_SUCCESS.

Parameters
ImageHandleThe firmware allocated handle for the EFI image.
SystemTableA pointer to the EFI System Table.
Return values
EFI_SUCCESSThe constructor always returns EFI_SUCCESS.

Definition at line 56 of file PrintLib.c.

◆ SPrintLength()

UINTN EFIAPI SPrintLength ( IN CONST CHAR16 *  FormatString,
IN VA_LIST  Marker 
)

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.

Parameters
[in]FormatStringA Null-terminated Unicode format string.
[in]MarkerVA_LIST marker for the variable argument list.
Returns
The number of characters that would be produced, not including the Null-terminator.

Definition at line 2091 of file PrintLib.c.

◆ SPrintLengthAsciiFormat()

UINTN EFIAPI SPrintLengthAsciiFormat ( IN CONST CHAR8 *  FormatString,
IN VA_LIST  Marker 
)

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.

Parameters
[in]FormatStringA Null-terminated ASCII format string.
[in]MarkerVA_LIST marker for the variable argument list.
Returns
The number of characters that would be produced, not including the Null-terminator.

Definition at line 2117 of file PrintLib.c.

◆ UnicodeBSPrint()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated Unicode string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated Unicode format string.
MarkerBASE_LIST marker for the variable argument list.
Returns
The number of Unicode characters in the produced output buffer not including the Null-terminator.

Definition at line 354 of file PrintLib.c.

◆ UnicodeBSPrintAsciiFormat()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated Unicode string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated ASCII format string.
MarkerBASE_LIST marker for the variable argument list.
Returns
The number of Unicode characters in the produced output buffer not including the Null-terminator.

Definition at line 530 of file PrintLib.c.

◆ UnicodeSPrint()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated Unicode string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated Unicode format string.
...Variable argument list whose contents are accessed based on the format string specified by FormatString.
Returns
The number of Unicode characters in the produced output buffer not including the Null-terminator.

Definition at line 408 of file PrintLib.c.

◆ UnicodeSPrintAsciiFormat()

UINTN EFIAPI UnicodeSPrintAsciiFormat ( OUT CHAR16 *  StartOfBuffer,
IN UINTN  BufferSize,
IN CONST CHAR8 *  FormatString,
  ... 
)

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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated Unicode string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated ASCII format string.
...Variable argument list whose contents are accessed based on the format string specified by FormatString.
Returns
The number of Unicode characters in the produced output buffer not including the Null-terminator.

Definition at line 583 of file PrintLib.c.

◆ UnicodeValueToStringS()

RETURN_STATUS EFIAPI UnicodeValueToStringS ( IN OUT CHAR16 *  Buffer,
IN UINTN  BufferSize,
IN UINTN  Flags,
IN INT64  Value,
IN UINTN  Width 
)

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().

Parameters
BufferThe pointer to the output buffer for the produced Null-terminated Unicode string.
BufferSizeThe size of Buffer in bytes, including the Null-terminator.
FlagsThe bitmask of flags that specify left justification, zero pad, and commas.
ValueThe 64-bit signed value to convert to a string.
WidthThe maximum number of Unicode characters to place in Buffer, not including the Null-terminator.
Return values
RETURN_SUCCESSThe decimal value is converted.
RETURN_BUFFER_TOO_SMALLIf BufferSize cannot hold the converted value.
RETURN_INVALID_PARAMETERIf 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.

Definition at line 652 of file PrintLib.c.

◆ UnicodeVSPrint()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated Unicode string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated Unicode format string.
MarkerVA_LIST marker for the variable argument list.
Returns
The number of Unicode characters in the produced output buffer not including the Null-terminator.

Definition at line 287 of file PrintLib.c.

◆ UnicodeVSPrintAsciiFormat()

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 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.

Parameters
StartOfBufferA pointer to the output buffer for the produced Null-terminated Unicode string.
BufferSizeThe size, in bytes, of the output buffer specified by StartOfBuffer.
FormatStringA Null-terminated ASCII format string.
MarkerVA_LIST marker for the variable argument list.
Returns
The number of Unicode characters in the produced output buffer not including the Null-terminator.

Definition at line 465 of file PrintLib.c.

Variable Documentation

◆ mHexStr

GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 mHexStr[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }

Definition at line 1095 of file PrintLib.c.

◆ mPrint2SProtocol

EFI_PRINT2S_PROTOCOL* mPrint2SProtocol = NULL

Definition at line 40 of file PrintLib.c.

◆ mStatusString

GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8* CONST mStatusString[]

Definition at line 1213 of file PrintLib.c.