This patch unifies the error types of Alloc_contex_result and
Signal_source_result using the common Alloc_error. It replaces the use
of exceptions by error types witin core and removes the use of the 'new'
operator from the Signal_broker.
Issue #5245
This patch unifies Parent::Session_error, Root::Create_error, and
Local_service::Create_error by using the centrally defined Session_error.
This type is now also used by Session_state::Factory, which thereby
becomes void of exceptions.
The patch also streamlines the Session_response enum type to become
consistent with the naming of the Session_error conditions.
Issue #5245
When the multitouch driver occasionally looses track of a finger, it
may occur that touch id 0 is released before the other ids. This messes
with the gesture detection. This commit adds a Multitouch struct that reliably
tracks the presence of fingers for all gestures and thereby moves this state
out of the individual gestures.
Fixes#5578
When destroying a signal context on behalf of core, we've to
ensure that it isn't used directly within core/kernel any further
to signal interrupts and vcpu events to.
Fix#5529
As lib/spark is a shared library it may not be build (if at all) before
the spark component itself. Therefore, the RTS preparation of
ada_source_path/ada_object_path may be required on component build.
Issue #5540
The Core::Vm_root class for x86 and armv7/8 is actually
identical apart from the detail that it has to create
distinct Vm_session_component variants. Therefore, unify
it's class declaration, and most of the definitions,
apart from _create_session.
The Vmx_session_component and Svm_session_component classes
are also identical apart from the concrete page-table used.
Therefore, unify those classes to one x86-specific
Vm_session_component template that takes the page-table as
argument.
Ref #5572
Some symbols end up in the large bss data section, e.g. bootstrap
cpu stacks of base-hw, which needs to be assigned within the linker
script to not end outside the binary's address range.
Ref #5540
Ref #5565
Genode tool-chain creates calls to delete(void*, unsigned long) on
32-bit targets, because size_t is unsinged long. In contrast the
host-tool chain that links hybrid targets only contains delete(void*,
unsigned) because size_t is unsigned fot these platforms. Hence, we
create a wrapper for delete(*, unsigned long) that calls the unsigned
version.
issue #5560
This method eliminates the need for using 'new' for the creation of
session objects, eliminating the throwing of Out_of_ram, Out_of_caps,
and Denied exceptions.
Issue #5563
The '_create_session' method returns now a 'Create_result' instead
of a pointer. This result can either be a reference to the new
session object or an 'Create_error' code.
The '_upgrade_session' and '_destroy_session' method now take a
reference instead of a pointer as argument.
Fixes#5562
Renaming the local variable fixes the following error:
declaration of ‘Genode::Quota_guard<Genode::Ram_quota>::Reservation ram’
shadows a parameter
Issue #5540
The initialization of the packet-stream allocator via
'Range_allocator::add_range' can fail with an 'Alloc_error'. This could
be observed with run/nic_router_stress running in Pistachio.
The patch reflects the construction error as constant 'constructed' that
can now be evaluated by the creating code.
It also fixes the particular problem of the NIC/Uplink-session creation
error in the NIC router and adds diagnostic messages to reveal further
manifestations of this problem.
Fixes#5566