git: 54d0e1772fb6 - main - LinuxKPI: add struct_group_tagged()

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Wed, 28 May 2025 10:43:47 UTC
The branch main has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=54d0e1772fb6b83d72725764e0a5d3ead8337673

commit 54d0e1772fb6b83d72725764e0a5d3ead8337673
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-05-02 20:10:38 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-05-28 10:42:58 +0000

    LinuxKPI: add struct_group_tagged()
    
    Restructure struct_group() into a wrapper around __struct_group().
    Various callers have arguments annotated as /* no foo */ so try to
    add all we can find.
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      3 days
    Reviewed by:    dumbbell
    Differential Revision: https://reviews.freebsd.org/D50157
---
 sys/compat/linuxkpi/common/include/linux/stddef.h | 26 ++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/stddef.h b/sys/compat/linuxkpi/common/include/linux/stddef.h
index a3bc6b13765e..d04a5a4bf516 100644
--- a/sys/compat/linuxkpi/common/include/linux/stddef.h
+++ b/sys/compat/linuxkpi/common/include/linux/stddef.h
@@ -5,11 +5,27 @@
 
 #include <sys/stddef.h>
 
-#define	struct_group(NAME, ...)						\
+/*
+ * FreeBSD has multiple (vendor) drivers containing copies of this
+ * and including LinuxKPI headers.  Put the #defines behind guards.
+ */
+
+#ifndef __struct_group
+#define	__struct_group(_tag, _name, _attrs, _members...)		\
     union {								\
-	struct { __VA_ARGS__ };						\
-	struct { __VA_ARGS__ } NAME;					\
-    }
+	struct { _members } _attrs;					\
+	struct _tag { _members } _attrs _name;				\
+    } _attrs
+#endif
 
-#endif	/* _LINUXKPI_LINUX_STDDEF_H_ */
+#ifndef	struct_group
+#define	struct_group(_name, _members...)				\
+    __struct_group(/* no tag */, _name, /* no attrs */, _members)
+#endif
 
+#ifndef	struct_group_tagged
+#define	struct_group_tagged(_tag, _name, _members...)			\
+    __struct_group(_tag, _name, /* no attrs */, _members)
+#endif
+
+#endif	/* _LINUXKPI_LINUX_STDDEF_H_ */