mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-30 10:38:55 +00:00
4534d656a8
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 |
||
---|---|---|
.. | ||
cap_sel_alloc.h | ||
ipc_msgbuf.h | ||
ipc_pager.h | ||
ipc.h | ||
native_types.h | ||
pager.h | ||
sleep.h |