svn commit: r367928 - in head/sys: compat/freebsd32 kern sys

Kyle Evans kevans at FreeBSD.org
Sun Nov 22 05:34:52 UTC 2020


Author: kevans
Date: Sun Nov 22 05:34:51 2020
New Revision: 367928
URL: https://svnweb.freebsd.org/changeset/base/367928

Log:
  _umtx_op: move compat32 definitions back in
  
  These are reasonably compact, and a future commit will blur the compat32
  lines by supporting 32-bit operations with the native _umtx_op.

Modified:
  head/sys/compat/freebsd32/freebsd32.h
  head/sys/compat/freebsd32/freebsd32_misc.c
  head/sys/kern/kern_umtx.c
  head/sys/sys/syscallsubr.h
  head/sys/sys/umtx.h

Modified: head/sys/compat/freebsd32/freebsd32.h
==============================================================================
--- head/sys/compat/freebsd32/freebsd32.h	Sun Nov 22 05:00:28 2020	(r367927)
+++ head/sys/compat/freebsd32/freebsd32.h	Sun Nov 22 05:34:51 2020	(r367928)
@@ -94,27 +94,6 @@ struct itimerval32 {
 	struct timeval32 it_value;
 };
 
-struct umtx_time32 {
-	struct	timespec32	_timeout;
-	uint32_t		_flags;
-	uint32_t		_clockid;
-};
-
-struct umtx_robust_lists_params_compat32 {
-	uint32_t	robust_list_offset;
-	uint32_t	robust_priv_list_offset;
-	uint32_t	robust_inact_offset;
-};
-
-struct umutex32 {
-	volatile __lwpid_t	m_owner;	/* Owner of the mutex */
-	__uint32_t		m_flags;	/* Flags of the mutex */
-	__uint32_t		m_ceilings[2];	/* Priority protect ceiling */
-	__uint32_t		m_rb_lnk;	/* Robust linkage */
-	__uint32_t		m_pad;
-	__uint32_t		m_spare[2];
-};
-
 #define FREEBSD4_MFSNAMELEN	16
 #define FREEBSD4_MNAMELEN	(88 - 2 * sizeof(int32_t))
 

Modified: head/sys/compat/freebsd32/freebsd32_misc.c
==============================================================================
--- head/sys/compat/freebsd32/freebsd32_misc.c	Sun Nov 22 05:00:28 2020	(r367927)
+++ head/sys/compat/freebsd32/freebsd32_misc.c	Sun Nov 22 05:34:51 2020	(r367928)
@@ -3766,11 +3766,3 @@ freebsd32_sched_rr_get_interval(struct thread *td,
 	}
 	return (error);
 }
-
-int
-freebsd32__umtx_op(struct thread *td, struct freebsd32__umtx_op_args *uap)
-{
-
-	return (kern__umtx_op(td, uap->obj, uap->op, uap->val, uap->uaddr,
-	    uap->uaddr2, &umtx_native_ops32));
-}

Modified: head/sys/kern/kern_umtx.c
==============================================================================
--- head/sys/kern/kern_umtx.c	Sun Nov 22 05:00:28 2020	(r367927)
+++ head/sys/kern/kern_umtx.c	Sun Nov 22 05:34:51 2020	(r367928)
@@ -219,7 +219,41 @@ struct abs_timeout {
 	struct timespec end;
 };
 
+struct umtx_copyops {
+	int	(*copyin_timeout)(const void *uaddr, struct timespec *tsp);
+	int	(*copyin_umtx_time)(const void *uaddr, size_t size,
+	    struct _umtx_time *tp);
+	int	(*copyin_robust_lists)(const void *uaddr, size_t size,
+	    struct umtx_robust_lists_params *rbp);
+	int	(*copyout_timeout)(void *uaddr, size_t size,
+	    struct timespec *tsp);
+	const size_t	timespec_sz;
+	const size_t	umtx_time_sz;
+	const bool	compat32;
+};
+
 #ifdef COMPAT_FREEBSD32
