genode/base-foc/src
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
..
base Cleanup destruction of RPC entrypoints 2012-11-26 20:58:09 +01:00
bootstrap Fiasco.OC: update to recent version (svn rev. 40) 2012-09-18 10:53:16 +02:00
core FOC: Change interrupt mode heuristic 2012-11-23 12:20:28 +01:00
kernel Fiasco.OC: enable i.MX53 platform 2012-11-23 12:20:27 +01:00
platform base-foc: fix 'Genode::parent_cap()' 2012-10-30 12:17:20 +01:00
sigma0 Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
test/cap_integrity Fiasco.OC: several capability ref-counter fixes. 2012-09-03 10:59:54 +02:00