genode/base/include/base
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
..
allocator_avl.h base: Fix a number of warnings about unused parameters 2012-11-14 16:38:38 +01:00
allocator_guard.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
allocator.h Exceptions at construction time of dynamic objects 2012-01-26 21:19:30 +01:00
blocking.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
cancelable_lock.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
capability.h base: Fix a number of warnings about unused parameters 2012-11-14 16:38:38 +01:00
child.h Generalize handling of PD-session arguments 2012-11-21 20:04:07 +01:00
connection.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
console.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
crt0.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
elf.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
env.h Provide cpu_session_cap via environment object 2012-10-24 11:34:33 +02:00
errno.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
exception.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
heap.h Use placement new for Heap::Dataspace (fix #203) 2012-05-10 19:04:35 +02:00
ipc_generic.h Set ERR_INVALID_OBEJCT if call failed to server 2012-08-10 10:57:54 +02:00
ipc.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
lock_guard.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
lock.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
native_capability.h Replace 'Native_capability::copy_to' by accessor 2012-03-28 09:58:51 +02:00
object_pool.h Fix a compile error reported by GCC 4.7.0 2012-03-30 19:55:56 +02:00
pager.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
platform_env.h Provide cpu_session_cap via environment object 2012-10-24 11:34:33 +02:00
printf.h Compile PDBG() in release mode too 2012-10-04 14:37:18 +02:00
process.h Generalize handling of PD-session arguments 2012-11-21 20:04:07 +01:00
rpc_args.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
rpc_client.h Support const RPC functions with no arguments 2012-01-27 16:54:05 +01:00
rpc_server.h Cleanup destruction of RPC entrypoints 2012-11-26 20:58:09 +01:00
rpc.h Add support for specialized session interfaces 2012-11-07 13:43:04 +01:00
semaphore.h Bug fix: null ptr dereference in base/semaphore 2012-07-04 14:56:44 +02:00
service.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
signal.h Validate liveliness of signal contexts 2012-03-21 21:37:15 +01:00
slab.h base: Fix a number of warnings about unused parameters 2012-11-14 16:38:38 +01:00
sleep.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
snprintf.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
stdint.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
sync_allocator.h Feature: add synchronized allocator 2012-07-04 14:56:47 +02:00
thread_state.h Remove superfluous, generic Thread_state definition 2012-10-29 10:08:29 +01:00
thread.h Add 'Thread_base::join()' 2012-11-19 12:43:34 +01:00
tslab.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00