diff --git a/repos/os/include/os/session_requester.h b/repos/os/include/os/session_requester.h index ddc13ab18..5b44bcd31 100644 --- a/repos/os/include/os/session_requester.h +++ b/repos/os/include/os/session_requester.h @@ -75,6 +75,11 @@ class Genode::Session_requester */ Id_space &id_space() { return _id_space; } + /** + * Non-modifiable ID space for sessios requests supplied to the child + */ + Id_space const &id_space() const { return _id_space; } + /** * ROM service providing a single "session_requests" session */ diff --git a/repos/os/src/init/child.cc b/repos/os/src/init/child.cc index 696884be1..834ef5d35 100644 --- a/repos/os/src/init/child.cc +++ b/repos/os/src/init/child.cc @@ -18,8 +18,6 @@ Init::Child::Apply_config_result Init::Child::apply_config(Xml_node start_node) { - Child_policy &policy = *this; - if (_state == STATE_ABANDONED) return NO_SIDE_EFFECTS; @@ -319,7 +317,7 @@ void Init::Child::report_state(Xml_generator &xml, Report_detail const &detail) xml.node("session", [&] () { session.generate_server_side_info(xml, session_detail); }); }; - server_id_space().for_each(fn); + _session_requester.id_space().for_each(fn); }); } }); diff --git a/repos/os/src/init/child.h b/repos/os/src/init/child.h index 08aadae2e..f3054feb1 100644 --- a/repos/os/src/init/child.h +++ b/repos/os/src/init/child.h @@ -312,7 +312,7 @@ class Init::Child : Child_policy, Child_service::Wakeup /** * Return true if service is provided by this child */ - bool _provided_by_this(Routed_service const &service) + bool _provided_by_this(Routed_service const &service) const { return service.has_id_space(_session_requester.id_space()); } diff --git a/repos/os/src/init/target.mk b/repos/os/src/init/target.mk index 0bbfa4c59..f42589499 100644 --- a/repos/os/src/init/target.mk +++ b/repos/os/src/init/target.mk @@ -2,6 +2,3 @@ TARGET = init SRC_CC = main.cc child.cc server.cc LIBS = base INC_DIR += $(PRG_DIR) - -# workaround for constness issues -CC_OPT += -fpermissive