Streamline exception types

This patch reduces the number of exception types by facilitating
globally defined exceptions for common usage patterns shared by most
services. In particular, RPC functions that demand a session-resource
upgrade not longer reflect this condition via a session-specific
exception but via the 'Out_of_ram' or 'Out_of_caps' types.

Furthermore, the 'Parent::Service_denied', 'Parent::Unavailable',
'Root::Invalid_args', 'Root::Unavailable', 'Service::Invalid_args',
'Service::Unavailable', and 'Local_service::Factory::Denied' types have
been replaced by the single 'Service_denied' exception type defined in
'session/session.h'.

This consolidation eases the error handling (there are fewer exceptions
to handle), alleviates the need to convert exceptions along the
session-creation call chain, and avoids possible aliasing problems
(catching the wrong type with the same name but living in a different
scope).
This commit is contained in:
Norman Feske
2017-05-07 22:03:22 +02:00
committed by Christian Helmuth
parent 1f4f119b1e
commit 4d442bca30
180 changed files with 932 additions and 834 deletions

View File

@ -92,7 +92,7 @@ class Linker::Region_map
Local_addr attach_at(Dataspace_capability ds, addr_t local_addr,
size_t size = 0, off_t offset = 0)
{
return retry<Genode::Region_map::Out_of_metadata>(
return retry<Genode::Out_of_ram>(
[&] () {
return _rm.attach_at(ds, local_addr - _base, size, offset);
},
@ -105,7 +105,7 @@ class Linker::Region_map
Local_addr attach_executable(Dataspace_capability ds, addr_t local_addr,
size_t size = 0, off_t offset = 0)
{
return retry<Genode::Region_map::Out_of_metadata>(
return retry<Genode::Out_of_ram>(
[&] () {
return _rm.attach_executable(ds, local_addr - _base, size, offset);
},