Module Name:    src
Committed By:   christos
Date:           Tue Oct  8 22:53:21 UTC 2024

Modified Files:
        src/distrib/sets/lists/comp: mi
        src/include: Makefile
        src/sys/sys: Makefile
Added Files:
        src/sys/sys: container_of.h stddef.h
Removed Files:
        src/include: stddef.h

Log Message:
PR/58729: Taylor R Campbell: container_of is not documented or available
in userland


To generate a diff of this commit:
cvs rdiff -u -r1.2474 -r1.2475 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.148 -r1.149 src/include/Makefile
cvs rdiff -u -r1.24 -r0 src/include/stddef.h
cvs rdiff -u -r1.184 -r1.185 src/sys/sys/Makefile
cvs rdiff -u -r0 -r1.1 src/sys/sys/container_of.h src/sys/sys/stddef.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/comp/mi
diff -u src/distrib/sets/lists/comp/mi:1.2474 src/distrib/sets/lists/comp/mi:1.2475
--- src/distrib/sets/lists/comp/mi:1.2474	Thu Oct  3 13:14:12 2024
+++ src/distrib/sets/lists/comp/mi	Tue Oct  8 18:53:21 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: mi,v 1.2474 2024/10/03 17:14:12 christos Exp $
+#	$NetBSD: mi,v 1.2475 2024/10/08 22:53:21 christos Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 ./etc/mtree/set.comp				comp-sys-root
@@ -3419,6 +3419,7 @@
 ./usr/include/sys/common_wchar_limits.h		comp-c-include
 ./usr/include/sys/condvar.h			comp-c-include
 ./usr/include/sys/conf.h			comp-c-include
+./usr/include/sys/container_of.h		comp-c-include
 ./usr/include/sys/core.h			comp-c-include
 ./usr/include/sys/cpu_data.h			comp-obsolete		obsolete
 ./usr/include/sys/cpufreq.h			comp-c-include
@@ -3588,6 +3589,7 @@
 ./usr/include/sys/stdalign.h			comp-c-include
 ./usr/include/sys/stdarg.h			comp-c-include
 ./usr/include/sys/stdbool.h			comp-c-include
+./usr/include/sys/stddef.h			comp-c-include
 ./usr/include/sys/stdint.h			comp-c-include
 ./usr/include/sys/swap.h			comp-c-include
 ./usr/include/sys/syncobj.h			comp-c-include

Index: src/include/Makefile
diff -u src/include/Makefile:1.148 src/include/Makefile:1.149
--- src/include/Makefile:1.148	Sun Aug 25 18:10:40 2024
+++ src/include/Makefile	Tue Oct  8 18:53:20 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.148 2024/08/25 22:10:40 christos Exp $
+#	$NetBSD: Makefile,v 1.149 2024/10/08 22:53:20 christos Exp $
 #	@(#)Makefile	8.2 (Berkeley) 1/4/94
 
 # Doing a make includes builds /usr/include
@@ -18,7 +18,7 @@ INCS=	a.out.h aio.h ar.h assert.h atomic
 	ndbm.h netconfig.h netdb.h netgroup.h nlist.h nl_types.h nsswitch.h \
 	paths.h pwd.h quota.h randomid.h ranlib.h re_comp.h regex.h regexp.h \
 	resolv.h res_update.h rmt.h sched.h search.h semaphore.h setjmp.h \
-	string.h sgtty.h signal.h spawn.h stab.h stddef.h stdio.h \
+	string.h sgtty.h signal.h spawn.h stab.h stdio.h \
 	stdlib.h stdnoreturn.h strings.h stringlist.h struct.h sysexits.h \
 	tar.h time.h ttyent.h tzfile.h \
 	uchar.h \

