Instances of lazy scheduling and timeslice donation in L4 implementations

Udo A. Steinberg us15 at
Fri Jan 20 14:04:03 CET 2006

On Fri, 20 Jan 2006 23:18:28 +1100 (EST) Gernot Heiser (GH) wrote:

GH> Note that the Inside L4 document refers to the old MIPS kernel, which
GH> is one implementation of (and extended) V2 API.
GH> It also, like many other implementations, does time-slice donation
GH> incorrectly (i.e. blindly). Time-slice donation should respect
GH> priorities. I believe that this is fixed in NICTA::Pistachio-embedded,
GH> but the code is the ultimate reference ;-)

Also note that time-slice donation on L4 typically does not extend across
preemptions. A client that performs an RPC to a server donates its time
quantum and priority to the server - this is achieved by switching only the
execution context during the IPC and leaving the scheduling parameters
of the client "in place". However, if the RPC is preempted by a higher-
priority thread and is later resumed, the server will continue executing
using its own time and priority instead of using the client's time and

To my knowledge no existing L4 implementation correctly resumes the original
donation after a preemption. A solution has been described in [1], but we at
TUD have not implemented it yet.

			- Udo

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <>

More information about the l4-hackers mailing list