[PATCH 03/11] backports: build_bug.h: Add static_assert()

Hauke Mehrtens <[email protected]>
Newsgroups org.kernel.vger.backports
Message-ID <[email protected]>
Add static_assert() from upstream commit 6bab69c65013 ("build_bug.h: add
wrapper for _Static_assert") which is used by rtw88.

Signed-off-by: Hauke Mehrtens <[email protected]>
---
 backport/backport-include/linux/build_bug.h | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/backport/backport-include/linux/build_bug.h b/backport/backport-include/linux/build_bug.h
index 13ee5d6a..c883e525 100644
--- a/backport/backport-include/linux/build_bug.h
+++ b/backport/backport-include/linux/build_bug.h
@@ -7,4 +7,25 @@
 #include <linux/bug.h>
 #endif /* LINUX_VERSION_IS_GEQ(4,13,0) */
 
+#ifndef static_assert
+/**
+ * static_assert - check integer constant expression at build time
+ *
+ * static_assert() is a wrapper for the C11 _Static_assert, with a
+ * little macro magic to make the message optional (defaulting to the
+ * stringification of the tested expression).
+ *
+ * Contrary to BUILD_BUG_ON(), static_assert() can be used at global
+ * scope, but requires the expression to be an integer constant
+ * expression (i.e., it is not enough that __builtin_constant_p() is
+ * true for expr).
+ *
+ * Also note that BUILD_BUG_ON() fails the build if the condition is
+ * true, while static_assert() fails the build if the expression is
+ * false.
+ */
+#define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, #expr)
+#define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
+#endif
+
 #endif /* __BP_BUILD_BUG_H */
-- 
2.20.1

--
To unsubscribe from this list: send the line "unsubscribe backports" in
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.