diff --git a/repos/base/src/core/main.cc b/repos/base/src/core/main.cc index 5455baac83..45c6fd56df 100644 --- a/repos/base/src/core/main.cc +++ b/repos/base/src/core/main.cc @@ -38,6 +38,7 @@ #include #include #include +#include #include using namespace Genode; @@ -267,6 +268,7 @@ int main() platform().irq_alloc(), sliced_heap); static Trace::Root trace_root (core_ram_alloc, local_rm, ep, sliced_heap, Trace::sources(), trace_policies); + static Topo_root topo_root(core_ram_alloc, local_rm, ep, sliced_heap); static Core_service rom_service (services, rom_root); static Core_service rm_service (services, rm_root); @@ -276,6 +278,7 @@ int main() static Core_service io_mem_service (services, io_mem_root); static Core_service irq_service (services, irq_root); static Core_service trace_service (services, trace_root); + static Core_service topo_service(services, topo_root); /* make platform-specific services known to service pool */ platform_add_local_services(ep, sliced_heap, services, Trace::sources()); diff --git a/repos/base/src/lib/base/child.cc b/repos/base/src/lib/base/child.cc index 42e557a09e..45d96ee399 100644 --- a/repos/base/src/lib/base/child.cc +++ b/repos/base/src/lib/base/child.cc @@ -759,7 +759,7 @@ void Child::_try_construct_env_dependent_members() { /* check if the environment sessions are complete */ if (!_pd.cap().valid() || !_cpu.cap().valid() || !_log.cap().valid() - || !_binary.cap().valid()) + || !_binary.cap().valid() || !_topo.cap().valid()) return; /* @@ -824,6 +824,7 @@ void Child::initiate_env_sessions() _cpu .initiate(); _log .initiate(); _binary.initiate(); + _topo.initiate(); /* * Issue environment-session request for obtaining the linker binary. We @@ -909,6 +910,7 @@ void Child::close_all_sessions() * Issue close requests to the providers of the environment sessions, * which may be async services. */ + _topo.close(); _log.close(); _binary.close(); if (_linker.constructed()) @@ -923,6 +925,7 @@ void Child::close_all_sessions() _discard_env_session(Env::log()); _discard_env_session(Env::binary()); _discard_env_session(Env::linker()); + _discard_env_session(Env::topo()); /* * Remove dynamically created sessions from the child's ID space.