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_ */
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to