summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_switch.c
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2007-10-08 23:37:28 +0000
committerjeff <jeff@FreeBSD.org>2007-10-08 23:37:28 +0000
commit5e4673913f615ecdd71ea60704f3cf47f6814fb7 (patch)
tree2e05a31ed9c831b5635442643ae81d902d2db071 /sys/kern/kern_switch.c
parentd8b226b0b03e3ec0ac9b713766a362198204083c (diff)
downloadFreeBSD-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.c13
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,
OpenPOWER on IntegriCloud