[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: [wrstuden-revivesa] src/sys/kern
Module Name: src
Committed By: wrstuden
Date: Mon May 12 07:15:11 UTC 2008
src/sys/kern [wrstuden-revivesa]: kern_sa.c sys_sched.c
Reimpliment the preempt() handling from 4.0 SA. This time, however,
do it better. Since every call to preempt() set the "more" paremeter
to true except for one, leave preempt alone and add code to
explicitly handle what preempt() did w/ "more" set to false.
The one case in question is in sys_sched_yield(). Explicitly trigger
generating a BLOCKED upcall, which will also trigger an UNBLOCKED
upcall when we actually return to userland. This will sufficiently
rattle the libpthread scheduler as to let opther threads run.
This is a minor ABI change in that we now always generate the upcalls,
where as in 4.0 we only generated them iff mi_switch() switched us
to another thread. Since userland threads are what matter for an SA
process, I don't think that will hurt us.
To generate a diff of this commit:
cvs rdiff -r188.8.131.52 -r184.108.40.206 src/sys/kern/kern_sa.c
cvs rdiff -r1.21 -r220.127.116.11 src/sys/kern/sys_sched.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Main Index |
Thread Index |