Module Name:    src
Committed By:   kamil
Date:           Thu Oct  3 22:16:53 UTC 2019

Modified Files:
        src/external/bsd/libevent/dist: kqueue.c
        src/sys/compat/linux/common: linux_sched.c
        src/sys/compat/netbsd32: netbsd32.h netbsd32_conv.h
        src/sys/sys: event.h

Log Message:
Switch kevent udata from intptr_t void*

Synchromize the struct field format with other BSDs and Darwin.

No ABI change between older and newer struct form on the ports.

The change will require no changes to most C users during the transition
period as the header keeps a caller cast.

Discussed with core@ and there were no objections for this move.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.3 -r1.2 src/external/bsd/libevent/dist/kqueue.c
cvs rdiff -u -r1.71 -r1.72 src/sys/compat/linux/common/linux_sched.c
cvs rdiff -u -r1.126 -r1.127 src/sys/compat/netbsd32/netbsd32.h
cvs rdiff -u -r1.39 -r1.40 src/sys/compat/netbsd32/netbsd32_conv.h
cvs rdiff -u -r1.37 -r1.38 src/sys/sys/event.h

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

Modified files:

Index: src/external/bsd/libevent/dist/kqueue.c
diff -u src/external/bsd/libevent/dist/kqueue.c:1.1.1.3 src/external/bsd/libevent/dist/kqueue.c:1.2
--- src/external/bsd/libevent/dist/kqueue.c:1.1.1.3	Tue Jan 31 21:14:52 2017
+++ src/external/bsd/libevent/dist/kqueue.c	Thu Oct  3 22:16:52 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: kqueue.c,v 1.1.1.3 2017/01/31 21:14:52 christos Exp $	*/
+/*	$NetBSD: kqueue.c,v 1.2 2019/10/03 22:16:52 kamil Exp $	*/
 /*	$OpenBSD: kqueue.c,v 1.5 2002/07/10 14:41:31 art Exp $	*/
 
 /*
@@ -29,7 +29,7 @@
  */
 #include "event2/event-config.h"
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: kqueue.c,v 1.1.1.3 2017/01/31 21:14:52 christos Exp $");
+__RCSID("$NetBSD: kqueue.c,v 1.2 2019/10/03 22:16:52 kamil Exp $");
 #include "evconfig-private.h"
 
 #ifdef EVENT__HAVE_KQUEUE
@@ -53,7 +53,10 @@ __RCSID("$NetBSD: kqueue.c,v 1.1.1.3 201
 /* Some platforms apparently define the udata field of struct kevent as
  * intptr_t, whereas others define it as void*.  There doesn't seem to be an
  * easy way to tell them apart via autoconf, so we need to use OS macros. */
-#if defined(EVENT__HAVE_INTTYPES_H) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__darwin__) && !defined(__APPLE__) && !defined(__CloudABI__)
+#if defined(__NetBSD__)
+#define PTR_TO_UDATA(x) ((typeof(((struct kevent *)0)->udata))(x))
+#define INT_TO_UDATA(x) ((typeof(((struct kevent *)0)->udata))(intptr_t)(x))
+#elif defined(EVENT__HAVE_INTTYPES_H) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__darwin__) && !defined(__APPLE__) && !defined(__CloudABI__)
 #define PTR_TO_UDATA(x)	((intptr_t)(x))
 #define INT_TO_UDATA(x) ((intptr_t)(x))
 #else

Index: src/sys/compat/linux/common/linux_sched.c
diff -u src/sys/compat/linux/common/linux_sched.c:1.71 src/sys/compat/linux/common/linux_sched.c:1.72
--- src/sys/compat/linux/common/linux_sched.c:1.71	Mon Apr 16 14:51:59 2018
+++ src/sys/compat/linux/common/linux_sched.c	Thu Oct  3 22:16:53 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_sched.c,v 1.71 2018/04/16 14:51:59 kamil Exp $	*/
+/*	$NetBSD: linux_sched.c,v 1.72 2019/10/03 22:16:53 kamil Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_sched.c,v 1.71 2018/04/16 14:51:59 kamil Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_sched.c,v 1.72 2019/10/03 22:16:53 kamil Exp $");
 
 #include <sys/param.h>
 #include <sys/mount.h>
@@ -255,7 +255,7 @@ linux_clone_nptl(struct lwp *l, const st
 	mutex_enter(p->p_lock);
 	lwp_lock(l2);
 	spc = &l2->l_cpu->ci_schedstate;
-	if ((l->l_flag & (LW_WREBOOT | LW_WSUSPEND | LW_WEXIT)) == 0) {
+	if ((l->l_flag & (LW_WREBOOT | LW_DBGSUSPEND | LW_WSUSPEND | LW_WEXIT)) == 0) {
 	    	if (p->p_stat == SSTOP || (p->p_sflag & PS_STOPPING) != 0) {
 			KASSERT(l2->l_wchan == NULL);
 	    		l2->l_stat = LSSTOP;

Index: src/sys/compat/netbsd32/netbsd32.h
diff -u src/sys/compat/netbsd32/netbsd32.h:1.126 src/sys/compat/netbsd32/netbsd32.h:1.127
--- src/sys/compat/netbsd32/netbsd32.h:1.126	Thu Sep 26 01:30:46 2019
+++ src/sys/compat/netbsd32/netbsd32.h	Thu Oct  3 22:16:53 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32.h,v 1.126 2019/09/26 01:30:46 christos Exp $	*/
+/*	$NetBSD: netbsd32.h,v 1.127 2019/10/03 22:16:53 kamil Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001, 2008, 2015 Matthew R. Green
@@ -1003,7 +1003,7 @@ struct netbsd32_kevent {
 	uint32_t		flags;
 	uint32_t		fflags;
 	netbsd32_int64		data;
-	netbsd32_intptr_t	udata;
+	netbsd32_pointer_t	udata;
 };
 
 /* from <sys/sched.h> */

Index: src/sys/compat/netbsd32/netbsd32_conv.h
diff -u src/sys/compat/netbsd32/netbsd32_conv.h:1.39 src/sys/compat/netbsd32/netbsd32_conv.h:1.40
--- src/sys/compat/netbsd32/netbsd32_conv.h:1.39	Sun Sep 22 22:59:38 2019
+++ src/sys/compat/netbsd32/netbsd32_conv.h	Thu Oct  3 22:16:53 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_conv.h,v 1.39 2019/09/22 22:59:38 christos Exp $	*/
+/*	$NetBSD: netbsd32_conv.h,v 1.40 2019/10/03 22:16:53 kamil Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -754,7 +754,7 @@ netbsd32_to_kevent(struct netbsd32_keven
 	ke->flags = ke32->flags;
 	ke->fflags = ke32->fflags;
 	ke->data = ke32->data;
-	ke->udata = ke32->udata;
+	ke->udata = NETBSD32PTR64(ke32->udata);
 }
 
 static __inline void
@@ -765,7 +765,7 @@ netbsd32_from_kevent(struct kevent *ke, 
 	ke32->flags = ke->flags;
 	ke32->fflags = ke->fflags;
 	ke32->data = ke->data;
-	ke32->udata = ke->udata;
+	NETBSD32PTR32(ke32->udata, ke->udata);
 }
 
 static __inline void

Index: src/sys/sys/event.h
diff -u src/sys/sys/event.h:1.37 src/sys/sys/event.h:1.38
--- src/sys/sys/event.h:1.37	Sat Aug 10 23:47:13 2019
+++ src/sys/sys/event.h	Thu Oct  3 22:16:52 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: event.h,v 1.37 2019/08/10 23:47:13 kamil Exp $	*/
+/*	$NetBSD: event.h,v 1.38 2019/10/03 22:16:52 kamil Exp $	*/
 
 /*-
  * Copyright (c) 1999,2000,2001 Jonathan Lemon <jle...@freebsd.org>
@@ -52,17 +52,9 @@ struct kevent {
 	uint32_t	flags;		/* action flags for kqueue */
 	uint32_t	fflags;		/* filter flag value */
 	int64_t		data;		/* filter data value */
-	intptr_t	udata;		/* opaque user data identifier */
+	void		*udata;		/* opaque user data identifier */
 };
 
