git: f51368016df4 - stable/13 - umtx: Split umtx.h on two counterparts.

From: Dmitry Chagin <dchagin_at_FreeBSD.org>
Date: Fri, 17 Jun 2022 19:37:21 UTC
The branch stable/13 has been updated by dchagin:

URL: https://cgit.FreeBSD.org/src/commit/?id=f51368016df44370803b1a5e9666f8409620b06e

commit f51368016df44370803b1a5e9666f8409620b06e
Author:     Dmitry Chagin <dchagin@FreeBSD.org>
AuthorDate: 2021-07-29 09:41:29 +0000
Commit:     Dmitry Chagin <dchagin@FreeBSD.org>
CommitDate: 2022-06-17 19:33:15 +0000

    umtx: Split umtx.h on two counterparts.
    
    To prevent umtx.h polluting by future changes split it on two headers:
    umtx.h - ABI header for userspace;
    umtxvar.h - the kernel staff.
    
    While here fix umtx_key_match style.
    
    Reviewed by:            kib
    Differential Revision:  https://reviews.freebsd.org/D31248
    MFC after:              2 weeks
    
    (cherry picked from commit af29f3995882fac6e1c0360c2276c7a98056957f)
---
 sys/compat/cloudabi/cloudabi_futex.c |   2 +-
 sys/compat/linux/linux_futex.c       |   2 +-
 sys/kern/kern_exec.c                 |   2 +-
 sys/kern/kern_exit.c                 |   2 +-
 sys/kern/kern_kthread.c              |   2 +-
 sys/kern/kern_racct.c                |   2 +-
 sys/kern/kern_resource.c             |   2 +-
 sys/kern/kern_thr.c                  |   2 +-
 sys/kern/kern_thread.c               |   2 +-
 sys/kern/kern_umtx.c                 |   1 +
 sys/kern/sched_4bsd.c                |   2 +-
 sys/kern/sched_ule.c                 |   2 +-
 sys/sys/umtx.h                       |  73 ------------------------
 sys/sys/umtxvar.h                    | 106 +++++++++++++++++++++++++++++++++++
 14 files changed, 118 insertions(+), 84 deletions(-)

diff --git a/sys/compat/cloudabi/cloudabi_futex.c b/sys/compat/cloudabi/cloudabi_futex.c
index 153e8bce8495..fd2a1d515483 100644
--- a/sys/compat/cloudabi/cloudabi_futex.c
+++ b/sys/compat/cloudabi/cloudabi_futex.c
@@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/proc.h>
 #include <sys/sx.h>
 #include <sys/systm.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 
 #include <contrib/cloudabi/cloudabi_types_common.h>
 
diff --git a/sys/compat/linux/linux_futex.c b/sys/compat/linux/linux_futex.c
index 1858c573a576..547d52c8ca4a 100644
--- a/sys/compat/linux/linux_futex.c
+++ b/sys/compat/linux/linux_futex.c
@@ -57,7 +57,7 @@ __KERNEL_RCSID(1, "$NetBSD: linux_futex.c,v 1.7 2006/07/24 19:01:49 manu Exp $")
 #include <sys/queue.h>
 #include <sys/sched.h>
 #include <sys/sdt.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 
 #include <vm/vm_extern.h>
 
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index f62c4582e89a..d8e1779825c6 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -71,7 +71,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sysent.h>
 #include <sys/sysproto.h>
 #include <sys/timers.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 #include <sys/vnode.h>
 #include <sys/wait.h>
 #ifdef KTRACE
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index e89139edc825..09bad7873ff5 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -76,7 +76,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sem.h>
 #include <sys/sysent.h>
 #include <sys/timers.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 #ifdef KTRACE
 #include <sys/ktrace.h>
 #endif
diff --git a/sys/kern/kern_kthread.c b/sys/kern/kern_kthread.c
index 32832bde2f53..2eef7798f3d6 100644
--- a/sys/kern/kern_kthread.c
+++ b/sys/kern/kern_kthread.c
@@ -41,7 +41,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/signalvar.h>
 #include <sys/sysent.h>
 #include <sys/sx.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 #include <sys/unistd.h>
 #include <sys/wait.h>
 #include <sys/sched.h>
