Flips tracking of IPC

Christian Helmuth ch12 at os.inf.tu-dresden.de
Mon May 2 17:09:35 CEST 2005


On Fri, Apr 29, 2005 at 04:55:31PM +0100, Tiago Jorge wrote:
> is there any problem with FLIPS that prevents me from sending something 
> from a socket that is blocked in a recv in another thread (should't be 
> because TCP is bi-directional)?

Unfortunately you're right. We implemented FLIPS session-based and one
session can be used only for one blocking operation at a time. This comes
from the design of dde_linux and Linux, where client threads must be
represented as process threads (with task_struct and all) for native Linux
kernel code.

A thread (process) that is enqueued in a wait queue calls schedule().
schedule() is implemented in a way that the L4 thread representing the
Linux process blocks until woken up by a call to wake_up() or a similar
operation. For your socket this means: If the session thread is blocked,
then no further requests are processed on FLIPS side.

The L4VFS dietlibc backend may also be a spoiler here (not investigated
further) as it may not support multiple server threads for one and the
same file id.

Sorry for not helping you much, but I hope this clears things up.
Christian Helmuth
## Dept. of CS, TU Dresden,  Germany ##
## http://os.inf.tu-dresden.de/~ch12 ##

More information about the l4-hackers mailing list