|
@@ -2,7 +2,7 @@
|
|
|
Base Debug library instance for QEMU debug port.
|
|
|
It uses PrintLib to send debug messages to a fixed I/O port.
|
|
|
|
|
|
- Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
|
|
|
+ Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
|
|
|
Copyright (c) 2012, Red Hat, Inc.<BR>
|
|
|
This program and the accompanying materials
|
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
@@ -29,6 +29,12 @@
|
|
|
//
|
|
|
#define MAX_DEBUG_MESSAGE_LENGTH 0x100
|
|
|
|
|
|
+//
|
|
|
+// VA_LIST can not initialize to NULL for all compiler, so we use this to
|
|
|
+// indicate a null VA_LIST
|
|
|
+//
|
|
|
+VA_LIST mVaListNull;
|
|
|
+
|
|
|
/**
|
|
|
Prints a debug message to the debug output device if the specified error level is enabled.
|
|
|
|
|
@@ -51,9 +57,41 @@ DebugPrint (
|
|
|
IN CONST CHAR8 *Format,
|
|
|
...
|
|
|
)
|
|
|
+{
|
|
|
+ VA_LIST Marker;
|
|
|
+
|
|
|
+ VA_START (Marker, Format);
|
|
|
+ DebugVPrint (ErrorLevel, Format, Marker);
|
|
|
+ VA_END (Marker);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ Prints a debug message to the debug output device if the specified
|
|
|
+ error level is enabled base on Null-terminated format string and a
|
|
|
+ VA_LIST argument list or a BASE_LIST argument list.
|
|
|
+
|
|
|
+ If any bit in ErrorLevel is also set in DebugPrintErrorLevelLib function
|
|
|
+ GetDebugPrintErrorLevel (), then print the message specified by Format and
|
|
|
+ the associated variable argument list to the debug output device.
|
|
|
+
|
|
|
+ If Format is NULL, then ASSERT().
|
|
|
+
|
|
|
+ @param ErrorLevel The error level of the debug message.
|
|
|
+ @param Format Format string for the debug message to print.
|
|
|
+ @param VaListMarker VA_LIST marker for the variable argument list.
|
|
|
+ @param BaseListMarker BASE_LIST marker for the variable argument list.
|
|
|
+
|
|
|
+**/
|
|
|
+VOID
|
|
|
+DebugPrintMarker (
|
|
|
+ IN UINTN ErrorLevel,
|
|
|
+ IN CONST CHAR8 *Format,
|
|
|
+ IN VA_LIST VaListMarker,
|
|
|
+ IN BASE_LIST BaseListMarker
|
|
|
+ )
|
|
|
{
|
|
|
CHAR8 Buffer[MAX_DEBUG_MESSAGE_LENGTH];
|
|
|
- VA_LIST Marker;
|
|
|
UINTN Length;
|
|
|
|
|
|
//
|
|
@@ -72,9 +110,11 @@ DebugPrint (
|
|
|
//
|
|
|
// Convert the DEBUG() message to an ASCII String
|
|
|
//
|
|
|
- VA_START (Marker, Format);
|
|
|
- Length = AsciiVSPrint (Buffer, sizeof (Buffer), Format, Marker);
|
|
|
- VA_END (Marker);
|
|
|
+ if (BaseListMarker == NULL) {
|
|
|
+ Length = AsciiVSPrint (Buffer, sizeof (Buffer), Format, VaListMarker);
|
|
|
+ } else {
|
|
|
+ Length = AsciiBSPrint (Buffer, sizeof (Buffer), Format, BaseListMarker);
|
|
|
+ }
|
|
|
|
|
|
//
|
|
|
// Send the print string to the debug I/O port
|
|
@@ -83,6 +123,62 @@ DebugPrint (
|
|
|
}
|
|
|
|
|
|
|
|
|
+/**
|
|
|
+ Prints a debug message to the debug output device if the specified
|
|
|
+ error level is enabled.
|
|
|
+
|
|
|
+ If any bit in ErrorLevel is also set in DebugPrintErrorLevelLib function
|
|
|
+ GetDebugPrintErrorLevel (), then print the message specified by Format and
|
|
|
+ the associated variable argument list to the debug output device.
|
|
|
+
|
|
|
+ If Format is NULL, then ASSERT().
|
|
|
+
|
|
|
+ @param ErrorLevel The error level of the debug message.
|
|
|
+ @param Format Format string for the debug message to print.
|
|
|
+ @param VaListMarker VA_LIST marker for the variable argument list.
|
|
|
+
|
|
|
+**/
|
|
|
+VOID
|
|
|
+EFIAPI
|
|
|
+DebugVPrint (
|
|
|
+ IN UINTN ErrorLevel,
|
|
|
+ IN CONST CHAR8 *Format,
|
|
|
+ IN VA_LIST VaListMarker
|
|
|
+ )
|
|
|
+{
|
|
|
+ DebugPrintMarker (ErrorLevel, Format, VaListMarker, NULL);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ Prints a debug message to the debug output device if the specified
|
|
|
+ error level is enabled.
|
|
|
+ This function use BASE_LIST which would provide a more compatible
|
|
|
+ service than VA_LIST.
|
|
|
+
|
|
|
+ If any bit in ErrorLevel is also set in DebugPrintErrorLevelLib function
|
|
|
+ GetDebugPrintErrorLevel (), then print the message specified by Format and
|
|
|
+ the associated variable argument list to the debug output device.
|
|
|
+
|
|
|
+ If Format is NULL, then ASSERT().
|
|
|
+
|
|
|
+ @param ErrorLevel The error level of the debug message.
|
|
|
+ @param Format Format string for the debug message to print.
|
|
|
+ @param BaseListMarker BASE_LIST marker for the variable argument list.
|
|
|
+
|
|
|
+**/
|
|
|
+VOID
|
|
|
+EFIAPI
|
|
|
+DebugBPrint (
|
|
|
+ IN UINTN ErrorLevel,
|
|
|
+ IN CONST CHAR8 *Format,
|
|
|
+ IN BASE_LIST BaseListMarker
|
|
|
+ )
|
|
|
+{
|
|
|
+ DebugPrintMarker (ErrorLevel, Format, mVaListNull, BaseListMarker);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
Prints an assert message containing a filename, line number, and description.
|
|
|
This may be followed by a breakpoint or a dead loop.
|