diff --git a/sys/kern/kern_racct.c b/sys/kern/kern_racct.c
index 797a06cc15b1..512e06814c24 100644
--- a/sys/kern/kern_racct.c
+++ b/sys/kern/kern_racct.c
@@ -57,7 +57,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sysctl.h>
 #include <sys/sysent.h>
 #include <sys/sysproto.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 #include <machine/smp.h>
 
 #ifdef RCTL
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c
index 3dd243199088..a0b2438acec5 100644
--- a/sys/kern/kern_resource.c
+++ b/sys/kern/kern_resource.c
@@ -59,7 +59,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sysctl.h>
 #include <sys/sysent.h>
 #include <sys/time.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 
 #include <vm/vm.h>
 #include <vm/vm_param.h>
diff --git a/sys/kern/kern_thr.c b/sys/kern/kern_thr.c
index 69259d78811a..18722cc6a73d 100644
--- a/sys/kern/kern_thr.c
+++ b/sys/kern/kern_thr.c
@@ -54,7 +54,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/ucontext.h>
 #include <sys/thr.h>
 #include <sys/rtprio.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 #include <sys/limits.h>
 #ifdef	HWPMC_HOOKS
 #include <sys/pmckern.h>
diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c
index 54254112b376..c56465835b3d 100644
--- a/sys/kern/kern_thread.c
+++ b/sys/kern/kern_thread.c
@@ -56,7 +56,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/taskqueue.h>
 #include <sys/ktr.h>
 #include <sys/rwlock.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 #include <sys/vmmeter.h>
 #include <sys/cpuset.h>
 #ifdef	HWPMC_HOOKS
diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c
index dd1622c476c5..65e364afc35f 100644
--- a/sys/kern/kern_umtx.c
+++ b/sys/kern/kern_umtx.c
@@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/time.h>
 #include <sys/eventhandler.h>
 #include <sys/umtx.h>
+#include <sys/umtxvar.h>
 
 #include <security/mac/mac_framework.h>
 
diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c
index 7591bef4b14e..27621b79d4b7 100644
--- a/sys/kern/sched_4bsd.c
+++ b/sys/kern/sched_4bsd.c
@@ -56,7 +56,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sysctl.h>
 #include <sys/sx.h>
 #include <sys/turnstile.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 #include <machine/pcb.h>
 #include <machine/smp.h>
 
diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c
index 1f859b286843..2c3e9fc57bf6 100644
--- a/sys/kern/sched_ule.c
+++ b/sys/kern/sched_ule.c
@@ -61,7 +61,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sysctl.h>
 #include <sys/sysproto.h>
 #include <sys/turnstile.h>
-#include <sys/umtx.h>
+#include <sys/umtxvar.h>
 #include <sys/vmmeter.h>
 #include <sys/cpuset.h>
 #include <sys/sbuf.h>
diff --git a/sys/sys/umtx.h b/sys/sys/umtx.h
index 60e9dccdad91..82a8e0e4b0f0 100644
--- a/sys/sys/umtx.h
+++ b/sys/sys/umtx.h
@@ -132,83 +132,10 @@ struct umtx_robust_lists_params {
 	uintptr_t	robust_inact_offset;
 };
 
-#ifndef _KERNEL
-
 __BEGIN_DECLS
 
 int _umtx_op(void *obj, int op, u_long val, void *uaddr, void *uaddr2);
 
 __END_DECLS
 
