- Introduce common Buffer_error type.
- Enforce the handling of buffer-exceeded errors.
- Unify interface of Reporter and Expanding_reporter,
using Byte_range_ptr instead of basic types.
- Simplify the Xml_generator API by providing the plain
class function Xml_generator::generate.
- Use Expanding_reporter where appropriate.
Fixes#5561
This prevents the following warning and configures access to freedesktop
runtime data of the current user for hybrid components, e.g., fb_sdl.
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
When deleting destructors are called for base-library classes which are
part of ld.lib.so, a dummy delete operator from 'new_delete.cc' will be
called because ld.lib.so is compiled with -Bsymbolic-functions which leads
to compile time resolution to the weak dummy functions in cxx. These
functions should resolve to the stdcxx library. Therefore, this commit
adds a dynamic list for the stdcxx::delete operators to ld.lib.so, which
generates a jump-slot relocation, and thus, the linker will try to
resolve the operators at runtime.
issue #5560
For hybrid base-linux applications the stdcxx destructors are generated
by the host-tool chain in case they are not present. If present, the
implementation given, i.e. our weak cxx operators, are used - which is
not desirable. Therefore, we keep Genode specific new/delete operators
in new_delete.cc and move the stdcxx specific operators into
stdcxx_delete.cc. The cxx library will make use of both, while hybrid
targets will only compile new_delete.cc.
issue #5560
Replace try/catch/throw by guard objects.
In panic situations, print an error and sleep forever.
Infinitely block invalid IPC calls.
Weasel out of cap ref count overflows by clamping count to max.
Accept ID-space ambiguities but be verbose about it.
Skip Duration::add when detecting an integer overflow.
Issue #5245
The Env::session method no longer throws 'Service_denied'. Instead, the
parent's denial is now considered as fatal, yielding an error message
and stopping the component. This is the common case where sessions are
established via 'Connection' objects. The failure to obtain a connection
because of the parent's decision is not recoverable.
The Env::try_session method now uses a result type instead of exceptions
to reflect all error conditions, including Session_error::DENIED. This
is useful for intermediary component like init, which initiate session
requests on behalf of their children and shall never reach a
non-recoverable state.
The change of Env has ripple effects through service.h and the child
framework. The former reflection of 'Out_of_ram' and 'Out_of_caps' by
Service::initiate_request has been replaced by a result type. The patch
adds diagnostic messages at all places where such errors are further
propagated.
Issue #5251
This patch replaces 'Child_policy::resolve_session_request' with
an 'with_route' method that takes two functors as arguments. It also
removes the 'Service_denied' exception from local_connection.h, which,
in turn requires changing 'Child::pd' to 'Child::with_pd' to account for
the error case where a 'Child' object has been created but failed to
obtain its PD session.
Issue #5251
Ignore invalid affinity arguments.
The ram-quota check in Cpu_root has become obsolete since the commit
"core: remove exception from Trace::Control alloc".
Issue #5251
Core's ROM service does not longer reflect a missing ROM module at
session-creation time but delivers an invalid dataspace capability.
This patch also removes the duplication of linux/dataspace_component.cc.
Issue #5251
This patch adds a specialization of 'Reconstructible' for reference
types, thereby indirectly enabling the returning of references as
'Unique_attempt' objects.
Fixes#5539
Replace use of deallocate=false by keeping the IRQ number as guard
object. Don't throw 'Service_denied'. Remove superfluous debug messages.
Issue #5502
Issue #5251
More recent Qemu variants like 8.2 on Ubuntu 24.04 do not support the
sole `server` attribute within `-chardev socket`, but use a boolean value
assigned to the attribute. Also nowait and ipv4 without boolean values
are deprecated.
Fix#5537