From 3531bfc4c7f4d10c4eeaa3883caa2ccf9980b472 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 19 Dec 2024 11:11:30 +0100 Subject: [PATCH] fixup "base: split Pd_account from Pd_session" (test/rm_fault, test/resource_yield, cpu_balancer build, sequence, test/fault_detection, launchpad) --- repos/base/include/pd_session/pd_session.h | 10 +++++----- repos/base/src/test/rm_fault/main.cc | 6 ++++-- repos/demo/include/launchpad/launchpad.h | 6 ++++-- repos/os/src/app/sequence/main.cc | 20 +++++++++++--------- repos/os/src/test/fault_detection/main.cc | 12 +++++++----- repos/os/src/test/resource_yield/main.cc | 14 ++++++++------ 6 files changed, 39 insertions(+), 29 deletions(-) diff --git a/repos/base/include/pd_session/pd_session.h b/repos/base/include/pd_session/pd_session.h index 4f6b6fbc93..16bb325c73 100644 --- a/repos/base/include/pd_session/pd_session.h +++ b/repos/base/include/pd_session/pd_session.h @@ -33,6 +33,11 @@ namespace Genode { struct Genode::Pd_account : Interface, Noncopyable { + /** + * \noapi + */ + static const char *service_name() { return "PD"; } + enum class Transfer_result { OK, EXCEEDED, INVALID }; virtual Transfer_result transfer_quota(Capability, Cap_quota) = 0; @@ -48,11 +53,6 @@ struct Genode::Pd_account : Interface, Noncopyable struct Genode::Pd_session : Session, Pd_account, Ram_allocator { - /** - * \noapi - */ - static const char *service_name() { return "PD"; } - /* * A PD session consumes a dataspace capability for the session-object * allocation, a capability for the 'Native_pd' RPC interface, its diff --git a/repos/base/src/test/rm_fault/main.cc b/repos/base/src/test/rm_fault/main.cc index b558bc4797..6d87de8679 100644 --- a/repos/base/src/test/rm_fault/main.cc +++ b/repos/base/src/test/rm_fault/main.cc @@ -215,8 +215,10 @@ class Test_child_policy : public Child_policy Binary_name binary_name() const override { return "test-rm_fault"; } - Pd_session &ref_pd() override { return _env.pd(); } - Pd_session_capability ref_pd_cap() const override { return _env.pd_session_cap(); } + Ram_allocator &session_md_ram() override { return _env.pd(); } + + Pd_account &ref_account() override { return _env.pd(); } + Capability ref_account_cap() const override { return _env.pd_session_cap(); } void init(Pd_session &session, Pd_session_capability cap) override { diff --git a/repos/demo/include/launchpad/launchpad.h b/repos/demo/include/launchpad/launchpad.h index 0ab3a47f69..fb1e1a7419 100644 --- a/repos/demo/include/launchpad/launchpad.h +++ b/repos/demo/include/launchpad/launchpad.h @@ -135,8 +135,10 @@ class Launchpad_child : public Genode::Child_policy, Binary_name binary_name() const override { return _elf_name; } - Genode::Pd_session &ref_pd() override { return _env.pd(); } - Genode::Pd_session_capability ref_pd_cap() const override { return _env.pd_session_cap(); } + Genode::Ram_allocator &session_md_ram() override { return _env.pd(); } + + Genode::Pd_account &ref_account() override { return _env.pd(); } + Genode::Capability ref_account_cap() const override { return _env.pd_session_cap(); } void init(Genode::Pd_session &session, Genode::Pd_session_capability cap) override diff --git a/repos/os/src/app/sequence/main.cc b/repos/os/src/app/sequence/main.cc index cdb1fbfe7a..0ba3e6995e 100644 --- a/repos/os/src/app/sequence/main.cc +++ b/repos/os/src/app/sequence/main.cc @@ -135,12 +135,14 @@ struct Sequence::Child : Genode::Child_policy return route(service); } + Ram_allocator &session_md_ram() override { return _env.pd(); } + /** * Only a single child is managed at a time so * no additional PD management is required. */ - Pd_session &ref_pd() override { return _env.pd(); } - Pd_session_capability ref_pd_cap() const override { return _env.pd_session_cap(); } + Pd_account &ref_account() override { return _env.pd(); } + Capability ref_account_cap() const override { return _env.pd_session_cap(); } /** * Always queue a reload signal and store the exit value. The @@ -175,9 +177,9 @@ struct Sequence::Child : Genode::Child_policy if (ram.value) { Ram_quota avail = _env.pd().avail_ram(); if (avail.value > ram.value) { - ref_pd().transfer_quota(pd_cap, ram); + ref_account().transfer_quota(pd_cap, ram); } else { - ref_pd().transfer_quota(pd_cap, Ram_quota{avail.value >> 1}); + ref_account().transfer_quota(pd_cap, Ram_quota{avail.value >> 1}); _env.parent().resource_request(args); } } @@ -185,9 +187,9 @@ struct Sequence::Child : Genode::Child_policy if (caps.value) { Cap_quota avail = _env.pd().avail_caps(); if (avail.value > caps.value) { - ref_pd().transfer_quota(pd_cap, caps); + ref_account().transfer_quota(pd_cap, caps); } else { - ref_pd().transfer_quota(pd_cap, Cap_quota{avail.value >> 1}); + ref_account().transfer_quota(pd_cap, Cap_quota{avail.value >> 1}); _env.parent().resource_request(args); } } @@ -201,9 +203,9 @@ struct Sequence::Child : Genode::Child_policy */ void init(Pd_session &pd, Pd_session_capability pd_cap) override { - pd.ref_account(ref_pd_cap()); - ref_pd().transfer_quota(pd_cap, Cap_quota{_env.pd().avail_caps().value >> 1}); - ref_pd().transfer_quota(pd_cap, Ram_quota{_env.pd().avail_ram().value >> 1}); + pd.ref_account(ref_account_cap()); + ref_account().transfer_quota(pd_cap, Cap_quota{_env.pd().avail_caps().value >> 1}); + ref_account().transfer_quota(pd_cap, Ram_quota{_env.pd().avail_ram().value >> 1}); } Id_space &server_id_space() override { return _server_ids; } diff --git a/repos/os/src/test/fault_detection/main.cc b/repos/os/src/test/fault_detection/main.cc index 4bc527ac76..1d15d621e4 100644 --- a/repos/os/src/test/fault_detection/main.cc +++ b/repos/os/src/test/fault_detection/main.cc @@ -99,8 +99,10 @@ class Test_child : public Genode::Child_policy Binary_name binary_name() const override { return _binary_name; } - Pd_session &ref_pd() override { return _env.pd(); } - Pd_session_capability ref_pd_cap() const override { return _env.pd_session_cap(); } + Ram_allocator &session_md_ram() override { return _env.pd(); } + + Pd_account &ref_account() override { return _env.pd(); } + Capability ref_account_cap() const override { return _env.pd_session_cap(); } void init(Cpu_session &cpu, Cpu_session_capability) override { @@ -110,9 +112,9 @@ class Test_child : public Genode::Child_policy void init(Pd_session &pd, Pd_session_capability pd_cap) override { - pd.ref_account(ref_pd_cap()); - ref_pd().transfer_quota(pd_cap, _cap_quota); - ref_pd().transfer_quota(pd_cap, _ram_quota); + pd.ref_account(ref_account_cap()); + ref_account().transfer_quota(pd_cap, _cap_quota); + ref_account().transfer_quota(pd_cap, _ram_quota); /* register handler for unresolvable page faults */ Region_map_client address_space(pd.address_space()); diff --git a/repos/os/src/test/resource_yield/main.cc b/repos/os/src/test/resource_yield/main.cc index 65cd46ec08..f108b66bc4 100644 --- a/repos/os/src/test/resource_yield/main.cc +++ b/repos/os/src/test/resource_yield/main.cc @@ -304,7 +304,7 @@ class Test::Parent } _config_producer { }; Dynamic_rom_session _config_session { _env.ep().rpc_ep(), - ref_pd(), _env.rm(), + _env.pd(), _env.rm(), _config_producer }; using Config_service = Genode::Local_service; @@ -323,14 +323,16 @@ class Test::Parent Binary_name binary_name() const override { return _binary_name; } - Pd_session &ref_pd() override { return _env.pd(); } - Pd_session_capability ref_pd_cap() const override { return _env.pd_session_cap(); } + Ram_allocator &session_md_ram() override { return _env.pd(); } + + Pd_account &ref_account() override { return _env.pd(); } + Capability ref_account_cap() const override { return _env.pd_session_cap(); } void init(Pd_session &pd, Pd_session_capability pd_cap) override { - pd.ref_account(ref_pd_cap()); - ref_pd().transfer_quota(pd_cap, _cap_quota); - ref_pd().transfer_quota(pd_cap, _ram_quota); + pd.ref_account(ref_account_cap()); + ref_account().transfer_quota(pd_cap, _cap_quota); + ref_account().transfer_quota(pd_cap, _ram_quota); } Route resolve_session_request(Service::Name const &service_name,