mirror of
https://github.com/genodelabs/genode.git
synced 2025-03-23 12:35:41 +00:00
There existed a race when 'wait_and_dispatch_one_signal' is called form a RPC context, because the 'signal_proxy' or 'main' will block and the signal semaphore, when the EP then calls 'wait_and_dispatch_one_signal', the signal proxy is woken up ands sends an RPC to the EP, leading to a dead lock if no further signal arrive, because the EP will then remain blocked in the signal semaphore. Therefore, for this case, the signal proxy will now perform a semaphore up operation and does not perform an RPC if the EP is within 'wait_and_dispatch_one_signal'.
This is generic part of the Genode implementation. It consists of two parts: :_Core_: is the ultimate root of the Genode application tree and provides abstractions for the lowest-level hardware resources such as RAM, ROM, CPU, and generic device access. All generic parts of Core can be found here - for system-specific implementations refer to the appropriate 'base-<system>' directory. :_Base libraries and protocols_: that are used by each Genode component to interact with other components. This is the glue that holds everything together.