KSE Milestone 3 has been running since BSDcon.
Since then things got mightily slowed down due to the birth of my
daughter, a burst in work and t round-the-world trip
(consequence if the birth.... had to show the grandparents on
2 continents you know..)
Now things are moving again.
Jonathon Mini and I have cleaned up the patches a bit
and fixed the more obvious problems..
from teh point of view of non KSE processes
(that would be all of them at the moment) it shuold act the
same as now. Hopefully, changes are restricted to instruction flows that
would only occur in KSE processes.
I would like to commit this in the next couple of days to give it enough
time to settle BEFORE USENIX.
The changes are:
1/ scheduling is done per-thread (simplistic model only at this time)
2/ Scheduling state is therefore kept in the thread.
3/ Process suspencion is a process state and therefore
becomes split from scheduling state. (Threads suspend themselves
at a convenient time when they notice their process has been suspended)
4/ support for basic KSE syscall addition to allow testing
5/ a test program.
6/ Addition of thread allocation and deallocation facilities
7/ Modification of staatus reporting functions to
collect state from the new places.
8/ Modification of DDB to know about threads. (a bit)
9/ Addition of a generic suspension facility to support
thread suspension in addition to exisiting process suspension types.
10/ Required changes to fork/exit to create/remove threads as needed.
11/ changes to sleep/condvars to spawn a new thread when needed in KSE
12/ hack up interrupt delivery to account for the fact that a proces may
be both sleeping and running at the same time (ugh.. help needed there
if you are feeling brave)
Changes for non i386 architectures have not been made.
they are however not great.. we have changes to the following files:
sys/i386/i386/machdep.c (1 line)
sys/i386/i386/swtch.s (a few lines)
sys/i386/i386/vm_machdep.c (largly new functions, we could stub them)
sys/i386/include/kse.h (new file)
sys/i386/include/pcb_ext.h (1 line .. may not be needed)
sys/i386/linux/linux_machdep.c (one line)
if people who know these architectures could send me appropriate
diffs I'll incorporate them.
th diffs can be found at:
This is the next "simplest place to merge".
Once these have been committed then the userland people can
start playing with it,
and people who are experts in signals and such can start optimising these
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message