genode/base-nova/include/base
Alexander Boettcher 4534d656a8 NOVA: Improve stability of process destruction
The UTCB of the thread cleaning up thread objects has been unmapped.
However the UTCB of the destroyed thread must be unmapped.

Objects must explicitly be made unreachable before cleaning up. The
server and pager objects must be unreachable before they can be freed.
Both object types are threads. Revoking the thread(EC) cap on NOVA
doesn't mean that the thread stops executing. All portals pointing to a
thread are still reachable by clients even if the last EC cap is gone in
user land. So it must be taken care that no portals are pointing anymore
to a thread when the associated objects are getting destroyed. This
commit handles this.

Additionally, even if the last portal is gone - there can be still an
ongoing request handled by such server/pager object/threads. For each
such object an additional portal is created. This object is called
'cleanup portal' and is only local to the object. After all portals are
revoked the cleanup portal is called. When the call returns we know that
nobody is anymore handled by the object since all remotely available
portals are gone.

Fixes #20
2012-06-20 19:44:07 +02:00
..
cap_sel_alloc.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
ipc_msgbuf.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
ipc_pager.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
ipc.h Do not marshal invalid capabilities on NOVA/x86 2012-03-13 16:32:23 +01:00
native_types.h Unify policy name for Native_capability_tpl. 2012-03-10 15:52:13 +01:00
pager.h NOVA: Improve stability of process destruction 2012-06-20 19:44:07 +02:00
sleep.h Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00