mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-02 23:50:55 +00:00
The new types in base/ram.h model different allocation scenarios and error cases by mere C++ types without using exceptions. They are meant to replace the former 'Ram_allocator' interface. As of now, the 'Unmapped_allocator' closely captures the former 'Ram_allocator' semantics. The 'Constrained_allocator' is currently an alias for 'Unmapped_allocator' but is designated for eventually allocating mapped RAM. In contrast to the 'Ram_allocator' interface, which talked about dataspace capabilites but left the lifetime management of the allocated RAM to the caller, the new API represents an allocation as a guard type 'Allocation', which deallocates on destruction by default. Allocation errors are captured by a 'Result' type that follows the 'Attempt' pattern. As a transitionary feature, the patch largely maintains API compatibility with the original 'Ram_allocator' by providing the original (exception-based) 'Ram_allocator::alloc' and 'Ram_allocator::free' methods as a wrapper around the new 'Ram::Constrained_allocator'. So components can be gradually updated to the new 'Ram::' interface. Issue #5502
This directory contains ports of 3rd-party libraries to Genode. Usage ----- The tool './tool/ports/prepare_port' in the toplevel directory automates the task of downloading and preparing the 3rd-party source codes. One can select individual ports that have to be prepared by specifying their base names (without the version number) as command-line argument. For example, the following command prepares both the C library and the Freetype library: ! ./tool/ports/prepare_port libc freetype To compile and link against 3rd-party libraries of the 'libports' repository, you have to include the repository into the build process by appending it to the 'REPOSITORIES' declaration of your '<build-dir>/etc/build.conf' file. Under the hood -------------- For each library, there is a file contained in the 'libports/ports/' subdirectory. The file is named after the library and contains the library-specific rules for downloading the source code and installing header files. How does 'libports' relate to the other repositories? ----------------------------------------------------- Most libraries hosted in the 'libports' repository expect a complete C library, which is provided via the 'libc' port. The libc, in turn, depends on the 'os' repository for its back end.