+++ /dev/null
-/** @file\r
- Mde UEFI library API implemention.\r
- Print to StdErr or ConOut defined in EFI_SYSTEM_TABLE\r
-\r
- Copyright (c) 2007, Intel Corporation<BR>\r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-**/\r
-\r
-/** \r
- Internal function which prints a formatted Unicode string to the console output device \r
- specified by Console\r
-\r
- This function prints a formatted Unicode string to the console output device \r
- specified by Console and returns the number of Unicode characters that printed \r
- to it. If the length of the formatted Unicode string is greater than PcdUefiLibMaxPrintBufferSize, \r
- then only the first PcdUefiLibMaxPrintBufferSize characters are sent to Console.\r
-\r
- @param Format Null-terminated Unicode format string.\r
- @param Console The output console.\r
- @param Marker VA_LIST marker for the variable argument list.\r
- \r
- If Format is NULL, then ASSERT().\r
- If Format is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-**/\r
-\r
-STATIC\r
-UINTN\r
-InternalPrint (\r
- IN CONST CHAR16 *Format,\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *Console,\r
- IN VA_LIST Marker\r
- )\r
-{\r
- UINTN Return;\r
- CHAR16 *Buffer;\r
- UINTN BufferSize;\r
-\r
- ASSERT (Format != NULL);\r
- ASSERT (((UINTN) Format & 0x01) == 0);\r
-\r
- BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);\r
- \r
- Buffer = (CHAR16 *) AllocatePool(BufferSize);\r
- ASSERT (Buffer != NULL);\r
-\r
- Return = UnicodeVSPrint (Buffer, BufferSize, Format, Marker);\r
-\r
- if (Console != NULL) {\r
- //\r
- // To be extra safe make sure Console has been initialized\r
- //\r
- Console->OutputString (Console, Buffer);\r
- }\r
-\r
- FreePool (Buffer);\r
-\r
- return Return; \r
-}\r
-\r
-/** \r
- Prints a formatted Unicode string to the console output device specified by \r
- ConOut defined in the EFI_SYSTEM_TABLE.\r
-\r
- This function prints a formatted Unicode string to the console output device \r
- specified by ConOut in EFI_SYSTEM_TABLE and returns the number of Unicode \r
- characters that printed to ConOut. If the length of the formatted Unicode \r
- string is greater than PcdUefiLibMaxPrintBufferSize, then only the first \r
- PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.\r
-\r
- @param Format Null-terminated Unicode format string.\r
- @param ... VARARG list consumed to process Format.\r
- If Format is NULL, then ASSERT().\r
- If Format is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-Print (\r
- IN CONST CHAR16 *Format,\r
- ...\r
- )\r
-{\r
- VA_LIST Marker;\r
- UINTN Return;\r
-\r
- VA_START (Marker, Format);\r
-\r
- Return = InternalPrint (Format, gST->ConOut, Marker);\r
-\r
- VA_END (Marker);\r
-\r
- return Return;\r
-}\r
-\r
-/** \r
- Prints a formatted Unicode string to the console output device specified by \r
- StdErr defined in the EFI_SYSTEM_TABLE.\r
-\r
- This function prints a formatted Unicode string to the console output device \r
- specified by StdErr in EFI_SYSTEM_TABLE and returns the number of Unicode \r
- characters that printed to StdErr. If the length of the formatted Unicode \r
- string is greater than PcdUefiLibMaxPrintBufferSize, then only the first \r
- PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.\r
-\r
- @param Format Null-terminated Unicode format string.\r
- @param ... VARARG list consumed to process Format.\r
- If Format is NULL, then ASSERT().\r
- If Format is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-**/\r
-\r
-UINTN\r
-EFIAPI\r
-ErrorPrint (\r
- IN CONST CHAR16 *Format,\r
- ...\r
- )\r
-{\r
- VA_LIST Marker;\r
- UINTN Return;\r
-\r
- VA_START (Marker, Format);\r
-\r
- Return = InternalPrint( Format, gST->StdErr, Marker);\r
-\r
- VA_END (Marker);\r
-\r
- return Return;\r
-}\r
-\r
-\r
-/** \r
- Internal function which prints a formatted ASCII string to the console output device \r
- specified by Console\r
-\r
- This function prints a formatted ASCII string to the console output device \r
- specified by Console and returns the number of ASCII characters that printed \r
- to it. If the length of the formatted ASCII string is greater than PcdUefiLibMaxPrintBufferSize, \r
- then only the first PcdUefiLibMaxPrintBufferSize characters are sent to Console.\r
-\r
- @param Format Null-terminated ASCII format string.\r
- @param Console The output console.\r
- @param Marker VA_LIST marker for the variable argument list.\r
- \r
- If Format is NULL, then ASSERT().\r
- \r
-**/\r
-\r
-STATIC\r
-UINTN\r
-AsciiInternalPrint (\r
- IN CONST CHAR8 *Format,\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *Console,\r
- IN VA_LIST Marker\r
- )\r
-{\r
- UINTN Return;\r
- CHAR16 *Buffer;\r
- UINTN BufferSize;\r
-\r
- ASSERT (Format != NULL);\r
-\r
- BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);\r
- \r
- Buffer = (CHAR16 *) AllocatePool(BufferSize);\r
- ASSERT (Buffer != NULL);\r
-\r
- Return = UnicodeVSPrintAsciiFormat (Buffer, BufferSize, Format, Marker);\r
-\r
- if (Console != NULL) {\r
- //\r
- // To be extra safe make sure Console has been initialized\r
- //\r
- Console->OutputString (Console, Buffer);\r
- }\r
-\r
- FreePool (Buffer);\r
-\r
- return Return; \r
-}\r
-\r
-/** \r
- Prints a formatted ASCII string to the console output device specified by \r
- ConOut defined in the EFI_SYSTEM_TABLE.\r
-\r
- This function prints a formatted ASCII string to the console output device \r
- specified by ConOut in EFI_SYSTEM_TABLE and returns the number of ASCII \r
- characters that printed to ConOut. If the length of the formatted ASCII \r
- string is greater than PcdUefiLibMaxPrintBufferSize, then only the first \r
- PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.\r
-\r
- @param Format Null-terminated ASCII format string.\r
- @param ... VARARG list consumed to process Format.\r
- If Format is NULL, then ASSERT().\r
- If Format is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-AsciiPrint (\r
- IN CONST CHAR8 *Format,\r
- ...\r
- )\r
-{\r
- VA_LIST Marker;\r
- UINTN Return;\r
-\r
- VA_START (Marker, Format);\r
-\r
- Return = AsciiInternalPrint( Format, gST->ConOut, Marker);\r
-\r
- VA_END (Marker);\r
-\r
- return Return;\r
-}\r
-\r
-/** \r
- Prints a formatted ASCII string to the console output device specified by \r
- StdErr defined in the EFI_SYSTEM_TABLE.\r
-\r
- This function prints a formatted ASCII string to the console output device \r
- specified by StdErr in EFI_SYSTEM_TABLE and returns the number of ASCII \r
- characters that printed to StdErr. If the length of the formatted ASCII \r
- string is greater than PcdUefiLibMaxPrintBufferSize, then only the first \r
- PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.\r
-\r
- @param Format Null-terminated ASCII format string.\r
- @param ... VARARG list consumed to process Format.\r
- If Format is NULL, then ASSERT().\r
- If Format is not aligned on a 16-bit boundary, then ASSERT().\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-AsciiErrorPrint (\r
- IN CONST CHAR8 *Format,\r
- ...\r
- )\r
-{\r
- VA_LIST Marker;\r
- UINTN Return;\r
-\r
- VA_START (Marker, Format);\r
-\r
- Return = AsciiInternalPrint( Format, gST->StdErr, Marker);\r
-\r
- VA_END (Marker);\r
-\r
- return Return;\r
-}\r
-\r