base: restructure signal-submit initialization

This patch allows core's 'Signal_transmitter' implementation to sidestep
the 'Env::Pd' interface and thereby adhere to a stricter layering within
core. The 'Signal_transmitter' now uses - on kernels that depend on it -
a dedicated (and fairly freestanding) RPC proxy mechanism for signal
deliver, instead of channeling signals through the 'Pd_session::submit'
RPC function.
This commit is contained in:
Norman Feske
2017-05-10 20:11:38 +02:00
committed by Christian Helmuth
parent 71efb59873
commit a1df4fee44
38 changed files with 372 additions and 64 deletions

View File

@@ -8,8 +8,8 @@ include $(BASE_DIR)/lib/mk/base-common.inc
LIBS += startup-nova
SRC_CC += signal_submit.cc
SRC_CC += thread.cc thread_myself.cc
SRC_CC += stack.cc
SRC_CC += cap_map.cc
SRC_CC += capability.cc
SRC_CC += signal_transmitter.cc

View File

@@ -3,3 +3,4 @@ include $(BASE_DIR)/lib/mk/base.inc
LIBS += base-nova-common cxx timeout
SRC_CC += thread_start.cc
SRC_CC += cache.cc
SRC_CC += signal.cc

View File

@@ -39,7 +39,9 @@ SRC_CC += stack_area.cc \
rom_session_component.cc \
thread_start.cc \
bios_data_area.cc \
trace_session_component.cc
trace_session_component.cc \
signal_transmitter_noinit.cc \
signal_receiver.cc
INC_DIR = $(REP_DIR)/src/core/include \
$(REP_DIR)/src/include \
@@ -58,6 +60,8 @@ vpath pd_session_component.cc $(GEN_CORE_DIR)
vpath pd_upgrade_ram_quota.cc $(GEN_CORE_DIR)
vpath region_map_component.cc $(GEN_CORE_DIR)
vpath trace_session_component.cc $(GEN_CORE_DIR)
vpath signal_transmitter_noinit.cc $(GEN_CORE_DIR)
vpath signal_receiver.cc $(GEN_CORE_DIR)
vpath io_port_session_component.cc $(GEN_CORE_DIR)/spec/x86
vpath io_port_session_support.cc $(GEN_CORE_DIR)/spec/x86
vpath io_mem_session_component.cc $(GEN_CORE_DIR)

View File

@@ -11,18 +11,23 @@
* under the terms of the GNU Affero General Public License version 3.
*/
/* Genode includes */
#include <base/signal.h>
#include <base/log.h>
#include <base/trace/events.h>
/* base-internal includes */
#include <base/internal/globals.h>
/* NOVA includes */
#include <nova/syscalls.h>
using namespace Genode;
void Genode::init_signal_transmitter(Env &) { }
void Signal_transmitter::submit(unsigned cnt)
{
{