of size reduction when compiler optimization is disabled. If MDEPKG_NDEBUG is\r
defined, then debug and assert related macros wrapped by it are the NULL implementations.\r
\r
-Copyright (c) 2006 - 2010, 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
+Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution. \r
+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
#define DEBUG_FS 0x00000008 // EFI File system\r
#define DEBUG_POOL 0x00000010 // Alloc & Free's\r
#define DEBUG_PAGE 0x00000020 // Alloc & Free's\r
-#define DEBUG_INFO 0x00000040 // Verbose\r
-#define DEBUG_DISPATCH 0x00000080 // PEI/DXE Dispatchers\r
+#define DEBUG_INFO 0x00000040 // Informational debug messages\r
+#define DEBUG_DISPATCH 0x00000080 // PEI/DXE/SMM Dispatchers\r
#define DEBUG_VARIABLE 0x00000100 // Variable\r
#define DEBUG_BM 0x00000400 // Boot Manager\r
#define DEBUG_BLKIO 0x00001000 // BlkIo Driver\r
#define DEBUG_UNDI 0x00010000 // UNDI Driver\r
#define DEBUG_LOADFILE 0x00020000 // UNDI Driver\r
#define DEBUG_EVENT 0x00080000 // Event messages\r
+#define DEBUG_GCD 0x00100000 // Global Coherency Database changes\r
+#define DEBUG_CACHE 0x00200000 // Memory range cachability changes\r
+#define DEBUG_VERBOSE 0x00400000 // Detailed debug messages that may significantly impact boot performance\r
#define DEBUG_ERROR 0x80000000 // Error\r
\r
//\r
#define EFI_D_UNDI DEBUG_UNDI\r
#define EFI_D_LOADFILE DEBUG_LOADFILE\r
#define EFI_D_EVENT DEBUG_EVENT\r
+#define EFI_D_VERBOSE DEBUG_VERBOSE\r
#define EFI_D_ERROR DEBUG_ERROR\r
\r
/**\r
Prints a debug message to the debug output device if the specified error level is enabled.\r
\r
- If any bit in ErrorLevel is also set in PcdDebugPrintErrorLevel, then print \r
- the message specified by Format and the associated variable argument list to \r
- the debug output device.\r
+ If any bit in ErrorLevel is also set in DebugPrintErrorLevelLib function \r
+ GetDebugPrintErrorLevel (), then print the message specified by Format and the \r
+ associated variable argument list to the debug output device.\r
\r
If Format is NULL, then ASSERT().\r
\r
@param ErrorLevel The error level of the debug message.\r
- @param Format Format string for the debug message to print.\r
- @param ... Variable argument list whose contents are accessed \r
+ @param Format The format string for the debug message to print.\r
+ @param ... The variable argument list whose contents are accessed \r
based on the format string specified by Format.\r
\r
**/\r
If FileName is NULL, then a <FileName> string of "(NULL) Filename" is printed.\r
If Description is NULL, then a <Description> string of "(NULL) Description" is printed.\r
\r
- @param FileName Pointer to the name of the source file that generated the assert condition.\r
+ @param FileName The pointer to the name of the source file that generated the assert condition.\r
@param LineNumber The line number in the source file that generated the assert condition\r
- @param Description Pointer to the description of the assert condition.\r
+ @param Description The pointer to the description of the assert condition.\r
\r
**/\r
VOID\r
If Buffer is NULL, then ASSERT().\r
If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). \r
\r
- @param Buffer Pointer to the target buffer to be filled with PcdDebugClearMemoryValue.\r
- @param Length Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
+ @param Buffer The pointer to the target buffer to be filled with PcdDebugClearMemoryValue.\r
+ @param Length The number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
\r
- @return Buffer Pointer to the target buffer filled with PcdDebugClearMemoryValue.\r
+ @return Buffer The pointer to the target buffer filled with PcdDebugClearMemoryValue.\r
\r
**/\r
VOID *\r
Returns TRUE if ASSERT() macros are enabled.\r
\r
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit of \r
- PcdDebugProperyMask is set. Otherwise FALSE is returned.\r
+ PcdDebugProperyMask is set. Otherwise, FALSE is returned.\r
\r
@retval TRUE The DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit of PcdDebugProperyMask is set.\r
@retval FALSE The DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit of PcdDebugProperyMask is clear.\r
Returns TRUE if DEBUG() macros are enabled.\r
\r
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_PRINT_ENABLED bit of \r
- PcdDebugProperyMask is set. Otherwise FALSE is returned.\r
+ PcdDebugProperyMask is set. Otherwise, FALSE is returned.\r
\r
@retval TRUE The DEBUG_PROPERTY_DEBUG_PRINT_ENABLED bit of PcdDebugProperyMask is set.\r
@retval FALSE The DEBUG_PROPERTY_DEBUG_PRINT_ENABLED bit of PcdDebugProperyMask is clear.\r
Returns TRUE if DEBUG_CODE() macros are enabled.\r
\r
This function returns TRUE if the DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of \r
- PcdDebugProperyMask is set. Otherwise FALSE is returned.\r
+ PcdDebugProperyMask is set. Otherwise, FALSE is returned.\r
\r
@retval TRUE The DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is set.\r
@retval FALSE The DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is clear.\r
Returns TRUE if DEBUG_CLEAR_MEMORY() macro is enabled.\r
\r
This function returns TRUE if the DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED bit of \r
- PcdDebugProperyMask is set. Otherwise FALSE is returned.\r
+ PcdDebugProperyMask is set. Otherwise, FALSE is returned.\r
\r
@retval TRUE The DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED bit of PcdDebugProperyMask is set.\r
@retval FALSE The DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED bit of PcdDebugProperyMask is clear.\r
VOID\r
);\r
\r
+/**\r
+ Returns TRUE if any one of the bit is set both in ErrorLevel and PcdFixedDebugPrintErrorLevel.\r
+\r
+ This function compares the bit mask of ErrorLevel and PcdFixedDebugPrintErrorLevel.\r
+\r
+ @retval TRUE Current ErrorLevel is supported.\r
+ @retval FALSE Current ErrorLevel is not supported.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+DebugPrintLevelEnabled (\r
+ IN CONST UINTN ErrorLevel\r
+ );\r
\r
/** \r
Internal worker macro that calls DebugAssert().\r
\r
This macro calls DebugPrint() passing in the debug error level, a format \r
string, and a variable argument list.\r
+ __VA_ARGS__ is not supported by EBC compiler, Microsoft Visual Studio .NET 2003\r
+ and Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830.\r
\r
@param Expression Expression containing an error level, a format string, \r
and a variable argument list based on the format string.\r
\r
**/\r
-#define _DEBUG(Expression) DebugPrint Expression\r
\r
+#if !defined(MDE_CPU_EBC) && (!defined (_MSC_VER) || _MSC_VER > 1400)\r
+ #define _DEBUG_PRINT(PrintLevel, ...) \\r
+ do { \\r
+ if (DebugPrintLevelEnabled (PrintLevel)) { \\r
+ DebugPrint (PrintLevel, ##__VA_ARGS__); \\r
+ } \\r
+ } while (FALSE)\r
+ #define _DEBUG(Expression) _DEBUG_PRINT Expression\r
+#else\r
+#define _DEBUG(Expression) DebugPrint Expression\r
+#endif\r
\r
/** \r
Macro that calls DebugAssert() if an expression evaluates to FALSE.\r
DebugAssert() is called passing in the source filename, source line number, \r
and Expression.\r
\r
- @param Expression Boolean expression\r
+ @param Expression Boolean expression.\r
\r
**/\r
#if !defined(MDEPKG_NDEBUG) \r
parameter that may be NULL. If it is NULL, then the entire \r
handle database is searched.\r
\r
- @param Guid Pointer to a protocol GUID.\r
+ @param Guid The pointer to a protocol GUID.\r
\r
**/\r
#if !defined(MDEPKG_NDEBUG)\r
\r
\r
/** \r
- Macro that marks the end of debug source code.\r
+ The macro that marks the end of debug source code.\r
\r
If the DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is set, \r
then this macro marks the end of source code that is included in a module. \r
\r
\r
/** \r
- Macro that declares a section of debug source code.\r
+ The macro that declares a section of debug source code.\r
\r
If the DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit of PcdDebugProperyMask is set, \r
then the source code specified by Expression is included in a module. \r
\r
\r
/** \r
- Macro that calls DebugClearMemory() to clear a buffer to a default value.\r
+ The macro that calls DebugClearMemory() to clear a buffer to a default value.\r
\r
If the DEBUG_PROPERTY_CLEAR_MEMORY_ENABLED bit of PcdDebugProperyMask is set, \r
then this macro calls DebugClearMemory() passing in Address and Length.\r
\r
- @param Address Pointer to a buffer.\r
+ @param Address The pointer to a buffer.\r
@param Length The number of bytes in the buffer to set.\r
\r
**/\r
Macro that calls DebugAssert() if the containing record does not have a \r
matching signature. If the signatures matches, then a pointer to the data \r
structure that contains a specified field of that data structure is returned. \r
- This is a light weight method hide information by placing a public data \r
+ This is a lightweight method hide information by placing a public data \r
structure inside a larger private data structure and using a pointer to the \r
public data structure to retrieve a pointer to the private data structure.\r
\r
If MDEPKG_NDEBUG is defined or the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED bit \r
of PcdDebugProperyMask is clear, then this macro computes the offset, in bytes,\r
- of field specified by Field from the beginning of the data structure specified \r
+ of the field specified by Field from the beginning of the data structure specified \r
by TYPE. This offset is subtracted from Record, and is used to return a pointer \r
to a data structure of the type specified by TYPE.\r
\r
If TYPE does not contain a field called Signature, then the module will not \r
compile.\r
\r
- @param Record Pointer to the field specified by Field within a data \r
+ @param Record The pointer to the field specified by Field within a data \r
structure of type TYPE.\r
\r
@param TYPE The name of the data structure type to return This \r