Module Name: src
Committed By: riastradh
Date: Thu Jul 13 12:06:20 UTC 2023
Modified Files:
src/sys/arch/sparc/include: cpu.h
src/sys/arch/sparc64/include: cpu.h
src/sys/arch/x86/include: cpu.h
src/sys/sys: cpu_data.h sched.h
Log Message:
Break cycle by using `struct kmutex *' instead of `kmutex_t *'.
sys/sched.h included sys/mutex.h
which includes sys/intr.h
which includes machine/intr.h
which on cats includes arm/footbridge/footbridge_intr.h
which includes arm/cpu.h
which includes sys/cpu_data.h
which includes sys/sched.h
But there was never any real need for sys/mutex.h in sys/sched.h,
because it only uses pointers to the opaque struct kmutex. Cycle
broken by using `struct kmutex *' instead of pulling in sys/mutex.h
for the definition of kmutex_t.
Side effect: This revealed that sys/cpu_data.h needed sys/intr.h
(which was pulled in accidentally by sys/mutex.h via sys/sched.h) for
SOFTINT_COUNT. Also revealed some other machine/cpu.h header files
were missing includes of sys/mutex.h for kmutex_t.
To generate a diff of this commit:
cvs rdiff -u -r1.110 -r1.111 src/sys/arch/sparc/include/cpu.h
cvs rdiff -u -r1.133 -r1.134 src/sys/arch/sparc64/include/cpu.h
cvs rdiff -u -r1.133 -r1.134 src/sys/arch/x86/include/cpu.h
cvs rdiff -u -r1.53 -r1.54 src/sys/sys/cpu_data.h
cvs rdiff -u -r1.91 -r1.92 src/sys/sys/sched.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/sparc/include/cpu.h
diff -u src/sys/arch/sparc/include/cpu.h:1.110 src/sys/arch/sparc/include/cpu.h:1.111
--- src/sys/arch/sparc/include/cpu.h:1.110 Sat Aug 14 17:51:19 2021
+++ src/sys/arch/sparc/include/cpu.h Thu Jul 13 12:06:20 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.110 2021/08/14 17:51:19 ryo Exp $ */
+/* $NetBSD: cpu.h,v 1.111 2023/07/13 12:06:20 riastradh Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -407,6 +407,8 @@ struct cpu_info {
/* Kernel only things. */
#if defined(_KERNEL)
+#include <sys/mutex.h>
+
/*
* definitions of cpu-dependent requirements
* referenced in generic code
Index: src/sys/arch/sparc64/include/cpu.h
diff -u src/sys/arch/sparc64/include/cpu.h:1.133 src/sys/arch/sparc64/include/cpu.h:1.134
--- src/sys/arch/sparc64/include/cpu.h:1.133 Sat Aug 14 17:51:19 2021
+++ src/sys/arch/sparc64/include/cpu.h Thu Jul 13 12:06:20 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.133 2021/08/14 17:51:19 ryo Exp $ */
+/* $NetBSD: cpu.h,v 1.134 2023/07/13 12:06:20 riastradh Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -89,6 +89,7 @@ struct cacheinfo {
#endif
#include <sys/cpu_data.h>
+#include <sys/mutex.h>
#include <sys/evcnt.h>
/*
Index: src/sys/arch/x86/include/cpu.h
diff -u src/sys/arch/x86/include/cpu.h:1.133 src/sys/arch/x86/include/cpu.h:1.134
--- src/sys/arch/x86/include/cpu.h:1.133 Wed Sep 7 00:40:18 2022
+++ src/sys/arch/x86/include/cpu.h Thu Jul 13 12:06:20 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.133 2022/09/07 00:40:18 knakahara Exp $ */
+/* $NetBSD: cpu.h,v 1.134 2023/07/13 12:06:20 riastradh Exp $ */
/*
* Copyright (c) 1990 The Regents of the University of California.
@@ -65,6 +65,10 @@
#include <sys/evcnt.h>
#include <sys/device_if.h> /* for device_t */
+#ifdef SVS
+#include <sys/mutex.h>
+#endif
+
#ifdef XEN
#include <xen/include/public/xen.h>
#include <xen/include/public/event_channel.h>
Index: src/sys/sys/cpu_data.h
diff -u src/sys/sys/cpu_data.h:1.53 src/sys/sys/cpu_data.h:1.54
--- src/sys/sys/cpu_data.h:1.53 Fri Jul 7 12:34:50 2023
+++ src/sys/sys/cpu_data.h Thu Jul 13 12:06:20 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu_data.h,v 1.53 2023/07/07 12:34:50 riastradh Exp $ */
+/* $NetBSD: cpu_data.h,v 1.54 2023/07/13 12:06:20 riastradh Exp $ */
/*-
* Copyright (c) 2004, 2006, 2007, 2008, 2019, 2020 The NetBSD Foundation, Inc.
@@ -44,6 +44,7 @@ struct lwp;
#include <sys/queue.h>
#include <sys/kcpuset.h>
#include <sys/ipi.h>
+#include <sys/intr.h>
/* Per-CPU counters. New elements must be added in blocks of 8. */
enum cpu_count {
Index: src/sys/sys/sched.h
diff -u src/sys/sys/sched.h:1.91 src/sys/sys/sched.h:1.92
--- src/sys/sys/sched.h:1.91 Wed Oct 26 23:24:09 2022
+++ src/sys/sys/sched.h Thu Jul 13 12:06:20 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: sched.h,v 1.91 2022/10/26 23:24:09 riastradh Exp $ */
+/* $NetBSD: sched.h,v 1.92 2023/07/13 12:06:20 riastradh Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2007, 2008, 2019, 2020
@@ -142,10 +142,11 @@ __END_DECLS
#if defined(_KERNEL) || defined(_KMEMUSER)
-#include <sys/mutex.h>
#include <sys/time.h>
#include <sys/queue.h>
+struct kmutex;
+
/*
* Per-CPU scheduler state. Field markings and the corresponding locks:
*
@@ -155,8 +156,8 @@ __END_DECLS
* c: cpu_lock
*/
struct schedstate_percpu {
- kmutex_t *spc_mutex; /* (: lock on below, runnable LWPs */
- kmutex_t *spc_lwplock; /* (: general purpose lock for LWPs */
+ struct kmutex *spc_mutex; /* (: lock on below, runnable LWPs */
+ struct kmutex *spc_lwplock; /* (: general purpose lock for LWPs */
struct lwp *spc_migrating; /* (: migrating LWP */
struct cpu_info *spc_nextpkg; /* (: next package 1st for RR */
psetid_t spc_psid; /* c: processor-set ID */