mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-16 22:28:18 +00:00
core: Introduce 'Address_space' interface
The new core-internal 'Address_space' interface enables cores RM service to flush mappings of a PD in which a given 'Rm_client' thread resides. Prior this patch, each platform invented their own way to flush mappings in the respective 'rm_session_support.cc' implementation. However, those implementations used to deal poorly with some corner cases. In particular, if a PD session was destroyed prior a RM session, the RM session would try to use no longer existing PD session. The new 'Address_space' uses the just added weak-pointer mechanism to deal with this issue. Furthermore, the generic 'Rm_session_component::detach' function has been improved to avoid duplicated unmap operations for platforms that implement the 'Address_space' interface. Therefore, it is related to issue #595. Right now, this is OKL4 only, but other platforms will follow.
This commit is contained in:
@ -100,6 +100,7 @@ namespace Genode {
|
||||
class Out_of_metadata : public Attach_failed { };
|
||||
|
||||
class Invalid_thread : public Exception { };
|
||||
class Unbound_thread : public Exception { };
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
@ -156,6 +157,7 @@ namespace Genode {
|
||||
* \param thread thread that will be paged
|
||||
* \throw Invalid_thread
|
||||
* \throw Out_of_metadata
|
||||
* \throw Unbound_thread
|
||||
* \return capability to be used for handling page faults
|
||||
*
|
||||
* This method must be called at least once to establish a valid
|
||||
|
Reference in New Issue
Block a user