]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/DebugLib.h
MdePkg/DebugLib.h: add ASSERT_RETURN_ERROR()
[mirror_edk2.git] / MdePkg / Include / Library / DebugLib.h
index 81904325703f0d567d82cade85d3b7712ae68836..3a910e6a208b71d57786fa2685aa49d641044cec 100644 (file)
@@ -348,6 +348,33 @@ DebugPrintLevelEnabled (
   #define ASSERT_EFI_ERROR(StatusParameter)\r
 #endif\r
 \r
+/**\r
+  Macro that calls DebugAssert() if a RETURN_STATUS evaluates to an error code.\r
+\r
+  If MDEPKG_NDEBUG is not defined and the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED\r
+  bit of PcdDebugProperyMask is set, then this macro evaluates the\r
+  RETURN_STATUS value specified by StatusParameter.  If StatusParameter is an\r
+  error code, then DebugAssert() is called passing in the source filename,\r
+  source line number, and StatusParameter.\r
+\r
+  @param  StatusParameter  RETURN_STATUS value to evaluate.\r
+\r
+**/\r
+#if !defined(MDEPKG_NDEBUG)\r
+  #define ASSERT_RETURN_ERROR(StatusParameter)                          \\r
+    do {                                                                \\r
+      if (DebugAssertEnabled ()) {                                      \\r
+        if (RETURN_ERROR (StatusParameter)) {                           \\r
+          DEBUG ((DEBUG_ERROR, "\nASSERT_RETURN_ERROR (Status = %r)\n", \\r
+            StatusParameter));                                          \\r
+          _ASSERT (!RETURN_ERROR (StatusParameter));                    \\r
+        }                                                               \\r
+      }                                                                 \\r
+    } while (FALSE)\r
+#else\r
+  #define ASSERT_RETURN_ERROR(StatusParameter)\r
+#endif\r
+\r
 /**  \r
   Macro that calls DebugAssert() if a protocol is already installed in the \r
   handle database.\r