At 16.57 05/11/2004, you wrote:
P.S. The thread dispatching that is currently in Ps
should be moved to Ke.
Fun fact about the scheduler: the reason there's both KeXxx and PsXxx
scheduling functions, and both KTHREAD and ETHREAD, is yet other leftover
from the initial microkernel design. Basically, KeXxx is the kerner proper
(the rest of the kernel is called "executive"), in the microkernel sense of
the term: it only does scheduling and obscure low-level
architecture-specific stuff. It doesn't care about how are threads created,
how are they maintained alive and when they are destroyed: it just requires
its subsystems to please hold the dispatcher lock while they add or remove
threads to its queues. It effectively allows for multiple kernels to
coexist with the same scheduler (provided they have a way to share hardware
resources). Keep this in mind when you read our spaghetti code that happily
mixes Ps and Ke together :-P