[PATCH 01/19] common: Add a noisy assert()

Simon Glass sjg at chromium.org
Mon Dec 30 05:19:10 CET 2019


Some U-Boot code uses BUG_ON() and WARN_ON() macros. These use __FILE__
which can include quite a large path, depending on how U-Boot is built.

The existing assert() is only checked if DEBUG is enabled. Add a new one
which is always checked, and prints a (smaller) error in that case.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 include/log.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/include/log.h b/include/log.h
index d8f18a6afd..c6f2f023b1 100644
--- a/include/log.h
+++ b/include/log.h
@@ -218,6 +218,20 @@ void __assert_fail(const char *assertion, const char *file, unsigned int line,
 	({ if (!(x) && _DEBUG) \
 		__assert_fail(#x, __FILE__, __LINE__, __func__); })
 
+/*
+ * This one actually gets compiled in even without DEBUG. It doesn't include the
+ * full pathname as it may be huge. Only use this when the user should be
+ * warning, similar to BUG_ON() in linux.
+ *
+ * @return true if assertion succeeded (condition is true), else false
+ */
+#define assert_noisy(x) \
+	({ bool _val = (x); \
+	if (!_val) \
+		__assert_fail(#x, "?", __LINE__, __func__); \
+	_val; \
+	})
+
 #if CONFIG_IS_ENABLED(LOG) && defined(CONFIG_LOG_ERROR_RETURN)
 /*
  * Log an error return value, possibly with a message. Usage:
-- 
2.24.1.735.g03f4e72817-goog



More information about the U-Boot mailing list