genodelabs/genode — Issue #139: Introduce clean local capability interface.
Author: skalk
Created: 2012-03-06 09:55:36+00:00
State: open
Labels: cleanup

When providing a service locally within a protection domain only, it's often desirable just using a lightweight fashion of capabilities, e.g. have a look at the thread's context area handling in the generic core code ('base/src/core/context_area.cc b/base/src/core/context_area.cc'). Until now, the global unique id of a capability is used as a placeholder for the address of a local object to implement such lightweight capabilities. Although, until now all kernel-platforms incorporate these global unique ids in their concrete capability implementation, it's better to remove this constraint from the platform implementation.

First and foremost a true capability-based system should get rid of these global names anyway. But even if we use them like in Fiasco.OC to re-find existing capabilities in our capability space, this current restriction complicates the conversion of the existing capability type to a smart-pointer like implementation.

I propose to make the construction of a local capability more explicit, as well as the conversion of local capability to object.