genode/base-foc
Norman Feske 5c8373bec3 Cleanup destruction of RPC entrypoints
This patch introduces clean synchronization between the entrypoint
thread and the caller of the 'Rpc_entrypoint' destructor. The most
important change is the handling of the 'Ipc_server' destruction. This
object is in the local scope of the server's entry function. However,
since the server loop used to be an infinite loop, there was hardly any
chance to destruct the object in a clean way. Hence, the
'Rpc_entrypoint' destructor used to explicitly call '~Ipc_server'.
Unfortunately, this approach led to problems because there are indeed
rare cases where the server thread leaves the scope of the entry
function, namely uncaught exceptions. In such a case, the destructor
would have been called twice.

With the new protocol, we make sure to leave the scope of the entry
function and thereby destroy the 'Ipc_server' object as expected. This
is achieved by propagating the exit condition through a local RPC call
to the entrypoint. This way, the blocking state of the entrypoint
becomes unblocked. Furthermore, '~Rpc_entrypoint' makes use of the new
'join' function to wait for the completion of the server thread.
2012-11-26 20:58:09 +01:00
..
config Fiasco.OC: enable i.MX53 platform 2012-11-23 12:20:27 +01:00
doc Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
etc Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
include cpu_session: Access thread state by value 2012-11-23 12:20:22 +01:00
lib/mk Fiasco.OC: enable i.MX53 platform 2012-11-23 12:20:27 +01:00
mk Fiasco.OC: enable i.MX53 platform 2012-11-23 12:20:27 +01:00
patches Fiasco.OC: enable i.MX53 platform 2012-11-23 12:20:27 +01:00
run Fiasco.OC: update to recent version (svn rev. 40) 2012-09-18 10:53:16 +02:00
src Cleanup destruction of RPC entrypoints 2012-11-26 20:58:09 +01:00
Makefile Fiasco.OC: update to recent version (svn rev. 40) 2012-09-18 10:53:16 +02:00
README Imported Genode release 11.11 2011-12-22 16:19:25 +01:00

This repository contains the port of Genode to the Fiasco.OC microkernel.
For further information, please refer to the following documents:

:[http://genode.org/community/wiki/GenodeOnFiascoOC - Genode on Fiasco.OC Wiki page]:
  This Wiki page contains the information on how to build and use
  Genode with Fiasco.OC.

:[http://os.inf.tu-dresden.de/fiasco]:
  Official website for the Fiasco.OC microkernel.