genode/base-foc/include
Stefan Kalkowski 41eaff2cc6 Fiasco.OC: Re-use existing capability selectors
This is an interim fix for issue #112. This patch extends the
'Capability_allocator' class with the ability to register the global
ID of a Genode capability so that the ID gets associated with a
process-local kernel capability. Whenever a Genode capability gets
unmarshalled from an IPC message, the capability-allocator is asked,
with the global ID as key, whether the kernel-cap already exists.
This significantly reduces the waste of kernel-capability slots.

To circumvent problems of having one and the same ID for different kernel
objects, the following problems had to be solved:
* Replace pseudo IDs with unique ones from core's badge allocator
* When freeing a session object, free the global ID _after_ unmapping
  the kernel object, otherwise the global ID might get re-used in some
  process and the registry will find a valid but wrong capability
  for the ID

Because core aggregates all capabilities of all different processes, its
capability registry needs much more memory compared to a regular process.
By parametrizing capability allocators differently for core and non-core
processes, the global memory overhead for capability registries is kept
at a reasonable level.
2012-02-28 08:42:13 +01:00
..
arm/cpu Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
base Fiasco.OC: Re-use existing capability selectors 2012-02-28 08:42:13 +01:00
foc_cpu_session Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
foc_pd_session Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
signal_session Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00