genode/base/include
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
..
32bit/base Unify uint64_t among 32-bit and 64-bit platforms 2012-08-16 13:32:56 +02:00
64bit/base Unify uint64_t among 32-bit and 64-bit platforms 2012-08-16 13:32:56 +02:00
arm/cpu Nested init on i.MX31 via base_hw. Rework base_hw. 2012-11-14 16:36:41 +01:00
base Cleanup destruction of RPC entrypoints 2012-11-26 20:58:09 +01:00
cap_session Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
cpu_session cpu_session: Access thread state by value 2012-11-23 12:20:22 +01:00
dataspace Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
drivers/uart Nested init on i.MX31 via base_hw. Rework base_hw. 2012-11-14 16:36:41 +01:00
io_mem_session Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
io_port_session Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
irq_session ACPI/IRQ: Add interrupt mode to IRQ connection 2012-10-09 13:47:47 +02:00
log_session Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
pager Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
parent Add support for specialized session interfaces 2012-11-07 13:43:04 +01:00
pd_session Generalize handling of PD-session arguments 2012-11-21 20:04:07 +01:00
platform Merge panda_a2 and panda SPEC (fix #505, fix #506) 2012-11-23 12:20:27 +01:00
ram_session Add support for allocating DMA memory 2012-06-20 09:17:48 +02:00
rm_session Add an 'executable' flag to 'Rm_session::attach()' 2012-04-20 11:21:19 +02:00
rom_session Support for dynamic ROM sessions, fix #170 2012-04-05 11:25:26 +02:00
root Root_component::session: Fix ram_quota handling 2012-11-14 16:39:18 +01:00
session Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
signal_session Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
thread Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
util base & core: Use FIFO to queue RM faulters. 2012-11-23 12:20:26 +01:00
x86/cpu base: Fix a number of warnings about unused parameters 2012-11-14 16:38:38 +01:00
x86_32/cpu Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
x86_64/cpu Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
README Imported Genode release 11.11 2011-12-22 16:19:25 +01:00

This directory contains include files of interfaces that are exported
by components to be used by other components. Each subdirectory corresponds
to the component exporting the interface.