summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2025-08-18 19:53:55 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2026-01-16 19:37:48 +0000
commiteba61bc6749e571ca5797b85f572925916266927 (patch)
treed2cb167cc8b8d706eacedb2be3718b89b9cb4bd6
parent163fe10479a34071eb860695459999e2575e714c (diff)
LinuxKPI: add __struct_size
Use __builtin_object_size() by default. If __builtin_dynamic_object_size() is available use that instead. I would hope that in a future version we can remove the conditional checks but in order to be able to MFC this without checking all compiler versions simply keep it this way for now. Sponsored by: The FreeBSD Foundation (initially) Reviewed by: dumbbell Differential Revision: https://reviews.freebsd.org/D52077 (cherry picked from commit ff5bcb742899f8398ccb1b9e292b2e5aeeb7fedb) (cherry picked from commit 310885b40ad256b054d65353c375b29700ee024c)
-rw-r--r--sys/compat/linuxkpi/common/include/linux/compiler.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/compat/linuxkpi/common/include/linux/compiler.h b/sys/compat/linuxkpi/common/include/linux/compiler.h
index fb5ad3bf4fe4..948396144ad6 100644
--- a/sys/compat/linuxkpi/common/include/linux/compiler.h
+++ b/sys/compat/linuxkpi/common/include/linux/compiler.h
@@ -130,4 +130,10 @@
#define is_signed_type(t) ((t)-1 < (t)1)
#define is_unsigned_type(t) ((t)-1 > (t)1)
+#if __has_builtin(__builtin_dynamic_object_size)
+#define __struct_size(_s) __builtin_dynamic_object_size(_s, 0)
+#else
+#define __struct_size(_s) __builtin_object_size(_s, 0)
+#endif
+
#endif /* _LINUXKPI_LINUX_COMPILER_H_ */