mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-31 08:25:38 +00:00
41eaff2cc6
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.
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.