Index: src/sys/sys/Makefile
diff -u src/sys/sys/Makefile:1.184 src/sys/sys/Makefile:1.185
--- src/sys/sys/Makefile:1.184	Sun Aug 25 18:10:40 2024
+++ src/sys/sys/Makefile	Tue Oct  8 18:53:20 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.184 2024/08/25 22:10:40 christos Exp $
+#	$NetBSD: Makefile,v 1.185 2024/10/08 22:53:20 christos Exp $
 
 .include <bsd.own.mk>
 
@@ -12,7 +12,7 @@ INCS=	acct.h acl.h agpio.h aio.h ansi.h 
 	common_ansi.h common_int_const.h common_int_fmtio.h \
 	common_int_limits.h common_int_mwgwtypes.h common_int_types.h \
 	common_limits.h common_lock.h common_wchar_limits.h \
-	condvar.h conf.h core.h \
+	condvar.h conf.h container_of.h core.h \
 	cpufreq.h cpuio.h ctype_bits.h ctype_inline.h \
 	device.h device_if.h \
 	dir.h dirent.h \
@@ -42,7 +42,7 @@ INCS=	acct.h acl.h agpio.h aio.h ansi.h 
 	sleepq.h socket.h \
 	socketvar.h sockio.h spawn.h specificdata.h stat.h \
 	statvfs.h syscall.h syscallargs.h sysctl.h stdalign.h stdarg.h \
-	stdbool.h stdint.h swap.h syncobj.h syslimits.h syslog.h \
+	stdbool.h stddef.h stdint.h swap.h syncobj.h syslimits.h syslog.h \
 	tape.h termios.h time.h timeb.h timepps.h timerfd.h times.h timespec.h \
 	timex.h tls.h trace.h tree.h tty.h ttychars.h ttycom.h \
 	ttydefaults.h ttydev.h types.h \
@@ -54,18 +54,19 @@ INCSYMLINKS=\
 	sys/cdbr.h /usr/include/cdbr.h \
 	sys/exec_elf.h /usr/include/elf.h \
 	sys/fcntl.h /usr/include/fcntl.h \
+	sys/md4.h /usr/include/md4.h \
+	sys/md5.h /usr/include/md5.h \
 	sys/poll.h /usr/include/poll.h \
+	sys/rmd160.h /usr/include/rmd160.h \
+	sys/sha1.h /usr/include/sha1.h \
+	sys/sha2.h /usr/include/sha2.h \
 	sys/stdalign.h /usr/include/stdalign.h \
 	sys/stdarg.h /usr/include/stdarg.h \
 	sys/stdbool.h /usr/include/stdbool.h \
+	sys/stddef.h /usr/include/stddef.h \
 	sys/stdint.h /usr/include/stdint.h \
 	sys/syslog.h /usr/include/syslog.h \
-	sys/termios.h /usr/include/termios.h \
-	sys/rmd160.h /usr/include/rmd160.h \
-	sys/sha1.h /usr/include/sha1.h \
-	sys/sha2.h /usr/include/sha2.h \
-	sys/md4.h /usr/include/md4.h \
-	sys/md5.h /usr/include/md5.h
+	sys/termios.h /usr/include/termios.h
 
 INCSYMLINKS+=	../soundcard.h ${INCSDIR}/soundcard.h
 

Added files:

