From 20e91d0b606ffc4ae8140cc6ed49700086c0956c Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Mon, 4 Nov 2013 17:04:27 +0100 Subject: [PATCH] base: individual implementations of pager-object ref #935 --- base-codezero/lib/mk/base-common.mk | 2 +- base-fiasco/lib/mk/base-common.mk | 2 +- base-foc/lib/mk/base-common.inc | 2 +- base-host/lib/mk/base-common.mk | 2 +- base-hw/lib/mk/base-common.mk | 1 + base-okl4/lib/mk/base-common.mk | 2 +- base-pistachio/lib/mk/base-common.mk | 2 +- base/include/base/pager.h | 12 ++++-------- base/src/base/pager/common.cc | 27 +++++++++++++++++++++++++++ 9 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 base/src/base/pager/common.cc diff --git a/base-codezero/lib/mk/base-common.mk b/base-codezero/lib/mk/base-common.mk index 6e1008e60..67d97ab9e 100644 --- a/base-codezero/lib/mk/base-common.mk +++ b/base-codezero/lib/mk/base-common.mk @@ -8,7 +8,7 @@ LIBS += cxx l4 startup SRC_CC += cap_copy.cc main_bootstrap.cc SRC_CC += ipc/ipc.cc ipc/pager.cc ipc/ipc_marshal_cap.cc -SRC_CC += pager/pager.cc +SRC_CC += pager/pager.cc pager/common.cc SRC_CC += avl_tree/avl_tree.cc SRC_CC += allocator/slab.cc SRC_CC += allocator/allocator_avl.cc diff --git a/base-fiasco/lib/mk/base-common.mk b/base-fiasco/lib/mk/base-common.mk index 39f6e3162..8244261eb 100644 --- a/base-fiasco/lib/mk/base-common.mk +++ b/base-fiasco/lib/mk/base-common.mk @@ -8,7 +8,7 @@ LIBS += cxx startup SRC_CC += cap_copy.cc main_bootstrap.cc SRC_CC += ipc/ipc.cc ipc/pager.cc ipc/ipc_marshal_cap.cc -SRC_CC += pager/pager.cc +SRC_CC += pager/pager.cc pager/common.cc SRC_CC += avl_tree/avl_tree.cc SRC_CC += allocator/slab.cc SRC_CC += allocator/allocator_avl.cc diff --git a/base-foc/lib/mk/base-common.inc b/base-foc/lib/mk/base-common.inc index 97339de7f..2a537a84a 100644 --- a/base-foc/lib/mk/base-common.inc +++ b/base-foc/lib/mk/base-common.inc @@ -8,7 +8,7 @@ LIBS += cxx syscall startup SRC_CC += main_bootstrap.cc SRC_CC += ipc/ipc.cc ipc/pager.cc -SRC_CC += pager/pager.cc +SRC_CC += pager/pager.cc pager/common.cc SRC_CC += avl_tree/avl_tree.cc SRC_CC += allocator/slab.cc SRC_CC += allocator/allocator_avl.cc diff --git a/base-host/lib/mk/base-common.mk b/base-host/lib/mk/base-common.mk index d421a4b3d..c8658317e 100644 --- a/base-host/lib/mk/base-common.mk +++ b/base-host/lib/mk/base-common.mk @@ -8,7 +8,7 @@ LIBS += cxx SRC_CC += cap_copy.cc SRC_CC += ipc/ipc.cc ipc/ipc_marshal_cap.cc -SRC_CC += pager/pager.cc +SRC_CC += pager/pager.cc pager/common.cc SRC_CC += avl_tree/avl_tree.cc SRC_CC += allocator/slab.cc SRC_CC += allocator/allocator_avl.cc diff --git a/base-hw/lib/mk/base-common.mk b/base-hw/lib/mk/base-common.mk index 3acdbc877..024e40059 100644 --- a/base-hw/lib/mk/base-common.mk +++ b/base-hw/lib/mk/base-common.mk @@ -20,6 +20,7 @@ SRC_CC += lock/lock.cc SRC_CC += signal/signal.cc signal/common.cc SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread_bootstrap.cc thread/trace.cc +SRC_CC += pager/common.cc INC_DIR += $(REP_DIR)/src/base/lock INC_DIR += $(BASE_DIR)/src/base/lock diff --git a/base-okl4/lib/mk/base-common.mk b/base-okl4/lib/mk/base-common.mk index e6b8332d9..07c390ace 100644 --- a/base-okl4/lib/mk/base-common.mk +++ b/base-okl4/lib/mk/base-common.mk @@ -8,7 +8,7 @@ LIBS += cxx startup SRC_CC += cap_copy.cc main_bootstrap.cc SRC_CC += ipc/ipc.cc ipc/pager.cc ipc/ipc_marshal_cap.cc -SRC_CC += pager/pager.cc +SRC_CC += pager/pager.cc pager/common.cc SRC_CC += avl_tree/avl_tree.cc SRC_CC += allocator/slab.cc SRC_CC += allocator/allocator_avl.cc diff --git a/base-pistachio/lib/mk/base-common.mk b/base-pistachio/lib/mk/base-common.mk index a064d07db..141e0dd0c 100644 --- a/base-pistachio/lib/mk/base-common.mk +++ b/base-pistachio/lib/mk/base-common.mk @@ -8,7 +8,7 @@ LIBS += cxx startup SRC_CC += cap_copy.cc main_bootstrap.cc SRC_CC += ipc/ipc.cc ipc/pager.cc ipc/ipc_marshal_cap.cc -SRC_CC += pager/pager.cc +SRC_CC += pager/pager.cc pager/common.cc SRC_CC += avl_tree/avl_tree.cc SRC_CC += allocator/slab.cc SRC_CC += allocator/allocator_avl.cc diff --git a/base/include/base/pager.h b/base/include/base/pager.h index 38e84e0dd..7c03e7ea1 100644 --- a/base/include/base/pager.h +++ b/base/include/base/pager.h @@ -79,14 +79,10 @@ namespace Genode { */ virtual int pager(Ipc_pager &ps) = 0; - void wake_up() - { - /* notify pager to wake up faulter */ - Msgbuf<16> snd, rcv; - Native_capability pager = cap(); - Ipc_client ipc_client(pager, &snd, &rcv); - ipc_client << this << IPC_CALL; - } + /** + * Wake up the faulter + */ + void wake_up(); /** * Assign user-level exception handler for the pager object diff --git a/base/src/base/pager/common.cc b/base/src/base/pager/common.cc new file mode 100644 index 000000000..bf529456c --- /dev/null +++ b/base/src/base/pager/common.cc @@ -0,0 +1,27 @@ +/* + * \brief Standard implementation of pager object + * \author Martin Stein + * \date 2013-11-04 + */ + +/* + * Copyright (C) 2013 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 + +using namespace Genode; + + +void Pager_object::wake_up() +{ + /* notify pager to wake up faulter */ + Msgbuf<16> snd, rcv; + Native_capability pager = cap(); + Ipc_client ipc_client(pager, &snd, &rcv); + ipc_client << this << IPC_CALL; +}