From: Mattias Rönnblom Date: Mon, 11 Apr 2022 15:15:57 +0000 (+0200) Subject: eal: add macro to warn for unused function return values X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=eb13e558f8fcc13f258a93e5f85fedc74b7b0cf0;p=dpdk.git eal: add macro to warn for unused function return values This patch adds a wrapper macro __rte_warn_unused_result for the warn_unused_result function attribute. Marking a function __rte_warn_unused_result will make the compiler emit a warning in case the caller does not use the function's return value. Signed-off-by: Mattias Rönnblom Acked-by: Bruce Richardson Reviewed-by: Morten Brørup Acked-by: Tyler Retzlaff --- diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h index 4a399cc7c8..67587025ab 100644 --- a/lib/eal/include/rte_common.h +++ b/lib/eal/include/rte_common.h @@ -222,6 +222,31 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void) */ #define __rte_noreturn __attribute__((noreturn)) +/** + * Issue a warning in case the function's return value is ignored. + * + * The use of this attribute should be restricted to cases where + * ignoring the marked function's return value is almost always a + * bug. With GCC, some effort is required to make clear that ignoring + * the return value is intentional. The usual void-casting method to + * mark something unused as used does not suppress the warning with + * this compiler. + * + * @code{.c} + * __rte_warn_unused_result int foo(); + * + * void ignore_foo_result(void) { + * foo(); // generates a warning with all compilers + * + * (void)foo(); // still generates the warning with GCC (but not clang) + * + * int unused __rte_unused; + * unused = foo(); // does the trick with all compilers + * } + * @endcode + */ +#define __rte_warn_unused_result __attribute__((warn_unused_result)) + /** * Force a function to be inlined */