From 1c6c90fed5947bb0b6f41636bb1acce7b8b8a936 Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Wed, 6 Nov 2013 16:30:06 +0100 Subject: [PATCH] core: provide signals before other services Provide core-local signal service before other services to enable the use of signal connections while initialzing the other services. This has been introduced due to the use of the signal framework by the pager lib in base-hw (RM service). ref #935 --- base/src/core/main.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/base/src/core/main.cc b/base/src/core/main.cc index d43e58eed1..3b4934bc91 100644 --- a/base/src/core/main.cc +++ b/base/src/core/main.cc @@ -197,6 +197,16 @@ int main() */ static Sliced_heap sliced_heap(env()->ram_session(), env()->rm_session()); + /** + * Provide signal service before other services to enable the use of signal + * connection during service initialization. This has been introduced due + * to the use of the signal framework for paging (RM service) in base-hw. + */ + static Signal_root signal_root(&sliced_heap, core_env()->cap_session()); + char const * const signal_name = Signal_session::service_name(); + static Local_service signal_service(signal_name, &signal_root); + local_services.insert(&signal_service); + static Cap_root cap_root (e, &sliced_heap); static Ram_root ram_root (e, e, platform()->ram_alloc(), &sliced_heap); static Rom_root rom_root (e, e, platform()->rom_fs(), &sliced_heap); @@ -210,7 +220,6 @@ int main() platform()->ram_alloc(), &sliced_heap); static Irq_root irq_root (core_env()->cap_session(), platform()->irq_alloc(), &sliced_heap); - static Signal_root signal_root (&sliced_heap, core_env()->cap_session()); static Trace::Root trace_root (e, &sliced_heap, trace_sources, trace_policies); /* @@ -227,7 +236,6 @@ int main() Local_service(Log_session::service_name(), &log_root), Local_service(Io_mem_session::service_name(), &io_mem_root), Local_service(Irq_session::service_name(), &irq_root), - Local_service(Signal_session::service_name(), &signal_root), Local_service(Trace::Session::service_name(), &trace_root) };