genode/base-foc
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
..
config Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
doc Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
etc Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
include Fiasco.OC: Re-use existing capability selectors 2012-02-28 08:42:13 +01:00
lib/mk Facility for reinitializing Platform_env 2012-02-22 15:56:45 +01:00
mk Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
patches Merge final fixes from internal repositories 2011-12-23 14:04:29 +01:00
run Imported Genode release 11.11 2011-12-22 16:19:25 +01:00
src Fiasco.OC: Re-use existing capability selectors 2012-02-28 08:42:13 +01:00
Makefile Fix subversion usage of 'make prepare' in base-foc 2012-01-17 23:17:08 +01:00
README Imported Genode release 11.11 2011-12-22 16:19:25 +01:00

This repository contains the port of Genode to the Fiasco.OC microkernel.
For further information, please refer to the following documents:

:[http://genode.org/community/wiki/GenodeOnFiascoOC - Genode on Fiasco.OC Wiki page]:
  This Wiki page contains the information on how to build and use
  Genode with Fiasco.OC.

:[http://os.inf.tu-dresden.de/fiasco]:
  Official website for the Fiasco.OC microkernel.