Module Name: src
Committed By: ad
Date: Wed Oct 4 20:28:06 UTC 2023
Modified Files:
src/sys/arch/aarch64/aarch64: trap.c
src/sys/arch/amd64/amd64: cpufunc.S genassym.cf
src/sys/arch/arm/arm: arm_machdep.c
src/sys/arch/i386/i386: cpufunc.S genassym.cf
src/sys/arch/mips/mips: cpu_subr.c
src/sys/arch/sparc64/sparc64: machdep.c
src/sys/arch/usermode/dev: cpu.c
src/sys/arch/x86/include: pmap_private.h
src/sys/arch/x86/x86: pmap.c x86_machdep.c
src/sys/kern: kern_cctr.c kern_entropy.c kern_exit.c kern_lock.c
kern_lwp.c kern_proc.c kern_resource.c kern_synch.c
subr_pserialize.c
src/sys/rump/librump/rumpkern: lwproc.c scheduler.c
src/sys/sys: lwp.h
Log Message:
Eliminate l->l_ncsw and l->l_nivcsw. From memory think they were added
before we had per-LWP struct rusage; the same is now tracked there.
To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 src/sys/arch/aarch64/aarch64/trap.c
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/amd64/amd64/cpufunc.S
cvs rdiff -u -r1.96 -r1.97 src/sys/arch/amd64/amd64/genassym.cf
cvs rdiff -u -r1.67 -r1.68 src/sys/arch/arm/arm/arm_machdep.c
cvs rdiff -u -r1.49 -r1.50 src/sys/arch/i386/i386/cpufunc.S
cvs rdiff -u -r1.134 -r1.135 src/sys/arch/i386/i386/genassym.cf
cvs rdiff -u -r1.63 -r1.64 src/sys/arch/mips/mips/cpu_subr.c
cvs rdiff -u -r1.306 -r1.307 src/sys/arch/sparc64/sparc64/machdep.c
cvs rdiff -u -r1.83 -r1.84 src/sys/arch/usermode/dev/cpu.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/x86/include/pmap_private.h
cvs rdiff -u -r1.425 -r1.426 src/sys/arch/x86/x86/pmap.c
cvs rdiff -u -r1.153 -r1.154 src/sys/arch/x86/x86/x86_machdep.c
cvs rdiff -u -r1.12 -r1.13 src/sys/kern/kern_cctr.c
cvs rdiff -u -r1.65 -r1.66 src/sys/kern/kern_entropy.c
cvs rdiff -u -r1.293 -r1.294 src/sys/kern/kern_exit.c
cvs rdiff -u -r1.186 -r1.187 src/sys/kern/kern_lock.c
cvs rdiff -u -r1.257 -r1.258 src/sys/kern/kern_lwp.c
cvs rdiff -u -r1.271 -r1.272 src/sys/kern/kern_proc.c
cvs rdiff -u -r1.194 -r1.195 src/sys/kern/kern_resource.c
cvs rdiff -u -r1.360 -r1.361 src/sys/kern/kern_synch.c
cvs rdiff -u -r1.23 -r1.24 src/sys/kern/subr_pserialize.c
cvs rdiff -u -r1.54 -r1.55 src/sys/rump/librump/rumpkern/lwproc.c
cvs rdiff -u -r1.53 -r1.54 src/sys/rump/librump/rumpkern/scheduler.c
cvs rdiff -u -r1.224 -r1.225 src/sys/sys/lwp.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/aarch64/aarch64/trap.c
diff -u src/sys/arch/aarch64/aarch64/trap.c:1.49 src/sys/arch/aarch64/aarch64/trap.c:1.50
--- src/sys/arch/aarch64/aarch64/trap.c:1.49 Sun Jul 16 21:36:40 2023
+++ src/sys/arch/aarch64/aarch64/trap.c Wed Oct 4 20:28:05 2023
@@ -1,7 +1,7 @@
-/* $NetBSD: trap.c,v 1.49 2023/07/16 21:36:40 riastradh Exp $ */
+/* $NetBSD: trap.c,v 1.50 2023/10/04 20:28:05 ad Exp $ */
/*-
- * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * Copyright (c) 2014, 2023 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -31,7 +31,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.49 2023/07/16 21:36:40 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.50 2023/10/04 20:28:05 ad Exp $");
#include "opt_arm_intr_impl.h"
#include "opt_compat_netbsd32.h"
@@ -1034,8 +1034,8 @@ do_trapsignal1(
bool
cpu_intr_p(void)
{
- uint64_t ncsw;
int idepth;
+ long pctr;
lwp_t *l;
#ifdef __HAVE_PIC_FAST_SOFTINTS
@@ -1050,11 +1050,9 @@ cpu_intr_p(void)
return false;
}
do {
- ncsw = l->l_ncsw;
- __insn_barrier();
+ pctr = lwp_pctr();
idepth = l->l_cpu->ci_intr_depth;
- __insn_barrier();
- } while (__predict_false(ncsw != l->l_ncsw));
+ } while (__predict_false(pctr != lwp_pctr()));
return idepth > 0;
}
Index: src/sys/arch/amd64/amd64/cpufunc.S
diff -u src/sys/arch/amd64/amd64/cpufunc.S:1.65 src/sys/arch/amd64/amd64/cpufunc.S:1.66
--- src/sys/arch/amd64/amd64/cpufunc.S:1.65 Mon Nov 30 17:02:27 2020
+++ src/sys/arch/amd64/amd64/cpufunc.S Wed Oct 4 20:28:05 2023
@@ -1,7 +1,7 @@
-/* $NetBSD: cpufunc.S,v 1.65 2020/11/30 17:02:27 bouyer Exp $ */
+/* $NetBSD: cpufunc.S,v 1.66 2023/10/04 20:28:05 ad Exp $ */
/*
- * Copyright (c) 1998, 2007, 2008, 2020 The NetBSD Foundation, Inc.
+ * Copyright (c) 1998, 2007, 2008, 2020, 2023 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -234,12 +234,13 @@ END(x86_hotpatch)
#define CPU_COUNTER_FENCE(counter, fence) \
ENTRY(cpu_ ## counter ## _ ## fence) ;\
movq CPUVAR(CURLWP), %rcx ;\
+ leaq L_RU+RU_NIVCSW(%rcx), %rcx ;\
1: ;\
- movq L_NCSW(%rcx), %rdi ;\
+ movq (%rcx), %rdi ;\
SERIALIZE_ ## fence ;\
rdtsc ;\
ADD_ ## counter ;\
- cmpq %rdi, L_NCSW(%rcx) ;\
+ cmpq %rdi, (%rcx) ;\
jne 2f ;\
KMSAN_INIT_RET(RSIZE_ ## counter) ;\
ret ;\
@@ -256,13 +257,14 @@ CPU_COUNTER_FENCE(counter32, mfence)
ENTRY(cpu_ ## counter ## _cpuid) ;\
movq %rbx, %r9 ;\
movq CPUVAR(CURLWP), %r8 ;\
+ leaq L_RU+RU_NIVCSW(%r8), %r8 ;\
1: ;\
- movq L_NCSW(%r8), %rdi ;\
+ movq (%r8), %rdi ;\
xor %eax, %eax ;\
cpuid ;\
rdtsc ;\
ADD_ ## counter ;\
- cmpq %rdi, L_NCSW(%r8) ;\
+ cmpq %rdi, (%r8) ;\
jne 2f ;\
movq %r9, %rbx ;\
KMSAN_INIT_RET(RSIZE_ ## counter) ;\
Index: src/sys/arch/amd64/amd64/genassym.cf
diff -u src/sys/arch/amd64/amd64/genassym.cf:1.96 src/sys/arch/amd64/amd64/genassym.cf:1.97
--- src/sys/arch/amd64/amd64/genassym.cf:1.96 Sat Sep 23 14:41:15 2023
+++ src/sys/arch/amd64/amd64/genassym.cf Wed Oct 4 20:28:05 2023
@@ -1,7 +1,7 @@
-# $NetBSD: genassym.cf,v 1.96 2023/09/23 14:41:15 ad Exp $
+# $NetBSD: genassym.cf,v 1.97 2023/10/04 20:28:05 ad Exp $
#
-# Copyright (c) 1998, 2006, 2007, 2008 The NetBSD Foundation, Inc.
+# Copyright (c) 1998, 2006, 2007, 2008, 2023 The NetBSD Foundation, Inc.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
@@ -157,13 +157,15 @@ define L_PCB offsetof(struct lwp, l_ad
define L_CPU offsetof(struct lwp, l_cpu)
define L_FLAG offsetof(struct lwp, l_flag)
define L_PROC offsetof(struct lwp, l_proc)
-define L_NCSW offsetof(struct lwp, l_ncsw)
+define L_RU offsetof(struct lwp, l_ru)
define L_NOPREEMPT offsetof(struct lwp, l_nopreempt)
define L_DOPREEMPT offsetof(struct lwp, l_dopreempt)
define L_MD_REGS offsetof(struct lwp, l_md.md_regs)
define L_MD_FLAGS offsetof(struct lwp, l_md.md_flags)
define L_MD_ASTPENDING offsetof(struct lwp, l_md.md_astpending)
+define RU_NIVCSW offsetof(struct rusage, ru_nivcsw)
+
define LW_SYSTEM LW_SYSTEM
define MDL_IRET MDL_IRET
define MDL_COMPAT32 MDL_COMPAT32
Index: src/sys/arch/arm/arm/arm_machdep.c
diff -u src/sys/arch/arm/arm/arm_machdep.c:1.67 src/sys/arch/arm/arm/arm_machdep.c:1.68
--- src/sys/arch/arm/arm/arm_machdep.c:1.67 Sun Feb 21 08:47:13 2021
+++ src/sys/arch/arm/arm/arm_machdep.c Wed Oct 4 20:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: arm_machdep.c,v 1.67 2021/02/21 08:47:13 skrll Exp $ */
+/* $NetBSD: arm_machdep.c,v 1.68 2023/10/04 20:28:05 ad Exp $ */
/*
* Copyright (c) 2001 Wasabi Systems, Inc.
@@ -80,7 +80,7 @@
#include <sys/param.h>
-__KERNEL_RCSID(0, "$NetBSD: arm_machdep.c,v 1.67 2021/02/21 08:47:13 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: arm_machdep.c,v 1.68 2023/10/04 20:28:05 ad Exp $");
#include <sys/atomic.h>
#include <sys/cpu.h>
@@ -284,20 +284,18 @@ cpu_intr_p(void)
#ifdef __HAVE_PIC_FAST_SOFTINTS
int cpl;
#endif
- uint64_t ncsw;
int idepth;
+ long pctr;
lwp_t *l;
l = curlwp;
do {
- ncsw = l->l_ncsw;
- __insn_barrier();
+ pctr = lwp_pctr();
idepth = l->l_cpu->ci_intr_depth;
#ifdef __HAVE_PIC_FAST_SOFTINTS
cpl = l->l_cpu->ci_cpl;
#endif
- __insn_barrier();
- } while (__predict_false(ncsw != l->l_ncsw));
+ } while (__predict_false(pctr != lwp_pctr()));
#ifdef __HAVE_PIC_FAST_SOFTINTS
if (cpl < IPL_VM)
Index: src/sys/arch/i386/i386/cpufunc.S
diff -u src/sys/arch/i386/i386/cpufunc.S:1.49 src/sys/arch/i386/i386/cpufunc.S:1.50
--- src/sys/arch/i386/i386/cpufunc.S:1.49 Sun Jul 19 07:35:08 2020
+++ src/sys/arch/i386/i386/cpufunc.S Wed Oct 4 20:28:05 2023
@@ -1,7 +1,7 @@
-/* $NetBSD: cpufunc.S,v 1.49 2020/07/19 07:35:08 maxv Exp $ */
+/* $NetBSD: cpufunc.S,v 1.50 2023/10/04 20:28:05 ad Exp $ */
/*-
- * Copyright (c) 1998, 2007, 2020 The NetBSD Foundation, Inc.
+ * Copyright (c) 1998, 2007, 2020, 2023 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -38,7 +38,7 @@
#include <sys/errno.h>
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: cpufunc.S,v 1.49 2020/07/19 07:35:08 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.S,v 1.50 2023/10/04 20:28:05 ad Exp $");
#include "opt_xen.h"
@@ -174,12 +174,13 @@ END(msr_onfault)
ENTRY(cpu_ ## counter ## _ ## fence) ;\
pushl %ebx ;\
movl CPUVAR(CURLWP), %ecx ;\
+ leal L_RU+RU_NIVCSW(%ecx), %ecx ;\
1: ;\
- movl L_NCSW(%ecx), %ebx ;\
+ movl (%ecx), %ebx ;\
SERIALIZE_ ## fence ;\
rdtsc ;\
ADD_ ## counter ;\
- cmpl %ebx, L_NCSW(%ecx) ;\
+ cmpl %ebx, (%ecx) ;\
jne 2f ;\
popl %ebx ;\
ret ;\
@@ -197,15 +198,16 @@ ENTRY(cpu_ ## counter ## _cpuid) ;\
pushl %ebx ;\
pushl %esi ;\
movl CPUVAR(CURLWP), %ecx ;\
+ leal L_RU+RU_NIVCSW(%ecx), %ecx ;\
1: ;\
- movl L_NCSW(%ecx), %esi ;\
+ movl (%ecx), %esi ;\
pushl %ecx ;\
xor %eax, %eax ;\
cpuid ;\
rdtsc ;\
ADD_ ## counter ;\
popl %ecx ;\
- cmpl %esi, L_NCSW(%ecx) ;\
+ cmpl %esi, (%ecx) ;\
jne 2f ;\
popl %esi ;\
popl %ebx ;\
Index: src/sys/arch/i386/i386/genassym.cf
diff -u src/sys/arch/i386/i386/genassym.cf:1.134 src/sys/arch/i386/i386/genassym.cf:1.135
--- src/sys/arch/i386/i386/genassym.cf:1.134 Sat Sep 23 14:41:15 2023
+++ src/sys/arch/i386/i386/genassym.cf Wed Oct 4 20:28:05 2023
@@ -1,7 +1,7 @@
-# $NetBSD: genassym.cf,v 1.134 2023/09/23 14:41:15 ad Exp $
+# $NetBSD: genassym.cf,v 1.135 2023/10/04 20:28:05 ad Exp $
#
-# Copyright (c) 1998, 2006, 2007, 2008 The NetBSD Foundation, Inc.
+# Copyright (c) 1998, 2006, 2007, 2008, 2023 The NetBSD Foundation, Inc.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
@@ -166,13 +166,15 @@ define L_PCB offsetof(struct lwp, l_ad
define L_CPU offsetof(struct lwp, l_cpu)
define L_FLAG offsetof(struct lwp, l_flag)
define L_PROC offsetof(struct lwp, l_proc)
-define L_NCSW offsetof(struct lwp, l_ncsw)
+define L_RU offsetof(struct lwp, l_ru)
define L_NOPREEMPT offsetof(struct lwp, l_nopreempt)
define L_DOPREEMPT offsetof(struct lwp, l_dopreempt)
define L_MD_REGS offsetof(struct lwp, l_md.md_regs)
define L_MD_FLAGS offsetof(struct lwp, l_md.md_flags)
define L_MD_ASTPENDING offsetof(struct lwp, l_md.md_astpending)
+define RU_NIVCSW offsetof(struct rusage, ru_nivcsw)
+
define LW_SYSTEM LW_SYSTEM
define MDL_FPU_IN_CPU MDL_FPU_IN_CPU
Index: src/sys/arch/mips/mips/cpu_subr.c
diff -u src/sys/arch/mips/mips/cpu_subr.c:1.63 src/sys/arch/mips/mips/cpu_subr.c:1.64
--- src/sys/arch/mips/mips/cpu_subr.c:1.63 Sun Feb 26 07:13:54 2023
+++ src/sys/arch/mips/mips/cpu_subr.c Wed Oct 4 20:28:05 2023
@@ -1,7 +1,7 @@
-/* $NetBSD: cpu_subr.c,v 1.63 2023/02/26 07:13:54 skrll Exp $ */
+/* $NetBSD: cpu_subr.c,v 1.64 2023/10/04 20:28:05 ad Exp $ */
/*-
- * Copyright (c) 2010, 2019 The NetBSD Foundation, Inc.
+ * Copyright (c) 2010, 2019, 2023 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu_subr.c,v 1.63 2023/02/26 07:13:54 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu_subr.c,v 1.64 2023/10/04 20:28:05 ad Exp $");
#include "opt_cputype.h"
#include "opt_ddb.h"
@@ -625,17 +625,15 @@ cpu_idle(void)
bool
cpu_intr_p(void)
{
- uint64_t ncsw;
int idepth;
+ long pctr;
lwp_t *l;
l = curlwp;
do {
- ncsw = l->l_ncsw;
- __insn_barrier();
+ pctr = lwp_pctr();
idepth = l->l_cpu->ci_idepth;
- __insn_barrier();
- } while (__predict_false(ncsw != l->l_ncsw));
+ } while (__predict_false(pctr != lwp_pctr()));
return idepth != 0;
}
Index: src/sys/arch/sparc64/sparc64/machdep.c
diff -u src/sys/arch/sparc64/sparc64/machdep.c:1.306 src/sys/arch/sparc64/sparc64/machdep.c:1.307
--- src/sys/arch/sparc64/sparc64/machdep.c:1.306 Wed Oct 26 23:38:08 2022
+++ src/sys/arch/sparc64/sparc64/machdep.c Wed Oct 4 20:28:05 2023
@@ -1,7 +1,7 @@
-/* $NetBSD: machdep.c,v 1.306 2022/10/26 23:38:08 riastradh Exp $ */
+/* $NetBSD: machdep.c,v 1.307 2023/10/04 20:28:05 ad Exp $ */
/*-
- * Copyright (c) 1996, 1997, 1998, 2019 The NetBSD Foundation, Inc.
+ * Copyright (c) 1996, 1997, 1998, 2019, 2023 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -71,7 +71,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.306 2022/10/26 23:38:08 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.307 2023/10/04 20:28:05 ad Exp $");
#include "opt_ddb.h"
#include "opt_multiprocessor.h"
@@ -2668,17 +2668,15 @@ cpu_signotify(struct lwp *l)
bool
cpu_intr_p(void)
{
- uint64_t ncsw;
int idepth;
+ long pctr;
lwp_t *l;
l = curlwp;
do {
- ncsw = l->l_ncsw;
- __insn_barrier();
+ pctr = lwp_pctr();
idepth = l->l_cpu->ci_idepth;
- __insn_barrier();
- } while (__predict_false(ncsw != l->l_ncsw));
+ } while (__predict_false(pctr != lwp_pctr()));
return idepth >= 0;
}
Index: src/sys/arch/usermode/dev/cpu.c
diff -u src/sys/arch/usermode/dev/cpu.c:1.83 src/sys/arch/usermode/dev/cpu.c:1.84
--- src/sys/arch/usermode/dev/cpu.c:1.83 Tue Dec 3 15:20:59 2019
+++ src/sys/arch/usermode/dev/cpu.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.c,v 1.83 2019/12/03 15:20:59 riastradh Exp $ */
+/* $NetBSD: cpu.c,v 1.84 2023/10/04 20:28:06 ad Exp $ */
/*-
* Copyright (c) 2007 Jared D. McNeill <[email protected]>
@@ -30,7 +30,7 @@
#include "opt_hz.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.83 2019/12/03 15:20:59 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.84 2023/10/04 20:28:06 ad Exp $");
#include <sys/param.h>
#include <sys/conf.h>
@@ -528,17 +528,15 @@ cpu_rootconf(void)
bool
cpu_intr_p(void)
{
- uint64_t ncsw;
int idepth;
+ long pctr;
lwp_t *l;
l = curlwp;
do {
- ncsw = l->l_ncsw;
- __insn_barrier();
+ pctr = lwp_pctr();
idepth = l->l_cpu->ci_idepth;
- __insn_barrier();
- } while (__predict_false(ncsw != l->l_ncsw));
+ } while (__predict_false(pctr != lwp_pctr()));
return idepth >= 0;
}
Index: src/sys/arch/x86/include/pmap_private.h
diff -u src/sys/arch/x86/include/pmap_private.h:1.4 src/sys/arch/x86/include/pmap_private.h:1.5
--- src/sys/arch/x86/include/pmap_private.h:1.4 Sat Sep 24 11:05:18 2022
+++ src/sys/arch/x86/include/pmap_private.h Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap_private.h,v 1.4 2022/09/24 11:05:18 riastradh Exp $ */
+/* $NetBSD: pmap_private.h,v 1.5 2023/10/04 20:28:06 ad Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -197,7 +197,7 @@ struct pmap {
of pmap */
kcpuset_t *pm_xen_ptp_cpus; /* mask of CPUs which have this pmap's
ptp mapped */
- uint64_t pm_ncsw; /* for assertions */
+ long pm_pctr; /* for assertions */
LIST_HEAD(,vm_page) pm_gc_ptp; /* PTPs queued for free */
/* Used by NVMM and Xen */
Index: src/sys/arch/x86/x86/pmap.c
diff -u src/sys/arch/x86/x86/pmap.c:1.425 src/sys/arch/x86/x86/pmap.c:1.426
--- src/sys/arch/x86/x86/pmap.c:1.425 Wed Jul 26 21:45:28 2023
+++ src/sys/arch/x86/x86/pmap.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.425 2023/07/26 21:45:28 riastradh Exp $ */
+/* $NetBSD: pmap.c,v 1.426 2023/10/04 20:28:06 ad Exp $ */
/*
* Copyright (c) 2008, 2010, 2016, 2017, 2019, 2020 The NetBSD Foundation, Inc.
@@ -130,7 +130,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.425 2023/07/26 21:45:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.426 2023/10/04 20:28:06 ad Exp $");
#include "opt_user_ldt.h"
#include "opt_lockdebug.h"
@@ -822,7 +822,7 @@ pmap_map_ptes(struct pmap *pmap, struct
}
KASSERT(ci->ci_tlbstate == TLBSTATE_VALID);
#ifdef DIAGNOSTIC
- pmap->pm_ncsw = lwp_pctr();
+ pmap->pm_pctr = lwp_pctr();
#endif
*ptepp = PTE_BASE;
@@ -861,7 +861,7 @@ pmap_unmap_ptes(struct pmap *pmap, struc
ci = l->l_cpu;
KASSERT(mutex_owned(&pmap->pm_lock));
- KASSERT(pmap->pm_ncsw == lwp_pctr());
+ KASSERT(pmap->pm_pctr == lwp_pctr());
#if defined(XENPV) && defined(__x86_64__)
KASSERT(ci->ci_normal_pdes[PTP_LEVELS - 2] != L4_BASE);
@@ -3573,7 +3573,7 @@ pmap_load(void)
struct cpu_info *ci;
struct pmap *pmap, *oldpmap;
struct lwp *l;
- uint64_t ncsw;
+ uint64_t pctr;
int ilevel __diagused;
u_long psl __diagused;
@@ -3585,7 +3585,7 @@ pmap_load(void)
return;
}
l = ci->ci_curlwp;
- ncsw = l->l_ncsw;
+ pctr = lwp_pctr();
__insn_barrier();
/* should be able to take ipis. */
@@ -3624,7 +3624,7 @@ pmap_load(void)
pmap_destroy(oldpmap);
__insn_barrier();
- if (l->l_ncsw != ncsw) {
+ if (lwp_pctr() != pctr) {
goto retry;
}
Index: src/sys/arch/x86/x86/x86_machdep.c
diff -u src/sys/arch/x86/x86/x86_machdep.c:1.153 src/sys/arch/x86/x86/x86_machdep.c:1.154
--- src/sys/arch/x86/x86/x86_machdep.c:1.153 Fri Dec 23 16:05:44 2022
+++ src/sys/arch/x86/x86/x86_machdep.c Wed Oct 4 20:28:06 2023
@@ -1,8 +1,8 @@
-/* $NetBSD: x86_machdep.c,v 1.153 2022/12/23 16:05:44 bouyer Exp $ */
+/* $NetBSD: x86_machdep.c,v 1.154 2023/10/04 20:28:06 ad Exp $ */
/*-
* Copyright (c) 2002, 2006, 2007 YAMAMOTO Takashi,
- * Copyright (c) 2005, 2008, 2009, 2019 The NetBSD Foundation, Inc.
+ * Copyright (c) 2005, 2008, 2009, 2019, 2023 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: x86_machdep.c,v 1.153 2022/12/23 16:05:44 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: x86_machdep.c,v 1.154 2023/10/04 20:28:06 ad Exp $");
#include "opt_modular.h"
#include "opt_physmem.h"
@@ -380,8 +380,8 @@ cpu_need_proftick(struct lwp *l)
bool
cpu_intr_p(void)
{
- uint64_t ncsw;
int idepth;
+ long pctr;
lwp_t *l;
l = curlwp;
@@ -390,11 +390,9 @@ cpu_intr_p(void)
return false;
}
do {
- ncsw = l->l_ncsw;
- __insn_barrier();
+ pctr = lwp_pctr();
idepth = l->l_cpu->ci_idepth;
- __insn_barrier();
- } while (__predict_false(ncsw != l->l_ncsw));
+ } while (__predict_false(pctr != lwp_pctr()));
return idepth >= 0;
}
Index: src/sys/kern/kern_cctr.c
diff -u src/sys/kern/kern_cctr.c:1.12 src/sys/kern/kern_cctr.c:1.13
--- src/sys/kern/kern_cctr.c:1.12 Sat Oct 10 18:18:04 2020
+++ src/sys/kern/kern_cctr.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_cctr.c,v 1.12 2020/10/10 18:18:04 thorpej Exp $ */
+/* $NetBSD: kern_cctr.c,v 1.13 2023/10/04 20:28:06 ad Exp $ */
/*-
* Copyright (c) 2020 Jason R. Thorpe
@@ -75,7 +75,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_cctr.c,v 1.12 2020/10/10 18:18:04 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_cctr.c,v 1.13 2023/10/04 20:28:06 ad Exp $");
#include <sys/param.h>
#include <sys/atomic.h>
@@ -184,20 +184,14 @@ u_int
cc_get_timecount(struct timecounter *tc)
{
#if defined(MULTIPROCESSOR)
- int64_t rcc, ncsw;
+ int64_t rcc;
+ long pctr;
- retry:
- ncsw = curlwp->l_ncsw;
-
- __insn_barrier();
- /* N.B. the delta is always 0 on the primary. */
- rcc = cpu_counter32() - curcpu()->ci_cc.cc_delta;
- __insn_barrier();
-
- if (ncsw != curlwp->l_ncsw) {
- /* Was preempted */
- goto retry;
- }
+ do {
+ pctr = lwp_pctr();
+ /* N.B. the delta is always 0 on the primary. */
+ rcc = cpu_counter32() - curcpu()->ci_cc.cc_delta;
+ } while (pctr != lwp_pctr());
return rcc;
#else
Index: src/sys/kern/kern_entropy.c
diff -u src/sys/kern/kern_entropy.c:1.65 src/sys/kern/kern_entropy.c:1.66
--- src/sys/kern/kern_entropy.c:1.65 Sat Aug 5 11:21:24 2023
+++ src/sys/kern/kern_entropy.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_entropy.c,v 1.65 2023/08/05 11:21:24 riastradh Exp $ */
+/* $NetBSD: kern_entropy.c,v 1.66 2023/10/04 20:28:06 ad Exp $ */
/*-
* Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_entropy.c,v 1.65 2023/08/05 11:21:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_entropy.c,v 1.66 2023/10/04 20:28:06 ad Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -156,7 +156,7 @@ struct entropy_cpu {
*/
struct entropy_cpu_lock {
int ecl_s;
- uint64_t ecl_ncsw;
+ long ecl_pctr;
};
/*
@@ -541,7 +541,7 @@ entropy_cpu_get(struct entropy_cpu_lock
lock->ecl_s = splsoftserial();
KASSERT(!ec->ec_locked);
ec->ec_locked = true;
- lock->ecl_ncsw = curlwp->l_ncsw;
+ lock->ecl_pctr = lwp_pctr();
__insn_barrier();
return ec;
@@ -555,7 +555,7 @@ entropy_cpu_put(struct entropy_cpu_lock
KASSERT(ec->ec_locked);
__insn_barrier();
- KASSERT(lock->ecl_ncsw == curlwp->l_ncsw);
+ KASSERT(lock->ecl_pctr == lwp_pctr());
ec->ec_locked = false;
splx(lock->ecl_s);
percpu_putref(entropy_percpu);
Index: src/sys/kern/kern_exit.c
diff -u src/sys/kern/kern_exit.c:1.293 src/sys/kern/kern_exit.c:1.294
--- src/sys/kern/kern_exit.c:1.293 Sun Dec 5 08:13:12 2021
+++ src/sys/kern/kern_exit.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_exit.c,v 1.293 2021/12/05 08:13:12 msaitoh Exp $ */
+/* $NetBSD: kern_exit.c,v 1.294 2023/10/04 20:28:06 ad Exp $ */
/*-
* Copyright (c) 1998, 1999, 2006, 2007, 2008, 2020 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_exit.c,v 1.293 2021/12/05 08:13:12 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_exit.c,v 1.294 2023/10/04 20:28:06 ad Exp $");
#include "opt_ktrace.h"
#include "opt_dtrace.h"
@@ -1194,8 +1194,6 @@ proc_free(struct proc *p, struct wrusage
* This cannot be done any earlier else it might get done twice.
*/
l = LIST_FIRST(&p->p_lwps);
- p->p_stats->p_ru.ru_nvcsw += (l->l_ncsw - l->l_nivcsw);
- p->p_stats->p_ru.ru_nivcsw += l->l_nivcsw;
ruadd(&p->p_stats->p_ru, &l->l_ru);
ruadd(&p->p_stats->p_ru, &p->p_stats->p_cru);
ruadd(&parent->p_stats->p_cru, &p->p_stats->p_ru);
Index: src/sys/kern/kern_lock.c
diff -u src/sys/kern/kern_lock.c:1.186 src/sys/kern/kern_lock.c:1.187
--- src/sys/kern/kern_lock.c:1.186 Fri Jul 7 18:02:52 2023
+++ src/sys/kern/kern_lock.c Wed Oct 4 20:28:06 2023
@@ -1,7 +1,8 @@
-/* $NetBSD: kern_lock.c,v 1.186 2023/07/07 18:02:52 riastradh Exp $ */
+/* $NetBSD: kern_lock.c,v 1.187 2023/10/04 20:28:06 ad Exp $ */
/*-
- * Copyright (c) 2002, 2006, 2007, 2008, 2009, 2020 The NetBSD Foundation, Inc.
+ * Copyright (c) 2002, 2006, 2007, 2008, 2009, 2020, 2023
+ * The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -31,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_lock.c,v 1.186 2023/07/07 18:02:52 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_lock.c,v 1.187 2023/10/04 20:28:06 ad Exp $");
#ifdef _KERNEL_OPT
#include "opt_lockdebug.h"
@@ -67,9 +68,8 @@ __cpu_simple_lock_t kernel_lock[CACHE_LI
void
assert_sleepable(void)
{
- struct lwp *l = curlwp;
const char *reason;
- uint64_t ncsw;
+ long pctr;
bool idle;
if (__predict_false(panicstr != NULL)) {
@@ -83,11 +83,9 @@ assert_sleepable(void)
* routine may be called in delicate situations.
*/
do {
- ncsw = l->l_ncsw;
- __insn_barrier();
+ pctr = lwp_pctr();
idle = CURCPU_IDLE_P();
- __insn_barrier();
- } while (__predict_false(ncsw != l->l_ncsw));
+ } while (__predict_false(pctr != lwp_pctr()));
reason = NULL;
if (__predict_false(idle) && !cold) {
Index: src/sys/kern/kern_lwp.c
diff -u src/sys/kern/kern_lwp.c:1.257 src/sys/kern/kern_lwp.c:1.258
--- src/sys/kern/kern_lwp.c:1.257 Sat Sep 23 20:23:07 2023
+++ src/sys/kern/kern_lwp.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_lwp.c,v 1.257 2023/09/23 20:23:07 ad Exp $ */
+/* $NetBSD: kern_lwp.c,v 1.258 2023/10/04 20:28:06 ad Exp $ */
/*-
* Copyright (c) 2001, 2006, 2007, 2008, 2009, 2019, 2020, 2023
@@ -217,7 +217,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.257 2023/09/23 20:23:07 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.258 2023/10/04 20:28:06 ad Exp $");
#include "opt_ddb.h"
#include "opt_lockdebug.h"
@@ -1297,8 +1297,6 @@ lwp_free(struct lwp *l, bool recycle, bo
p->p_pctcpu += l->l_pctcpu;
ru = &p->p_stats->p_ru;
ruadd(ru, &l->l_ru);
- ru->ru_nvcsw += (l->l_ncsw - l->l_nivcsw);
- ru->ru_nivcsw += l->l_nivcsw;
LIST_REMOVE(l, l_sibling);
p->p_nlwps--;
p->p_nzlwps--;
@@ -2139,11 +2137,11 @@ lwp_ctl_exit(void)
* preemption across operations that can tolerate preemption without
* crashing, but which may generate incorrect results if preempted.
*/
-uint64_t
+long
lwp_pctr(void)
{
- return curlwp->l_ncsw;
+ return curlwp->l_ru.ru_nvcsw + curlwp->l_ru.ru_nivcsw;
}
/*
Index: src/sys/kern/kern_proc.c
diff -u src/sys/kern/kern_proc.c:1.271 src/sys/kern/kern_proc.c:1.272
--- src/sys/kern/kern_proc.c:1.271 Mon Sep 4 09:13:23 2023
+++ src/sys/kern/kern_proc.c Wed Oct 4 20:28:06 2023
@@ -1,7 +1,8 @@
-/* $NetBSD: kern_proc.c,v 1.271 2023/09/04 09:13:23 simonb Exp $ */
+/* $NetBSD: kern_proc.c,v 1.272 2023/10/04 20:28:06 ad Exp $ */
/*-
- * Copyright (c) 1999, 2006, 2007, 2008, 2020 The NetBSD Foundation, Inc.
+ * Copyright (c) 1999, 2006, 2007, 2008, 2020, 2023
+ * The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@@ -62,7 +63,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.271 2023/09/04 09:13:23 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.272 2023/10/04 20:28:06 ad Exp $");
#ifdef _KERNEL_OPT
#include "opt_kstack.h"
@@ -2755,7 +2756,7 @@ void
fill_kproc2(struct proc *p, struct kinfo_proc2 *ki, bool zombie, bool allowaddr)
{
struct tty *tp;
- struct lwp *l, *l2;
+ struct lwp *l;
struct timeval ut, st, rt;
sigset_t ss1, ss2;
struct rusage ru;
@@ -2909,13 +2910,9 @@ fill_kproc2(struct proc *p, struct kinfo
ki->p_ustime_usec = st.tv_usec;
memcpy(&ru, &p->p_stats->p_ru, sizeof(ru));
- ki->p_uru_nvcsw = 0;
- ki->p_uru_nivcsw = 0;
- LIST_FOREACH(l2, &p->p_lwps, l_sibling) {
- ki->p_uru_nvcsw += (l2->l_ncsw - l2->l_nivcsw);
- ki->p_uru_nivcsw += l2->l_nivcsw;
- ruadd(&ru, &l2->l_ru);
- }
+ rulwps(p, &ru);
+ ki->p_uru_nvcsw = ru.ru_nvcsw;
+ ki->p_uru_nivcsw = ru.ru_nivcsw;
ki->p_uru_maxrss = ru.ru_maxrss;
ki->p_uru_ixrss = ru.ru_ixrss;
ki->p_uru_idrss = ru.ru_idrss;
Index: src/sys/kern/kern_resource.c
diff -u src/sys/kern/kern_resource.c:1.194 src/sys/kern/kern_resource.c:1.195
--- src/sys/kern/kern_resource.c:1.194 Sat Sep 23 18:21:11 2023
+++ src/sys/kern/kern_resource.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_resource.c,v 1.194 2023/09/23 18:21:11 ad Exp $ */
+/* $NetBSD: kern_resource.c,v 1.195 2023/10/04 20:28:06 ad Exp $ */
/*-
* Copyright (c) 1982, 1986, 1991, 1993
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_resource.c,v 1.194 2023/09/23 18:21:11 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_resource.c,v 1.195 2023/10/04 20:28:06 ad Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -665,8 +665,6 @@ rulwps(proc_t *p, struct rusage *ru)
LIST_FOREACH(l, &p->p_lwps, l_sibling) {
ruadd(ru, &l->l_ru);
- ru->ru_nvcsw += (l->l_ncsw - l->l_nivcsw);
- ru->ru_nivcsw += l->l_nivcsw;
}
}
Index: src/sys/kern/kern_synch.c
diff -u src/sys/kern/kern_synch.c:1.360 src/sys/kern/kern_synch.c:1.361
--- src/sys/kern/kern_synch.c:1.360 Sat Sep 23 20:23:07 2023
+++ src/sys/kern/kern_synch.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_synch.c,v 1.360 2023/09/23 20:23:07 ad Exp $ */
+/* $NetBSD: kern_synch.c,v 1.361 2023/10/04 20:28:06 ad Exp $ */
/*-
* Copyright (c) 1999, 2000, 2004, 2006, 2007, 2008, 2009, 2019, 2020, 2023
@@ -69,7 +69,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_synch.c,v 1.360 2023/09/23 20:23:07 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_synch.c,v 1.361 2023/10/04 20:28:06 ad Exp $");
#include "opt_kstack.h"
#include "opt_ddb.h"
@@ -742,10 +742,11 @@ mi_switch(lwp_t *l)
/* Count the context switch. */
CPU_COUNT(CPU_COUNT_NSWTCH, 1);
- l->l_ncsw++;
if ((l->l_pflag & LP_PREEMPTING) != 0) {
- l->l_nivcsw++;
+ l->l_ru.ru_nivcsw++;
l->l_pflag &= ~LP_PREEMPTING;
+ } else {
+ l->l_ru.ru_nvcsw++;
}
/*
Index: src/sys/kern/subr_pserialize.c
diff -u src/sys/kern/subr_pserialize.c:1.23 src/sys/kern/subr_pserialize.c:1.24
--- src/sys/kern/subr_pserialize.c:1.23 Sun Apr 16 04:52:19 2023
+++ src/sys/kern/subr_pserialize.c Wed Oct 4 20:28:06 2023
@@ -1,7 +1,7 @@
-/* $NetBSD: subr_pserialize.c,v 1.23 2023/04/16 04:52:19 riastradh Exp $ */
+/* $NetBSD: subr_pserialize.c,v 1.24 2023/10/04 20:28:06 ad Exp $ */
/*-
- * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
+ * Copyright (c) 2010, 2011, 2023 The NetBSD Foundation, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_pserialize.c,v 1.23 2023/04/16 04:52:19 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_pserialize.c,v 1.24 2023/10/04 20:28:06 ad Exp $");
#include <sys/param.h>
@@ -174,21 +174,18 @@ pserialize_in_read_section(void)
bool
pserialize_not_in_read_section(void)
{
- struct lwp *l = curlwp;
- uint64_t ncsw;
bool notin;
+ long pctr;
- ncsw = l->l_ncsw;
- __insn_barrier();
+ pctr = lwp_pctr();
notin = __predict_true(curcpu()->ci_psz_read_depth == 0);
- __insn_barrier();
/*
* If we had a context switch, we're definitely not in a
* pserialize read section because pserialize read sections
* block preemption.
*/
- if (__predict_false(ncsw != l->l_ncsw))
+ if (__predict_false(pctr != lwp_pctr()))
notin = true;
return notin;
Index: src/sys/rump/librump/rumpkern/lwproc.c
diff -u src/sys/rump/librump/rumpkern/lwproc.c:1.54 src/sys/rump/librump/rumpkern/lwproc.c:1.55
--- src/sys/rump/librump/rumpkern/lwproc.c:1.54 Wed Feb 22 21:44:45 2023
+++ src/sys/rump/librump/rumpkern/lwproc.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lwproc.c,v 1.54 2023/02/22 21:44:45 riastradh Exp $ */
+/* $NetBSD: lwproc.c,v 1.55 2023/10/04 20:28:06 ad Exp $ */
/*
* Copyright (c) 2010, 2011 Antti Kantee. All Rights Reserved.
@@ -28,7 +28,7 @@
#define RUMP__CURLWP_PRIVATE
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lwproc.c,v 1.54 2023/02/22 21:44:45 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lwproc.c,v 1.55 2023/10/04 20:28:06 ad Exp $");
#include <sys/param.h>
#include <sys/atomic.h>
@@ -513,6 +513,7 @@ rump_lwproc_switch(struct lwp *newlwp)
l->l_pflag &= ~LP_RUNNING;
l->l_flag &= ~LW_PENDSIG;
l->l_stat = LSRUN;
+ l->l_ru.ru_nvcsw++;
if (l->l_flag & LW_WEXIT) {
l->l_stat = LSIDL;
@@ -582,3 +583,10 @@ rump_lwproc_sysent_usenative()
panic("don't use rump_lwproc_sysent_usenative()");
curproc->p_emul = &emul_netbsd;
}
+
+long
+lwp_pctr(void)
+{
+
+ return curlwp->l_ru.ru_nvcsw;
+}
Index: src/sys/rump/librump/rumpkern/scheduler.c
diff -u src/sys/rump/librump/rumpkern/scheduler.c:1.53 src/sys/rump/librump/rumpkern/scheduler.c:1.54
--- src/sys/rump/librump/rumpkern/scheduler.c:1.53 Sat Apr 9 23:45:14 2022
+++ src/sys/rump/librump/rumpkern/scheduler.c Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: scheduler.c,v 1.53 2022/04/09 23:45:14 riastradh Exp $ */
+/* $NetBSD: scheduler.c,v 1.54 2023/10/04 20:28:06 ad Exp $ */
/*
* Copyright (c) 2010, 2011 Antti Kantee. All Rights Reserved.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: scheduler.c,v 1.53 2022/04/09 23:45:14 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: scheduler.c,v 1.54 2023/10/04 20:28:06 ad Exp $");
#include <sys/param.h>
#include <sys/atomic.h>
@@ -372,7 +372,7 @@ rump_schedule_cpu_interlock(struct lwp *
ci = rcpu->rcpu_ci;
l->l_cpu = l->l_target_cpu = ci;
l->l_mutex = rcpu->rcpu_ci->ci_schedstate.spc_mutex;
- l->l_ncsw++;
+ l->l_ru.ru_nvcsw++;
l->l_stat = LSONPROC;
/*
Index: src/sys/sys/lwp.h
diff -u src/sys/sys/lwp.h:1.224 src/sys/sys/lwp.h:1.225
--- src/sys/sys/lwp.h:1.224 Mon Sep 25 18:30:44 2023
+++ src/sys/sys/lwp.h Wed Oct 4 20:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lwp.h,v 1.224 2023/09/25 18:30:44 riastradh Exp $ */
+/* $NetBSD: lwp.h,v 1.225 2023/10/04 20:28:06 ad Exp $ */
/*
* Copyright (c) 2001, 2006, 2007, 2008, 2009, 2010, 2019, 2020, 2023
@@ -121,8 +121,6 @@ struct lwp {
psetid_t l_psid; /* l: assigned processor-set ID */
fixpt_t l_pctcpu; /* p: %cpu during l_swtime */
fixpt_t l_estcpu; /* l: cpu time for SCHED_4BSD */
- volatile uint64_t l_ncsw; /* l: total context switches */
- volatile uint64_t l_nivcsw; /* l: involuntary context switches */
SLIST_HEAD(, turnstile) l_pi_lenders; /* l: ts lending us priority */
struct cpu_info *l_target_cpu; /* l: target CPU to migrate */
struct lwpctl *l_lwpctl; /* p: lwpctl block kernel address */
@@ -381,7 +379,7 @@ lwp_t * lwp_find(proc_t *, int);
void lwp_userret(lwp_t *);
void lwp_need_userret(lwp_t *);
void lwp_free(lwp_t *, bool, bool);
-uint64_t lwp_pctr(void);
+long lwp_pctr(void);
int lwp_setprivate(lwp_t *, void *);
int do_lwp_create(lwp_t *, void *, u_long, lwp_t **, const sigset_t *,
const stack_t *);