IPC Timeouts

Ronald Aigner ra3 at os.inf.tu-dresden.de
Wed Feb 23 18:29:01 CET 2005

I am directing this question to both, the Karlsruhe and the Dresden, L4
mailing list, because I know both are working on new L4 specifications.

(Background:) I am working with L4 in Dresden on real-time systems, which
become fairly complex lately.  One of the questions, which began to bother
me more and more, is: What is the use of finite IPC timeouts?

Ideally sending an IPC should be immediate (zero timeout) or should be
performed eventually (infinite timeout).  The only (useful) application of
finite timeouts, I have seen so far, is the combination of multiple tasks
in a single threaded server.  That is waiting for IPC and for a regularly
appearing timer event.  (This sometimes implied adjusting the IPC timeout
by the time used between the IPC waits.)  Otherwise the use of finite
timeouts is rather inconvenient, since the time used for the timeout
depends on the whole surrounding system (software and hardware) and is
thus impractical.

I'm personally convinced that you do not need finite IPC timeouts.  A
single bit differentiating zero and infinte timeouts should be sufficient.
 To imitate the concurrent waiting for an IPC or timer event one could set
up a timer with the kernel and inculde the "timer-source" into the receive
scope of the wait IPC.  Timer events can be dropped if the receiver is not
ready.  This would also simplify the tasks using IPC timeouts as timer
event source.

Coming back to my questions: What is the use of finite timeouts?

Or maybe the question should be: Would it simplify kernel (and user land)
design if seperating the concepts of finite timeouts and IPC?

If you have reasons to include finite timeouts into future versions of the
L4 Specification, please convince me.

Ronald Aigner
ra3 at os.inf.tu-dresden.de

More information about the l4-hackers mailing list