Index: src/sys/sys/container_of.h
diff -u /dev/null src/sys/sys/container_of.h:1.1
--- /dev/null	Tue Oct  8 18:53:21 2024
+++ src/sys/sys/container_of.h	Tue Oct  8 18:53:20 2024
@@ -0,0 +1,75 @@
+/*	$NetBSD: container_of.h,v 1.1 2024/10/08 22:53:20 christos Exp $	*/
+
+/*-
+ * Copyright (c) 2024 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _SYS_CONTAINER_OF_H_
+#define _SYS_CONTAINER_OF_H_
+
+#include <sys/stddef.h>
+
+/*
+ * Return the container of an embedded struct.  Given x = &c->f,
+ * container_of(x, T, f) yields c, where T is the type of c.  Example:
+ *
+ *	struct foo { ... };
+ *	struct bar {
+ *		int b_x;
+ *		struct foo b_foo;
+ *		...
+ *	};
+ *
+ *	struct bar b;
+ *	struct foo *fp = &b.b_foo;
+ *
+ * Now we can get at b from fp by:
+ *
+ *	struct bar *bp = container_of(fp, struct bar, b_foo);
+ *
+ * The 0*sizeof((PTR) - ...) causes the compiler to warn if the type of
+ * *fp does not match the type of struct bar::b_foo.
+ * We skip the validation for coverity runs to avoid warnings.
+ */
+#if defined(__COVERITY__) || defined(__LGTM_BOT__)
+#define __validate_container_of(PTR, TYPE, FIELD) 0
+#define __validate_const_container_of(PTR, TYPE, FIELD) 0
+#else
+#define __validate_container_of(PTR, TYPE, FIELD)			\
+    (0 * sizeof((PTR) - &((TYPE *)(((char *)(PTR)) -			\
+    offsetof(TYPE, FIELD)))->FIELD))
+#define __validate_const_container_of(PTR, TYPE, FIELD)			\
+    (0 * sizeof((PTR) - &((const TYPE *)(((const char *)(PTR)) -	\
+    offsetof(TYPE, FIELD)))->FIELD))
+#endif
+
+#define	container_of(PTR, TYPE, FIELD)					\
+    ((TYPE *)(((char *)(PTR)) - offsetof(TYPE, FIELD))			\
+	+ __validate_container_of(PTR, TYPE, FIELD))
+#define	const_container_of(PTR, TYPE, FIELD)				\
+    ((const TYPE *)(((const char *)(PTR)) - offsetof(TYPE, FIELD))	\
+	+ __validate_const_container_of(PTR, TYPE, FIELD))
+
+#endif /* !_SYS_CONTAINER_OF_H_ */
Index: src/sys/sys/stddef.h
diff -u /dev/null src/sys/sys/stddef.h:1.1
--- /dev/null	Tue Oct  8 18:53:21 2024
+++ src/sys/sys/stddef.h	Tue Oct  8 18:53:20 2024
@@ -0,0 +1,78 @@
+/*	$NetBSD: stddef.h,v 1.1 2024/10/08 22:53:20 christos Exp $	*/
+
+/*-
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)stddef.h	8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYS_STDDEF_H_
+#define _SYS_STDDEF_H_
+
+#include <sys/cdefs.h>
+#include <sys/featuretest.h>
+#include <machine/ansi.h>
+
+#ifdef	_BSD_PTRDIFF_T_
+typedef	_BSD_PTRDIFF_T_	ptrdiff_t;
+#undef	_BSD_PTRDIFF_T_
+#endif
+
+#ifdef	_BSD_SIZE_T_
+typedef	_BSD_SIZE_T_	size_t;
+#undef	_BSD_SIZE_T_
+#endif
+
+#if defined(_BSD_WCHAR_T_) && !defined(__cplusplus)
+typedef	_BSD_WCHAR_T_	wchar_t;
+#undef	_BSD_WCHAR_T_
+#endif
+
+#include <sys/null.h>
+
+#if __GNUC_PREREQ__(4, 0)
+#define	offsetof(type, member)	__builtin_offsetof(type, member)
+#elif !defined(__cplusplus)
+#define	offsetof(type, member)	((size_t)(unsigned long)(&((type *)0)->member))
+#else
+#if !__GNUC_PREREQ__(3, 4)
+#define __offsetof__(a) a
+#endif
+#define	offsetof(type, member) __offsetof__((reinterpret_cast<size_t> \
+    (&reinterpret_cast<const volatile char &>(static_cast<type *>(0)->member))))
+#endif
+
+#if (__STDC_VERSION__ - 0) >= 201112L || (__cplusplus - 0) >= 201103L
+typedef union {
+	void *_v;
+	long double _ld;
+	long long int _ll;
+} max_align_t;
+#endif
+
+#endif /* _SYS_STDDEF_H_ */

Reply via email to