diff --git a/repos/base-codezero/lib/mk/base-common.mk b/repos/base-codezero/lib/mk/base-common.mk index a284b7669..2e200fe3d 100644 --- a/repos/base-codezero/lib/mk/base-common.mk +++ b/repos/base-codezero/lib/mk/base-common.mk @@ -18,7 +18,7 @@ SRC_CC += child/child.cc SRC_CC += process/process.cc SRC_CC += elf/elf_binary.cc SRC_CC += lock/lock.cc -SRC_CC += signal/signal.cc signal/common.cc +SRC_CC += signal/signal.cc signal/common.cc signal/platform.cc SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/thread_bootstrap.cc thread/trace.cc SRC_CC += thread/context_allocator.cc env/utcb.cc diff --git a/repos/base-fiasco/lib/mk/base-common.mk b/repos/base-fiasco/lib/mk/base-common.mk index eaaa37078..1380eecfe 100644 --- a/repos/base-fiasco/lib/mk/base-common.mk +++ b/repos/base-fiasco/lib/mk/base-common.mk @@ -18,7 +18,7 @@ SRC_CC += child/child.cc SRC_CC += process/process.cc SRC_CC += elf/elf_binary.cc SRC_CC += lock/lock.cc -SRC_CC += signal/signal.cc signal/common.cc +SRC_CC += signal/signal.cc signal/common.cc signal/platform.cc SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/thread_bootstrap.cc thread/trace.cc SRC_CC += thread/context_allocator.cc diff --git a/repos/base-foc/lib/mk/base-common.inc b/repos/base-foc/lib/mk/base-common.inc index 3b124c936..bd17c24bd 100644 --- a/repos/base-foc/lib/mk/base-common.inc +++ b/repos/base-foc/lib/mk/base-common.inc @@ -18,7 +18,7 @@ SRC_CC += process/process.cc SRC_CC += elf/elf_binary.cc SRC_CC += lock/lock.cc SRC_CC += env/spin_lock.cc env/cap_map.cc -SRC_CC += signal/signal.cc signal/common.cc +SRC_CC += signal/signal.cc signal/common.cc signal/platform.cc SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/thread_bootstrap.cc thread/trace.cc SRC_CC += thread/context_allocator.cc diff --git a/repos/base-host/lib/mk/base-common.mk b/repos/base-host/lib/mk/base-common.mk index c8658317e..bb79fbc89 100644 --- a/repos/base-host/lib/mk/base-common.mk +++ b/repos/base-host/lib/mk/base-common.mk @@ -18,7 +18,7 @@ SRC_CC += child/child.cc SRC_CC += process/process.cc SRC_CC += elf/elf_binary.cc SRC_CC += lock/lock.cc -SRC_CC += signal/signal.cc signal/common.cc +SRC_CC += signal/signal.cc signal/common.cc signal/platform.cc SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/thread_bootstrap_empty.cc diff --git a/repos/base-hw/lib/mk/base-common.inc b/repos/base-hw/lib/mk/base-common.inc index 8980aac74..1616aa9de 100644 --- a/repos/base-hw/lib/mk/base-common.inc +++ b/repos/base-hw/lib/mk/base-common.inc @@ -21,8 +21,7 @@ SRC_CC += process/process.cc SRC_CC += elf/elf_binary.cc SRC_CC += console/console.cc SRC_CC += lock/lock.cc -SRC_CC += signal/signal.cc -SRC_CC += signal/common.cc +SRC_CC += signal/signal.cc signal/common.cc signal/platform.cc SRC_CC += server/server.cc SRC_CC += server/common.cc SRC_CC += thread/bootstrap.cc diff --git a/repos/base-hw/src/base/signal/platform.cc b/repos/base-hw/src/base/signal/platform.cc new file mode 100644 index 000000000..1fdcfdd9b --- /dev/null +++ b/repos/base-hw/src/base/signal/platform.cc @@ -0,0 +1,32 @@ +/* + * \brief Implementations of the signaling framework specific for HW-core + * \author Martin Stein + * \date 2012-05-05 + */ + +/* + * Copyright (C) 2012-2015 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + + +/* Genode includes */ +#include + +/* base-hw includes */ +#include + +using namespace Genode; + +/************************ + ** Signal transmitter ** + ************************/ +void Signal_transmitter::submit(unsigned cnt) +{ + { + Trace::Signal_submit trace_event(cnt); + } + Kernel::submit_signal(_context.dst(), cnt); +} diff --git a/repos/base-hw/src/base/signal/signal.cc b/repos/base-hw/src/base/signal/signal.cc index f56bfdf6d..0653b421a 100644 --- a/repos/base-hw/src/base/signal/signal.cc +++ b/repos/base-hw/src/base/signal/signal.cc @@ -79,10 +79,7 @@ void Signal_context::submit(unsigned num) ** Signal transmitter ** ************************/ -void Signal_transmitter::submit(unsigned const cnt) -{ - Kernel::submit_signal(_context.dst(), cnt); -} +Signal_connection * Signal_transmitter::connection() { return signal_connection(); } /********************* diff --git a/repos/base-linux/lib/mk/base-common.mk b/repos/base-linux/lib/mk/base-common.mk index 5077a5d61..4f275331d 100644 --- a/repos/base-linux/lib/mk/base-common.mk +++ b/repos/base-linux/lib/mk/base-common.mk @@ -17,7 +17,7 @@ SRC_CC += process/process.cc SRC_CC += elf/elf_binary.cc SRC_CC += lock/lock.cc SRC_CC += env/rm_session_mmap.cc env/debug.cc -SRC_CC += signal/signal.cc signal/common.cc +SRC_CC += signal/signal.cc signal/common.cc signal/platform.cc SRC_CC += server/server.cc server/common.cc SRC_CC += thread/trace.cc thread/thread_env.cc thread/context_allocator.cc diff --git a/repos/base-nova/lib/mk/base-common.inc b/repos/base-nova/lib/mk/base-common.inc index 9834b3d47..9b14e2e2a 100644 --- a/repos/base-nova/lib/mk/base-common.inc +++ b/repos/base-nova/lib/mk/base-common.inc @@ -16,7 +16,7 @@ SRC_CC += child/child.cc SRC_CC += process/process.cc SRC_CC += elf/elf_binary.cc SRC_CC += lock/lock.cc -SRC_CC += signal/signal.cc signal/common.cc +SRC_CC += signal/signal.cc signal/common.cc signal/platform.cc SRC_CC += server/server.cc SRC_CC += thread/thread.cc thread/thread_context.cc thread/trace.cc SRC_CC += thread/context_allocator.cc env/cap_map.cc diff --git a/repos/base-okl4/lib/mk/base-common.mk b/repos/base-okl4/lib/mk/base-common.mk index a44169aad..05974f5fb 100644 --- a/repos/base-okl4/lib/mk/base-common.mk +++ b/repos/base-okl4/lib/mk/base-common.mk @@ -18,7 +18,7 @@ SRC_CC += child/child.cc SRC_CC += process/process.cc SRC_CC += elf/elf_binary.cc SRC_CC += lock/lock.cc -SRC_CC += signal/signal.cc signal/common.cc +SRC_CC += signal/signal.cc signal/common.cc signal/platform.cc SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/thread_bootstrap.cc thread/trace.cc SRC_CC += thread/context_allocator.cc diff --git a/repos/base-pistachio/lib/mk/base-common.mk b/repos/base-pistachio/lib/mk/base-common.mk index c5ec1906c..a98ca4a7d 100644 --- a/repos/base-pistachio/lib/mk/base-common.mk +++ b/repos/base-pistachio/lib/mk/base-common.mk @@ -18,7 +18,7 @@ SRC_CC += child/child.cc SRC_CC += process/process.cc SRC_CC += elf/elf_binary.cc SRC_CC += lock/lock.cc -SRC_CC += signal/signal.cc signal/common.cc +SRC_CC += signal/signal.cc signal/common.cc signal/platform.cc SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/trace.cc thread/thread_bootstrap.cc SRC_CC += thread/context_allocator.cc diff --git a/repos/base/include/base/signal.h b/repos/base/include/base/signal.h index a6f8852c8..4f0885ab3 100644 --- a/repos/base/include/base/signal.h +++ b/repos/base/include/base/signal.h @@ -34,6 +34,7 @@ namespace Genode { class Signal_transmitter; class Signal; class Signal_dispatcher_base; + class Signal_connection; template class Signal_dispatcher; } @@ -122,6 +123,8 @@ class Genode::Signal_transmitter Signal_context_capability _context; /* destination */ + Signal_connection * connection(); + public: /** diff --git a/repos/base/src/base/signal/platform.cc b/repos/base/src/base/signal/platform.cc new file mode 100644 index 000000000..d175021f7 --- /dev/null +++ b/repos/base/src/base/signal/platform.cc @@ -0,0 +1,29 @@ +/* + * \brief Generic implementation parts of the signaling framework which are + * implemented platform specifically, e.g. base-hw and base-nova. + * \author Norman Feske + * \author Alexander Boettcher + */ + +/* + * Copyright (C) 2008-2015 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + + +#include + +using namespace Genode; + +/************************ + ** Signal transmitter ** + ************************/ +void Signal_transmitter::submit(unsigned cnt) +{ + { + Trace::Signal_submit trace_event(cnt); + } + connection()->submit(_context, cnt); +} diff --git a/repos/base/src/base/signal/signal.cc b/repos/base/src/base/signal/signal.cc index b0a53dfbf..567b2438a 100644 --- a/repos/base/src/base/signal/signal.cc +++ b/repos/base/src/base/signal/signal.cc @@ -228,14 +228,7 @@ void Signal_context::submit(unsigned num) ** Signal transmitter ** ************************/ -void Signal_transmitter::submit(unsigned cnt) -{ - { - Trace::Signal_submit trace_event(cnt); - } - signal_connection()->submit(_context, cnt); -} - +Signal_connection * Signal_transmitter::connection() { return signal_connection(); } /********************* ** Signal receiver **