Mike Galbraith wrote:
> At 01:54 AM 8/16/2003 +0100, Jamie Lokier wrote:
> [...]
>
> >None of these will work well if "wakee" tasks are able to run
> >immediately after being woken, before "waker" tasks get a chance to
> >either block or put the wakees back to sleep.
>
> Sounds like another scheduler class (SCHED_NOPREEMPT) would be required.
If something special were to be added, it should be a way for a task
to say "If I call schedule() and block, don't do a schedule, just
continue my timeslice in task X".
The point of the mechanism is to submit system calls in an
asynchronous fashion, after all. A proper task scheduling is
inappropriate when all we'd like to do is initiate the syscall and
continue processing, just as if it were an async I/O request.
The interesting part is what to do when the original task (the one
that went to sleep) wakes up.