]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/DebugLib.h
MdePkg: Fix WINDDK3790 build failure
[mirror_edk2.git] / MdePkg / Include / Library / DebugLib.h
index f969ce23178753533cb7914d7697023f03fff11d..88b65493597e05becc491cab6ad059cd8e8d5ac3 100644 (file)
@@ -8,7 +8,7 @@
   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 - 2012, Intel Corporation. All rights reserved.<BR>\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
@@ -220,6 +220,20 @@ DebugClearMemoryEnabled (
   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
@@ -238,13 +252,25 @@ DebugClearMemoryEnabled (
 \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 ECB 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