-#ifdef __cplusplus
-#define EV_SET(kevp, ident, filter, flags, fflags, data, udata)	\
-    _EV_SET((kevp), __CAST(uintptr_t, (ident)), (filter), (flags), \
-    (fflags), (data), (udata))
-
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wconversion-null"
-
 static __inline void
 _EV_SET(struct kevent *_kevp, uintptr_t _ident, uint32_t _filter,
     uint32_t _flags, uint32_t _fflags, int64_t _data, void *_udata)
@@ -72,43 +64,12 @@ _EV_SET(struct kevent *_kevp, uintptr_t 
 	_kevp->flags = _flags;
 	_kevp->fflags = _fflags;
 	_kevp->data = _data;
-	_kevp->udata = reinterpret_cast<intptr_t>(_udata);
-}
-
-#define _EV_SET_INTEGER_TYPE(_UTYPE)					\
-static __inline void							\
-_EV_SET(struct kevent *_kevp, uintptr_t _ident, uint32_t _filter,	\
-    uint32_t _flags, uint32_t _fflags, int64_t _data, _UTYPE _udata)	\
-{									\
-	_EV_SET(_kevp, _ident, _filter, _flags, _fflags, _data,		\
-	    reinterpret_cast<void *>(static_cast<intptr_t>(_udata)));	\
-}
-
-_EV_SET_INTEGER_TYPE(int)
-_EV_SET_INTEGER_TYPE(long int)
-_EV_SET_INTEGER_TYPE(long long int)
-_EV_SET_INTEGER_TYPE(unsigned int)
-_EV_SET_INTEGER_TYPE(unsigned long int)
-_EV_SET_INTEGER_TYPE(unsigned long long int)
-
-#pragma GCC diagnostic pop
-#else
-static __inline void
-_EV_SET(struct kevent *_kevp, uintptr_t _ident, uint32_t _filter,
-    uint32_t _flags, uint32_t _fflags, int64_t _data, intptr_t _udata)
-{
-	_kevp->ident = _ident;
-	_kevp->filter = _filter;
-	_kevp->flags = _flags;
-	_kevp->fflags = _fflags;
-	_kevp->data = _data;
 	_kevp->udata = _udata;
 }
 
 #define EV_SET(kevp, ident, filter, flags, fflags, data, udata)	\
     _EV_SET((kevp), __CAST(uintptr_t, (ident)), (filter), (flags), \
-    (fflags), (data), __CAST(intptr_t, (udata)))
-#endif
+    (fflags), (data), __CAST(void *, (udata)))
 
 /* actions */
 #define	EV_ADD		0x0001U		/* add event to kq (implies ENABLE) */

Reply via email to