Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys schedstate_percpu: add new flag SPCF_IDLE as a cheap and...
details: https://anonhg.NetBSD.org/src/rev/b5a39fe612a7
branches: trunk
changeset: 967760:b5a39fe612a7
user: ad <ad%NetBSD.org@localhost>
date: Sat Dec 21 11:54:04 2019 +0000
description:
schedstate_percpu: add new flag SPCF_IDLE as a cheap and easy way to
determine that a CPU is currently idle.
diffstat:
sys/kern/kern_synch.c | 8 +++++---
sys/sys/sched.h | 3 ++-
2 files changed, 7 insertions(+), 4 deletions(-)
diffs (57 lines):
diff -r 6f78e7ab0269 -r b5a39fe612a7 sys/kern/kern_synch.c
--- a/sys/kern/kern_synch.c Sat Dec 21 11:41:18 2019 +0000
+++ b/sys/kern/kern_synch.c Sat Dec 21 11:54:04 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_synch.c,v 1.333 2019/12/20 21:52:51 ad Exp $ */
+/* $NetBSD: kern_synch.c,v 1.334 2019/12/21 11:54:04 ad Exp $ */
/*-
* Copyright (c) 1999, 2000, 2004, 2006, 2007, 2008, 2009, 2019
@@ -69,7 +69,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_synch.c,v 1.333 2019/12/20 21:52:51 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_synch.c,v 1.334 2019/12/21 11:54:04 ad Exp $");
#include "opt_kstack.h"
#include "opt_dtrace.h"
@@ -487,10 +487,13 @@
newl->l_stat = LSONPROC;
newl->l_pflag |= LP_RUNNING;
lwp_setlock(newl, spc->spc_lwplock);
+ spc->spc_flags &= ~(SPCF_SWITCHCLEAR | SPCF_IDLE);
} else {
newl = ci->ci_data.cpu_idlelwp;
newl->l_stat = LSONPROC;
newl->l_pflag |= LP_RUNNING;
+ spc->spc_flags = (spc->spc_flags & ~SPCF_SWITCHCLEAR) |
+ SPCF_IDLE;
}
/*
@@ -501,7 +504,6 @@
* the release of spc_mutex becomes globally visible.
*/
ci->ci_want_resched = ci->ci_data.cpu_softints;
- spc->spc_flags &= ~SPCF_SWITCHCLEAR;
spc->spc_curpriority = lwp_eprio(newl);
return newl;
diff -r 6f78e7ab0269 -r b5a39fe612a7 sys/sys/sched.h
--- a/sys/sys/sched.h Sat Dec 21 11:41:18 2019 +0000
+++ b/sys/sys/sched.h Sat Dec 21 11:54:04 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: sched.h,v 1.81 2019/12/20 21:05:34 ad Exp $ */
+/* $NetBSD: sched.h,v 1.82 2019/12/21 11:54:04 ad Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2007, 2008, 2019
@@ -187,6 +187,7 @@
#define SPCF_RUNNING 0x0008 /* CPU is running */
#define SPCF_NOINTR 0x0010 /* shielded from interrupts */
#define SPCF_SMTPRIMARY 0x0020 /* CPU is first thread in core */
+#define SPCF_IDLE 0x0040 /* CPU is currently idle */
#define SPCF_SWITCHCLEAR (SPCF_SEENRR|SPCF_SHOULDYIELD)
Home |
Main Index |
Thread Index |
Old Index