Remove exceptions from 'Parent' interface

Issue #5245
This commit is contained in:
Norman Feske
2024-07-01 13:36:46 +02:00
parent 19c13877ca
commit 0288cffaee
13 changed files with 278 additions and 238 deletions

View File

@@ -55,8 +55,8 @@ class Genode::Local_parent : public Expanding_parent_client
** Parent interface **
**********************/
Session_capability session(Client::Id, Service_name const &, Session_args const &,
Affinity const & = Affinity()) override;
Session_result session(Client::Id, Service_name const &, Session_args const &,
Affinity const & = Affinity()) override;
Close_result close(Client::Id) override;
/**

View File

@@ -40,11 +40,15 @@ struct Genode::Platform
Local_parent parent { _obtain_parent_cap(), rm, heap };
Pd_session_capability pd_cap =
static_cap_cast<Pd_session>(parent.session_cap(Parent::Env::pd()));
Capability<Pd_session> pd_cap =
parent.session_cap(Parent::Env::pd()).convert<Capability<Pd_session>>(
[&] (Capability<Session> cap) { return static_cap_cast<Pd_session>(cap); },
[&] (Parent::Session_cap_error) { return Capability<Pd_session>(); });
Cpu_session_capability cpu_cap =
static_cap_cast<Cpu_session>(parent.session_cap(Parent::Env::cpu()));
Capability<Cpu_session> cpu_cap =
parent.session_cap(Parent::Env::cpu()).convert<Capability<Cpu_session>>(
[&] (Capability<Session> cap) { return static_cap_cast<Cpu_session>(cap); },
[&] (Parent::Session_cap_error) { return Capability<Cpu_session>(); });
Local_pd_session pd { parent, pd_cap };

View File

@@ -58,10 +58,10 @@ bool Region_map_mmap::_dataspace_writeable(Dataspace_capability ds)
** Local_parent **
******************/
Session_capability Local_parent::session(Parent::Client::Id id,
Service_name const &service_name,
Session_args const &args,
Affinity const &affinity)
Parent::Session_result Local_parent::session(Parent::Client::Id id,
Service_name const &service_name,
Session_args const &args,
Affinity const &affinity)
{
if (strcmp(service_name.string(), Rm_session::service_name()) == 0) {
@@ -87,7 +87,7 @@ Parent::Close_result Local_parent::close(Client::Id id)
Capability<Rm_session> rm =
static_cap_cast<Rm_session>(local_session.local_session_cap());
destroy(_alloc, Local_capability<Rm_session>::deref(rm));
return CLOSE_DONE;
return Parent::Close_result::DONE;
},
[&] /* missing */ {
return Parent_client::close(id); });