git: bff02948ed87 - main - sched_4bsd: use the same switch flags as ULE
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 09 Feb 2023 16:02:45 UTC
The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=bff02948ed87a9e791fa901557a88ae545bf3df7 commit bff02948ed87a9e791fa901557a88ae545bf3df7 Author: Mitchell Horne <mhorne@FreeBSD.org> AuthorDate: 2023-02-09 15:39:12 +0000 Commit: Mitchell Horne <mhorne@FreeBSD.org> CommitDate: 2023-02-09 16:01:32 +0000 sched_4bsd: use the same switch flags as ULE ULE uses the more specific SWT_REMOTEPREEMPT and SWT_REMOTEWAKEIDLE switch types, let's do that here as well. SWT_PREEMPT is somewhat redundant when we also have the SW_PREEMPT flag. This only has an effect for kernels built with SCHED_STATS. Reviewed by: kib, markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D38183 --- sys/kern/sched_4bsd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c index 8bd697a67e7e..f0da4f8d8496 100644 --- a/sys/kern/sched_4bsd.c +++ b/sys/kern/sched_4bsd.c @@ -1542,13 +1542,17 @@ sched_choose(void) void sched_preempt(struct thread *td) { + int flags; SDT_PROBE2(sched, , , surrender, td, td->td_proc); if (td->td_critnest > 1) { td->td_owepreempt = 1; } else { thread_lock(td); - mi_switch(SW_INVOL | SW_PREEMPT | SWT_PREEMPT); + flags = SW_INVOL | SW_PREEMPT; + flags |= TD_IS_IDLETHREAD(td) ? SWT_REMOTEWAKEIDLE : + SWT_REMOTEPREEMPT; + mi_switch(flags); } }