+struct umtx_time32 {
+	struct	timespec32	_timeout;
+	uint32_t		_flags;
+	uint32_t		_clockid;
+};
+
+struct umtx_robust_lists_params_compat32 {
+	uint32_t	robust_list_offset;
+	uint32_t	robust_priv_list_offset;
+	uint32_t	robust_inact_offset;
+};
+
+struct umutex32 {
+	volatile __lwpid_t	m_owner;	/* Owner of the mutex */
+	__uint32_t		m_flags;	/* Flags of the mutex */
+	__uint32_t		m_ceilings[2];	/* Priority protect ceiling */
+	__uint32_t		m_rb_lnk;	/* Robust linkage */
+	__uint32_t		m_pad;
+	__uint32_t		m_spare[2];
+};
+
 _Static_assert(sizeof(struct umutex) == sizeof(struct umutex32), "umutex32");
 _Static_assert(__offsetof(struct umutex, m_spare[0]) ==
     __offsetof(struct umutex32, m_spare[0]), "m_spare32");
@@ -4291,7 +4325,7 @@ const struct umtx_copyops umtx_native_ops32 = {
 };
 #endif
 
-int
+static int
 kern__umtx_op(struct thread *td, void *obj, int op, unsigned long val,
     void *uaddr1, void *uaddr2, const struct umtx_copyops *ops)
 {
@@ -4315,6 +4349,16 @@ sys__umtx_op(struct thread *td, struct _umtx_op_args *
 	return (kern__umtx_op(td, uap->obj, uap->op, uap->val, uap->uaddr1,
 	    uap->uaddr2, &umtx_native_ops));
 }
+
+#ifdef COMPAT_FREEBSD32
+int
+freebsd32__umtx_op(struct thread *td, struct freebsd32__umtx_op_args *uap)
+{
+
+	return (kern__umtx_op(td, uap->obj, uap->op, uap->val, uap->uaddr,
+	    uap->uaddr2, &umtx_native_ops32));
+}
+#endif
 
 void
 umtx_thread_init(struct thread *td)

Modified: head/sys/sys/syscallsubr.h
==============================================================================
--- head/sys/sys/syscallsubr.h	Sun Nov 22 05:00:28 2020	(r367927)
+++ head/sys/sys/syscallsubr.h	Sun Nov 22 05:34:51 2020	(r367928)
@@ -62,7 +62,6 @@ struct sockaddr;
 struct stat;
 struct thr_param;
 struct uio;
-struct umtx_copyops;
 struct vm_map;
 struct vmspace;
 
@@ -80,8 +79,6 @@ struct mmap_req {
 
 int	kern___getcwd(struct thread *td, char *buf, enum uio_seg bufseg,
 	    size_t buflen, size_t path_max);
-int	kern__umtx_op(struct thread *td, void *obj, int op, unsigned long val,
-	    void *uaddr1, void *uaddr2, const struct umtx_copyops *ops);
 int	kern_accept(struct thread *td, int s, struct sockaddr **name,
 	    socklen_t *namelen, struct file **fp);
 int	kern_accept4(struct thread *td, int s, struct sockaddr **name,

Modified: head/sys/sys/umtx.h
==============================================================================
--- head/sys/sys/umtx.h	Sun Nov 22 05:00:28 2020	(r367927)
+++ head/sys/sys/umtx.h	Sun Nov 22 05:34:51 2020	(r367928)
@@ -200,21 +200,5 @@ void umtx_thread_fini(struct thread *);
 void umtx_thread_alloc(struct thread *);
 void umtx_thread_exit(struct thread *);
 
-struct umtx_copyops {
-	int	(*copyin_timeout)(const void *uaddr, struct timespec *tsp);
-	int	(*copyin_umtx_time)(const void *uaddr, size_t size,
-	    struct _umtx_time *tp);
-	int	(*copyin_robust_lists)(const void *uaddr, size_t size,
-	    struct umtx_robust_lists_params *rbp);
-	int	(*copyout_timeout)(void *uaddr, size_t size,
-	    struct timespec *tsp);
-	const size_t	timespec_sz;
-	const size_t	umtx_time_sz;
-	const bool	compat32;
-};
-
-#ifdef COMPAT_FREEBSD32
-extern const struct umtx_copyops umtx_native_ops32;
-#endif
 #endif /* !_KERNEL */
 #endif /* !_SYS_UMTX_H_ */


More information about the svn-src-all mailing list