genode/base/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
core base & core: Use FIFO to queue RM faulters. 2012-11-23 12:20:26 +01:00
lib Support for building all libs via 'make lib' 2012-01-24 18:56:35 +01:00
platform Reserve up to 8x4 bytes for the parent capability 2012-08-14 19:14:25 +02:00
test Move 'Child' API implementation to library 2012-10-09 13:45:33 +02:00
README Imported Genode release 11.11 2011-12-22 16:19:25 +01:00

This directory contains all source codes.