[PATCH] eal: force evaluation of RTE_ASSERT expression
Stephen Hemminger
stephen at networkplumber.org
Tue Feb 4 17:55:16 CET 2025
Even if RTE_ENABLE_ASSERT is not enabled, the expression used should
still be evaluated to check for compiler warnings. Use sizeof
and ternary operator in same manner as the assert() macro to
cause the expression to be evaluated but not generate code.
Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
lib/eal/include/rte_debug.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/lib/eal/include/rte_debug.h b/lib/eal/include/rte_debug.h
index 74593cd4d4..357dbb09ec 100644
--- a/lib/eal/include/rte_debug.h
+++ b/lib/eal/include/rte_debug.h
@@ -43,11 +43,17 @@ void rte_dump_stack(void);
#define rte_panic(...) rte_panic_(__func__, __VA_ARGS__, "dummy")
#define rte_panic_(func, format, ...) __rte_panic(func, format "%.0s", __VA_ARGS__)
+/* RTE_ASSERT is optional checks that only get evaluted if RTE_ENABLE_ASSERT is enabled. */
#ifdef RTE_ENABLE_ASSERT
#define RTE_ASSERT(exp) RTE_VERIFY(exp)
#else
-#define RTE_ASSERT(exp) do {} while (0)
+#define RTE_ASSERT(exp) \
+ /* Evaluate expression to trigger warnings */ \
+ do { \
+ (void)sizeof((exp) ? 1 : 0); \
+ } while (0)
#endif
+
#define RTE_VERIFY(exp) do { \
if (unlikely(!(exp))) \
rte_panic("line %d\tassert \"%s\" failed\n", __LINE__, #exp); \
--
2.47.2
More information about the dev
mailing list