cvs commit: src/sys/i386/i386 trap.c src/sys/kern kern_exit.c kern_switch.c kern_synch.c src/sys/sys proc.h thread.h
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Oct 16 15:27:01 PDT 2003
dillon 2003/10/16 15:26:42 PDT
Modified files:
sys/i386/i386 trap.c
sys/kern kern_exit.c kern_switch.c kern_synch.c
sys/sys proc.h thread.h
Log:
Fix the userland scheduler. When the scheduler releases the P_CURPROC
designation it unconditionally handed it off to the highest priority
process on the userland process queue, ignoring the fact that the 'current'
process might have had a higher priority. There was also a missing call to
lwkt_maybe_switch() in the resched_wanted() case that could cause interrupt
threads to stall for a long period of time when they could not preempt.
In SMP there are still some issues. Niced processes work better, but at
the moment the P_CURPROC handoff does not take into account the fact that
the new higher priority process might better be handed off to another cpu
that is running a lower priority process then the current cpu.
Revision Changes Path
1.35 +15 -15 src/sys/i386/i386/trap.c
1.24 +1 -1 src/sys/kern/kern_exit.c
1.10 +12 -6 src/sys/kern/kern_switch.c
1.23 +3 -1 src/sys/kern/kern_synch.c
1.32 +1 -1 src/sys/sys/proc.h
1.35 +1 -0 src/sys/sys/thread.h
More information about the Commits
mailing list