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

2020-11-22 Thread Kyle Evans
On Sun, Nov 22, 2020 at 1:55 AM Konstantin Belousov  wrote:
>
> On Sun, Nov 22, 2020 at 05:34:51AM +, Kyle Evans wrote:
> > 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.
>
> I do not mind much about placement of the compat32 syscall stubs, but I
> did suggested and liked move of the compat32 structures definitions into
> freebsd32.h.
>
> They are actually useful that way, at least allowing me to write some 
> (private)
> tests in the past.

Ah, sure, sorry- this doesn't force us to re-add implementation
details to other headers, so I don't see any problem. I will move just
the struct definitions back shortly.
___
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"


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

2020-11-21 Thread Konstantin Belousov
On Sun, Nov 22, 2020 at 05:34:51AM +, Kyle Evans wrote:
> 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.

I do not mind much about placement of the compat32 syscall stubs, but I
did suggested and liked move of the compat32 structures definitions into
freebsd32.h.

They are actually useful that way, at least allowing me to write some (private)
tests in the past.
___
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"


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

2020-11-21 Thread Kyle Evans
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_trobust_list_offset;
-   uint32_trobust_priv_list_offset;
-   uint32_trobust_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_MFSNAMELEN16
 #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_ttimespec_sz;
+   const size_tumtx_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_trobust_list_offset;
+   uint32_trobust_priv_list_offset;
+   uint32_trobust_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
===