L4 IPC doubt

Ronald Aigner ra3 at os.inf.tu-dresden.de
Mon May 2 16:48:38 CEST 2005

Tiago Jorge wrote on 05/02/05 15:37 this:
>>I will try to describe the scenario as I understood it:
>>There exist:
>>- The Flips Server (F)
>>- The Server (S) with one server thread
>>- One or more Clients (C1, C2, ...).
>>Now C1 calls S, which receives the message, decodes it, calls your 
>>server function, makes a call to F and blocks, waiting for the reply 
>>from F. The C2 tries to call the same server S.
>>If this is correct, then yes, C2 and all following clients will block, 
>>because the server-thread is blocked waiting for F.
> nop.
> the problem is that S blocks when doing the call to F with no reason. 
> But when i removed the call from C1 to S (that is blocked waiting the 
> IPC response from S), S did the F IPC with no problem... So it is S that 
> is blocked when doing the ipc_send call to F, not waiting for the 
> answer, because the request never arrives to the F server.
So, the non-blocking szenario is:
- no client does send any message to S.
- S (magically*) sends a message to F and receives a reply (**)

* how is this request initiated if not by a client?
** let us try to stay with the L4 speech:
   - an "IPC send" is an IPC from thread T1 to T2 without an immediate reply
   - an "IPC call" is an IPC from thread T1 to T2 and T1 atomically 
waits for a reply from T2 (i.e. is blocked until T2 sends the reply).
   - so, if you remove "the ipc_send call to F" what do you mean in L4 

And the blocking szenario is:
- C1 calls S.
- S calls F, but blocks in the send phase of the call.

Did I get it right now? (The respective code snippets or IDL would be 

Greetings, Ron.
Mit freundlichen Gruessen / with regards
ra3 @ inf.tu-dresden.de

More information about the l4-hackers mailing list