According to Gernot's "Inside L4/MIPS" Version 2.19 of January 30, 2001 https://www.ertos.nicta.com.au/publications/papers/Heiser:IL4.abstract.pml
Section 2.1.2 (page 7): Time-slice donation can happen in one of two ways: • explicitly via the thread switch system call. This call donates the remainder of the caller’s current time [...] • implicitly via IPC. IPC operations are often accompanied by a context switch from the sender to the receiver, in which case the sender’s current time slice is implicitly donated to the receiver.
and
Section 5.2.3: " The other point to note is that, while the sender thread is put into the busy list to allow it to be scheduled again, the context switch to the receiver is actually performed without any scheduling (lazy scheduling [Lie93]). The receiver simply continues in the remainder of the sender’s time slice. This is an instance of time-slice donation in L4."
I assume that the above described cases still hold for most, if not all, the current L4 implementation(s). The IPC time-slice donation is a classic optimisation, and ThreadSwitch() is part of the L4 specification.
I have few Qs:
1) Besides the ones above, are there in the current L4 implementations other instances of: 1.1) time-slice donation ? 1.2) lazy-scheduling ?
2) If yes, do they affect or are affected in special ways by [kernel] interrupt threads ? (I think not, but with implementation/optimisations you never know...)
Thanks
Sergio
l4-hackers@os.inf.tu-dresden.de