diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2001-06-30 03:11:26 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2001-06-30 03:11:26 +0000 |
| commit | a300519d4178de18f8deaf490e88e28163063138 (patch) | |
| tree | 36ef0fade9a850240727492544cd098938b6e8a2 /sys | |
| parent | 5916bd20ba6635eb38342c1d2b8f8d830ba81bd6 (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/kern/kern_intr.c | 4 | ||||
| -rw-r--r-- | sys/kern/kern_synch.c | 3 |
2 files changed, 3 insertions, 4 deletions
diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index ac9213b098ff..07ee598a4b30 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -344,7 +344,6 @@ ithread_schedule(struct ithd *ithread, int do_switch) { struct int_entropy entropy; struct proc *p; - critical_t savecrit; /* * If no ithread or no handlers, then we have a stray interrupt. @@ -383,13 +382,10 @@ ithread_schedule(struct ithd *ithread, int do_switch) p->p_stat = SRUN; setrunqueue(p); if (do_switch && curproc->p_stat == SRUN) { - savecrit = sched_lock.mtx_savecrit; - mtx_intr_enable(&sched_lock); if (curproc != PCPU_GET(idleproc)) setrunqueue(curproc); curproc->p_stats->p_ru.ru_nivcsw++; mi_switch(); - sched_lock.mtx_savecrit = savecrit; } else need_resched(curproc); } else { diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index 95b98d2a0d83..ce6adb5e091b 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -821,6 +821,7 @@ mi_switch() #if 0 register struct rlimit *rlim; #endif + critical_t sched_crit; u_int sched_nest; mtx_assert(&sched_lock, MA_OWNED | MA_NOTRECURSED); @@ -881,12 +882,14 @@ mi_switch() PCPU_SET(switchtime, new_switchtime); CTR3(KTR_PROC, "mi_switch: old proc %p (pid %d, %s)", p, p->p_pid, p->p_comm); + sched_crit = sched_lock.mtx_savecrit; sched_nest = sched_lock.mtx_recurse; curproc->p_lastcpu = curproc->p_oncpu; curproc->p_oncpu = NOCPU; clear_resched(curproc); cpu_switch(); curproc->p_oncpu = PCPU_GET(cpuid); + sched_lock.mtx_savecrit = sched_crit; sched_lock.mtx_recurse = sched_nest; sched_lock.mtx_lock = (uintptr_t)curproc; CTR3(KTR_PROC, "mi_switch: new proc %p (pid %d, %s)", p, p->p_pid, |