-#else
-
-/*
- * The umtx_key structure is used by both the Linux futex code and the
- * umtx implementation to map userland addresses to unique keys.
- */
-
-enum {
-	TYPE_SIMPLE_WAIT,
-	TYPE_CV,
-	TYPE_SEM,
-	TYPE_SIMPLE_LOCK,
-	TYPE_NORMAL_UMUTEX,
-	TYPE_PI_UMUTEX,
-	TYPE_PP_UMUTEX,
-	TYPE_RWLOCK,
-	TYPE_FUTEX,
-	TYPE_SHM,
-	TYPE_PI_ROBUST_UMUTEX,
-	TYPE_PP_ROBUST_UMUTEX,
-};
-
-/* Key to represent a unique userland synchronous object */
-struct umtx_key {
-	int	hash;
-	int	type;
-	int	shared;
-	union {
-		struct {
-			struct vm_object *object;
-			uintptr_t	offset;
-		} shared;
-		struct {
-			struct vmspace	*vs;
-			uintptr_t	addr;
-		} private;
-		struct {
-			void		*a;
-			uintptr_t	b;
-		} both;
-	} info;
-};
-
-#define THREAD_SHARE		0
-#define PROCESS_SHARE		1
-#define AUTO_SHARE		2
-
-struct thread;
-
-static inline int
-umtx_key_match(const struct umtx_key *k1, const struct umtx_key *k2)
-{
-	return (k1->type == k2->type &&
-		k1->info.both.a == k2->info.both.a &&
-	        k1->info.both.b == k2->info.both.b);
-}
-
-int umtx_copyin_timeout(const void *, struct timespec *);
-void umtx_exec(struct proc *p);
-int umtx_key_get(const void *, int, int, struct umtx_key *);
-void umtx_key_release(struct umtx_key *);
-struct umtx_q *umtxq_alloc(void);
-void umtxq_free(struct umtx_q *);
-int kern_umtx_wake(struct thread *, void *, int, int);
-void umtx_pi_adjust(struct thread *, u_char);
-void umtx_thread_init(struct thread *);
-void umtx_thread_fini(struct thread *);
-void umtx_thread_alloc(struct thread *);
-void umtx_thread_exit(struct thread *);
-
-#endif /* !_KERNEL */
 #endif /* !_SYS_UMTX_H_ */
diff --git a/sys/sys/umtxvar.h b/sys/sys/umtxvar.h
new file mode 100644
index 000000000000..b898c263201e
--- /dev/null
+++ b/sys/sys/umtxvar.h
@@ -0,0 +1,106 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2002, Jeffrey Roberson <jeff@freebsd.org>
+ * 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 unmodified, 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 AUTHOR ``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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ *
+ */
+
+#ifndef _SYS_UMTXVAR_H_
+#define	_SYS_UMTXVAR_H_
+
+#ifdef _KERNEL
+
+/*
+ * The umtx_key structure is used by both the Linux futex code and the
+ * umtx implementation to map userland addresses to unique keys.
+ */
+enum {
+	TYPE_SIMPLE_WAIT,
+	TYPE_CV,
+	TYPE_SEM,
+	TYPE_SIMPLE_LOCK,
+	TYPE_NORMAL_UMUTEX,
+	TYPE_PI_UMUTEX,
+	TYPE_PP_UMUTEX,
+	TYPE_RWLOCK,
+	TYPE_FUTEX,
+	TYPE_SHM,
+	TYPE_PI_ROBUST_UMUTEX,
+	TYPE_PP_ROBUST_UMUTEX,
+};
+
+/* Key to represent a unique userland synchronous object */
+struct umtx_key {
+	int	hash;
+	int	type;
+	int	shared;
+	union {
+		struct {
+			struct vm_object *object;
+			uintptr_t	offset;
+		} shared;
+		struct {
+			struct vmspace	*vs;
+			uintptr_t	addr;
+		} private;
+		struct {
+			void		*a;
+			uintptr_t	b;
+		} both;
+	} info;
+};
+
+#define THREAD_SHARE		0
+#define PROCESS_SHARE		1
+#define AUTO_SHARE		2
+
+struct thread;
+
+static inline int
+umtx_key_match(const struct umtx_key *k1, const struct umtx_key *k2)
+{
+
+	return (k1->type == k2->type &&
+	    k1->info.both.a == k2->info.both.a &&
+	    k1->info.both.b == k2->info.both.b);
+}
+
+int umtx_copyin_timeout(const void *, struct timespec *);
+void umtx_exec(struct proc *p);
+int umtx_key_get(const void *, int, int, struct umtx_key *);
+void umtx_key_release(struct umtx_key *);
+struct umtx_q *umtxq_alloc(void);
+void umtxq_free(struct umtx_q *);
+int kern_umtx_wake(struct thread *, void *, int, int);
+void umtx_pi_adjust(struct thread *, u_char);
+void umtx_thread_init(struct thread *);
+void umtx_thread_fini(struct thread *);
+void umtx_thread_alloc(struct thread *);
+void umtx_thread_exit(struct thread *);
+
+#endif /* _KERNEL */
+#endif /* !_SYS_UMTXVAR_H_ */