Dynamic creation and passing of IPC channels

Adam Lackorzynski adam at os.inf.tu-dresden.de
Mon Nov 25 23:09:44 CET 2013

On Mon Nov 25, 2013 at 20:21:07 +0100, Bjoern Doebel wrote:
> > I have two tasks running and communicating through an IPC
> > connection (basically the clntsrv demo). Now I would like to extend
> > this a bit:
> > 
> > 
> > Using an ipc_call(), the client (actually: multiple clients) should
> > be able to register with a server to receive a wakeup IPC at
> > individually different points in time in the future.
> > 
> > (First, flawed idea to do this was to *not* use the combined 
> > reply_and_wait call on the server side but instead to only do a
> > wait() call and then postpone the corresponding reply() until when
> > the client should be woken up. However, I learned that this will
> > not work because the implicit reply capability will be lost as soon
> > as another ipc call is done by the server.)
> > 
> > Next idea now is to create another IPC channel in the client and to
> > pass (via IPC) the send capability for that channel to the server.
> > The client shall than block in an ipc_receive() on that channel and
> > the server can wake it by sending to that channel. I guess this
> > should be possible and for a seasoned Fiasco.OC/L4Re expert it is
> > probably quite easy to do, but I can't seem to find how to:

Another possibility regarding wakeups/notifications is to use L4::Irq's.
They transfer no payload but allow to notify someone else without
requiring an IPC channel. Maybe that's also ok for your use-case?

Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/

More information about the l4-hackers mailing list