summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2004-08-11 20:54:48 +0000
committerjulian <julian@FreeBSD.org>2004-08-11 20:54:48 +0000
commit765ec5c83bd7d7bd0a1d56b931ae040a3daebef5 (patch)
tree1676527bfde26a289e43ef3dd7623cd522440de8 /sys/kern
parente4f9b5dde9587273c2c66332f4c08fb95f9f53e3 (diff)
downloadFreeBSD-src-765ec5c83bd7d7bd0a1d56b931ae040a3daebef5.zip
FreeBSD-src-765ec5c83bd7d7bd0a1d56b931ae040a3daebef5.tar.gz
Properly keep track of how many kses are on the system run queue(s).
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/sched_4bsd.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c
index 2f6d0ad..c35e3dc 100644
--- a/sys/kern/sched_4bsd.c
+++ b/sys/kern/sched_4bsd.c
@@ -718,8 +718,6 @@ sched_add(struct thread *td)
#endif
if (maybe_preempt(td))
return;
- ke->ke_ksegrp->kg_runq_kses++;
- ke->ke_state = KES_ONRUNQ;
#ifdef SMP
if (KSE_CAN_MIGRATE(ke)) {
@@ -737,6 +735,8 @@ sched_add(struct thread *td)
if ((td->td_proc->p_flag & P_NOLOAD) == 0)
sched_tdcnt++;
runq_add(ke->ke_runq, ke);
+ ke->ke_ksegrp->kg_runq_kses++;
+ ke->ke_state = KES_ONRUNQ;
maybe_resched(td);
}
@@ -792,6 +792,7 @@ sched_choose(void)
if (ke != NULL) {
runq_remove(rq, ke);
ke->ke_state = KES_THREAD;
+ ke->ke_ksegrp->kg_runq_kses--;
KASSERT((ke->ke_thread != NULL),
("sched_choose: No thread on KSE"));
OpenPOWER on IntegriCloud