diff options
author | jeff <jeff@FreeBSD.org> | 2007-10-08 23:37:28 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2007-10-08 23:37:28 +0000 |
commit | 5e4673913f615ecdd71ea60704f3cf47f6814fb7 (patch) | |
tree | 2e05a31ed9c831b5635442643ae81d902d2db071 /sys/kern/kern_switch.c | |
parent | d8b226b0b03e3ec0ac9b713766a362198204083c (diff) | |
download | FreeBSD-src-5e4673913f615ecdd71ea60704f3cf47f6814fb7.zip FreeBSD-src-5e4673913f615ecdd71ea60704f3cf47f6814fb7.tar.gz |
- Fix ULE in kernels without PREEMPTION compiled in by always enabling the
critical_exit() owepreempt check. ULE will always use owepreempt to
preempt the idle thread. This change does not effect 4BSD since it will
never set owepreempt without PREEMPTION enabled.
- Remove some unused code from choosethread().
Discussed with: jhb
Approved by: re
Diffstat (limited to 'sys/kern/kern_switch.c')
-rw-r--r-- | sys/kern/kern_switch.c | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/sys/kern/kern_switch.c b/sys/kern/kern_switch.c index 8ff7092..994e604 100644 --- a/sys/kern/kern_switch.c +++ b/sys/kern/kern_switch.c @@ -133,16 +133,6 @@ choosethread(void) { struct thread *td; -#if defined(SMP) && (defined(__i386__) || defined(__amd64__)) - if (smp_active == 0 && PCPU_GET(cpuid) != 0) { - /* Shutting down, run idlethread on AP's */ - td = PCPU_GET(idlethread); - CTR1(KTR_RUNQ, "choosethread: td=%p (idle)", td); - TD_SET_RUNNING(td); - return (td); - } -#endif - retry: td = sched_choose(); @@ -184,7 +174,7 @@ critical_exit(void) td = curthread; KASSERT(td->td_critnest != 0, ("critical_exit: td_critnest == 0")); -#ifdef PREEMPTION + if (td->td_critnest == 1) { td->td_critnest = 0; if (td->td_owepreempt) { @@ -196,7 +186,6 @@ critical_exit(void) thread_unlock(td); } } else -#endif td->td_critnest--; CTR4(KTR_CRITICAL, "critical_exit by thread %p (%ld, %s) to %d", td, |