[okl4-developer] IPC transfer message question.
Gernot Heiser
gernot at nicta.com.au
Fri Apr 17 18:40:21 EST 2009
Hi Suresh,
If you think about it, you'll realise that it doesn't matter from the
PoV of semantics. The reason is that an IPC only happens if both the
sender and receiver are ready (by definition of synchronous IPC).
The implementation scheme used in L4-embedded (and, to my knowledge,
all previous L4 versions -- I should actually check what OKL4 does ;-)
is to simplify implementation: the message is always transferred while
the kernel is in the sender's context. In the case where the receiver
is waiting for the IPC, this means that the data is never touched, it
is simply left in the registers while a context switch is performed to
the receiver. (Ok, memory-backed message registers are touched, but
that's unavoidable.)
In the case where the sender is blocked when the receiver initiates the
IPC, you don't lose anything, as you'd still have to restore the
register message from the sender's TCB, and that's easier to do in the
sender's context.
And for virtual registers that aren't mapped to physical registers it
doesn't matter.
Gernot
More information about the Developer
mailing list