mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-20 06:07:59 +00:00
60ba210a6b
When capabilities are delegated to components, they are added to the UTCB of the target thread. Before the thread is able to take out the capability id out of the UTCB and adapt the user-level capability reference counter, it might happen that another thread of the same component deletes the same capability because its user-level reference counter reached zero. If the kernel then destroys the capability, before the same capability id is taken out of all UTCBs, an inconsitent view in the component is the result. To keep an consistent view in the multi-threading scenario, the kernel now counts how often it puts a capability into a UTCB. The threads on the other hand hint the kernel when they took capabilities out of the UTCB, so the kernel can decrement the counter again. Only when the counter is zero, capabilities can get destructed. Fix #1623 |
||
---|---|---|
.. | ||
ipc_msgbuf.h | ||
native_capability.h | ||
native_env.h | ||
native_types.h |