> I'm of the opinion that a high-efficiency implementation of threads
> and the posix aio interface will require parts of the kernel may need
> to be rewritten to be non-blocking and event-driven. One way to ease
> gradual, staged implementation of these changes would be to allow
> blocking and non-blocking versions of various routines to coexist.
I don't think this is required to support a high-efficiency
implementation of threads. If we choose scheduler activations for our
design for thread.
All we need is
- move sleep queue from struct proc to kernel thread,
and make sleep(9) available for kernel thread.
- provide a hook which is called when sleep(9) actually sleeps,
to create new scheduler activations.
This is not optional argument of sleep(9), but an attribute
of struct proc.
This is simpler and easier to implement a high-efficiency threads.
Though, I agree that asleep(9) is useful for asynchronous i/o.
--
soda