-
Notifications
You must be signed in to change notification settings - Fork 254
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reduce reliance on C++ exceptions in the base framework #5245
Comments
This exception got introduced as a mere convenience for implementers of 'Child_policy' but required a special case in the base library. Following the goal of eliminating exceptions from the base system, this patch removes it by making a server_id_space mandatory. Issue #5245
This patch removes the two 'Xml_node::attribute' accessors along with the 'Nonexistent_attribute' exception. Issue genodelabs#5245
This patch removes the two 'Xml_node::attribute' accessors along with the 'Nonexistent_attribute' exception. Issue genodelabs#5245
This patch removes the two 'Xml_node::attribute' accessors along with the 'Nonexistent_attribute' exception. Issue genodelabs#5245
- Use attempt pattern for error handling - Replace lookup of pointers by with_ pattern - Remove virtual Trace::Session methods - Merge client.h into connection.h Issue genodelabs#5245
- Use attempt pattern for error handling - Replace lookup of pointers by with_ pattern - Remove virtual Trace::Session methods - Merge client.h into connection.h - Update coding style of test/trace Issue genodelabs#5245
This patch removes the two 'Xml_node::attribute' accessors along with the 'Nonexistent_attribute' exception. Issue #5245
- Use attempt pattern for error handling - Replace lookup of pointers by with_ pattern - Remove virtual Trace::Session methods - Merge client.h into connection.h - Update coding style of test/trace Issue #5245
Commit a82a3e6 and fixup 6af5a3e remove C++ exceptions from core's TRACE session interface and adjust the components throughout Genode's source tree. The new version of the interface is tighter in several respects. Hence, this change requires the adaptation of trace clients (@alex-ab thinking of top_view).
@jschlatow I have adapted the trace recorder to this change but admittedly haven't tested it. I'd appreciate you giving it a spin. |
- Use attempt pattern for error handling - Replace lookup of pointers by with_ pattern - Remove virtual Trace::Session methods - Merge client.h into connection.h - Update coding style of test/trace Issue #5245
While changing 'Pd_session::alloc_context', this patch also tightens the type of the imprint argument. Issue #5245
Remove exceptions, replace pointer lookup by with_ pattern, use Xml_node::attribute_value, constness, naming of signal handlers Issue #5245
This patch replaces exceptions of the PD session RPC interface with result types. The change of the quota-transfer RPC functions required the adaptation of base/quota_transfer.h and base/child.h. The 'alloc_signal_source' method has been renamed to 'signal_source' to avoid an exceedingly long name of the corresponding result type. The Pd_session::map function takes a 'Virt_range' instead of basic-type arguments. The 'Signal_source_capability' alias for 'Capability<Signal_source>' has been removed. Issue #5245
Commit 7cac494 takes another step by revisiting the PD session interface. |
It's spinning happily. |
This patch removes the two 'Xml_node::attribute' accessors along with the 'Nonexistent_attribute' exception. Issue genodelabs#5245 Fixes genodelabs#5246
- Use attempt pattern for error handling - Replace lookup of pointers by with_ pattern - Remove virtual Trace::Session methods - Merge client.h into connection.h - Update coding style of test/trace Issue genodelabs#5245
While changing 'Pd_session::alloc_context', this patch also tightens the type of the imprint argument. Issue genodelabs#5245
Remove exceptions, replace pointer lookup by with_ pattern, use Xml_node::attribute_value, constness, naming of signal handlers Issue genodelabs#5245
This patch replaces exceptions of the PD session RPC interface with result types. The change of the quota-transfer RPC functions required the adaptation of base/quota_transfer.h and base/child.h. The 'alloc_signal_source' method has been renamed to 'signal_source' to avoid an exceedingly long name of the corresponding result type. The Pd_session::map function takes a 'Virt_range' instead of basic-type arguments. The 'Signal_source_capability' alias for 'Capability<Signal_source>' has been removed. Issue genodelabs#5245
- Use attempt pattern for error handling - Replace lookup of pointers by with_ pattern - Remove virtual Trace::Session methods - Merge client.h into connection.h - Update coding style of test/trace Issue #5245
This patch removes the two 'Xml_node::attribute' accessors along with the 'Nonexistent_attribute' exception. Issue genodelabs#5245 Fixes genodelabs#5246
- Use attempt pattern for error handling - Replace lookup of pointers by with_ pattern - Remove virtual Trace::Session methods - Merge client.h into connection.h - Update coding style of test/trace Issue genodelabs#5245
While changing 'Pd_session::alloc_context', this patch also tightens the type of the imprint argument. Issue genodelabs#5245
Remove exceptions, replace pointer lookup by with_ pattern, use Xml_node::attribute_value, constness, naming of signal handlers Issue genodelabs#5245
This patch replaces exceptions of the PD session RPC interface with result types. The change of the quota-transfer RPC functions required the adaptation of base/quota_transfer.h and base/child.h. The 'alloc_signal_source' method has been renamed to 'signal_source' to avoid an exceedingly long name of the corresponding result type. The Pd_session::map function takes a 'Virt_range' instead of basic-type arguments. The 'Signal_source_capability' alias for 'Capability<Signal_source>' has been removed. Issue genodelabs#5245
@cproc may you take care of adjusting qt5 to the latest |
Commit f89482c adapts qt5. |
Fantastic! Thank you @cproc. |
This patch replaces the former Child::Process and Child::Process::Loaded_executable classes by static functions that return failure conditions as return values. Issue #5245
The 'Thread_creation_failed' error is now reflected as 'Thread::Start_result' return value. This change also removes the use of 'Invalid_thread' within core as this exception is an alias of Cpu_session::Thread_creation_failed. Issue #5245
This patch replaces the former Child::Process and Child::Process::Loaded_executable classes by static functions that return failure conditions as return values. Issue #5245
To maintain ease of use at the client side, the OUT_OF_RAM and OUT_OF_CAPS results are handled at the 'Gui::Connection' now. Gui::Connection does not inherit the Gui::Session interface any longer, which allows for the use of different result types. Issue genodelabs#5242 Issue genodelabs#5245
To maintain ease of use at the client side, the OUT_OF_RAM and OUT_OF_CAPS results are handled at the 'Gui::Connection' now. Gui::Connection does not inherit the Gui::Session interface any longer, which allows for the use of different result types. Issue genodelabs#5242 Issue genodelabs#5245
To maintain ease of use at the client side, the OUT_OF_RAM and OUT_OF_CAPS results are handled at the 'Gui::Connection' now. Gui::Connection does not inherit the Gui::Session interface any longer, which allows for the use of different result types. Issue genodelabs#5242 Issue genodelabs#5245
To maintain ease of use at the client side, the OUT_OF_RAM and OUT_OF_CAPS results are handled at the 'Gui::Connection' now. Gui::Connection does not inherit the Gui::Session interface any longer, which allows for the use of different result types. Issue genodelabs#5242 Issue genodelabs#5245
This patch removes the only residual C++ exception from the kernel part of core, eliminating the risk of the kernel thread trying to enter the kernel itself via the C++ exception-handling path. When throwing an exception, __cxa_allocate_exception invokes the cxx_heap, which synchronizes accesses via a Genode::Mutex. In the contention case, the blocking of the mutex issues a syscall to pause the caller. The patch fixes the problem by replacing the exception with a return value. Fixes #5382 Issue #5245
Down the road, I'd like to clear the base framework from the use of C++ exceptions, using the attempt pattern for error handling instead (see https://genode.org/documentation/genode-foundations/24.05/api/Fundamental_types.html#Exception-less_error_handling). Let's move gradually to this direction.
The text was updated successfully, but these errors were encountered: