Norman Feske 689fc1eb93 Introduce new 'Ram' API types
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
2025-04-10 14:55:15 +02:00
..
2025-02-27 12:53:40 +01:00
2025-04-10 14:55:15 +02:00
2024-06-20 12:54:30 +02:00

This repository contains the device-driver environment (DDE) for the
"donator OS" iPXE available from http://ipxe.org/.

For building DDE iPXE, you first need to fetch and patch the original
sources. The 'prepare_port' tool automates this task. Just issue:

! ./tool/ports/prepare_port dde_ipxe

Now, you need to include the DDE iPXE repository into your Genode
build configuration by adding the path to this directory to the
'REPOSITORIES' declaration of the 'etc/build.conf' file within your
build directory, for example

! REPOSITORIES += $(GENODE_DIR)/repos/dde_ipxe

After a successful build the DDE iPXE based ethernet driver is located
at 'bin/ipxe_nic'.

The driver optionally reports the following information under the
label "devices" if requested in the config as depicted.

! <config> <report mac_address="true"/> </config>

! <devices> <nic mac_address="02:00:00:00:00:01"/> </devices>