diff --git a/repos/base-fiasco/lib/mk/base-common.mk b/repos/base-fiasco/lib/mk/base-common.mk index 025423b27..8cf7bbb60 100644 --- a/repos/base-fiasco/lib/mk/base-common.mk +++ b/repos/base-fiasco/lib/mk/base-common.mk @@ -22,6 +22,7 @@ SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/thread_bootstrap.cc thread/trace.cc SRC_CC += thread/myself.cc SRC_CC += thread/context_allocator.cc +SRC_CC += sleep.cc INC_DIR += $(REP_DIR)/src/base/lock INC_DIR += $(BASE_DIR)/src/base/thread diff --git a/repos/base-fiasco/include/base/sleep.h b/repos/base-fiasco/src/base/sleep.cc similarity index 53% rename from repos/base-fiasco/include/base/sleep.h rename to repos/base-fiasco/src/base/sleep.cc index 9a05e8e51..a607bcb02 100644 --- a/repos/base-fiasco/include/base/sleep.h +++ b/repos/base-fiasco/src/base/sleep.cc @@ -6,26 +6,23 @@ */ /* - * Copyright (C) 2006-2014 Genode Labs GmbH + * Copyright (C) 2006-2016 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. */ -#ifndef _INCLUDE__BASE__SLEEP_H_ -#define _INCLUDE__BASE__SLEEP_H_ +/* Genode includes */ +#include +#include /* L4/Fiasco includes */ namespace Fiasco { #include } -namespace Genode { - __attribute__((noreturn)) inline void sleep_forever() - { - while (true) Fiasco::l4_ipc_sleep((Fiasco::l4_timeout_t){0}); - } +void Genode::sleep_forever() +{ + while (true) Fiasco::l4_ipc_sleep((Fiasco::l4_timeout_t){0}); } - -#endif /* _INCLUDE__BASE__SLEEP_H_ */ diff --git a/repos/base-foc/lib/mk/base-common.mk b/repos/base-foc/lib/mk/base-common.mk index ff486abc9..ed32cd7c1 100644 --- a/repos/base-foc/lib/mk/base-common.mk +++ b/repos/base-foc/lib/mk/base-common.mk @@ -22,6 +22,7 @@ SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/thread_bootstrap.cc thread/trace.cc SRC_CC += thread/myself.cc SRC_CC += thread/context_allocator.cc +SRC_CC += sleep.cc INC_DIR += $(REP_DIR)/src/base/lock INC_DIR += $(BASE_DIR)/src/base/lock diff --git a/repos/base-hw/lib/mk/base-common.inc b/repos/base-hw/lib/mk/base-common.inc index 59b16c09c..675aa63ee 100644 --- a/repos/base-hw/lib/mk/base-common.inc +++ b/repos/base-hw/lib/mk/base-common.inc @@ -29,6 +29,7 @@ SRC_CC += thread/bootstrap.cc SRC_CC += thread/trace.cc SRC_CC += thread/context_allocator.cc SRC_CC += kernel/interface.cc +SRC_CC += sleep.cc # add include paths INC_DIR += $(REP_DIR)/src/base/lock diff --git a/repos/base-linux/lib/mk/base-common.mk b/repos/base-linux/lib/mk/base-common.mk index 30fcf40d6..2b112b3ea 100644 --- a/repos/base-linux/lib/mk/base-common.mk +++ b/repos/base-linux/lib/mk/base-common.mk @@ -21,6 +21,7 @@ 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 SRC_CC += irq/platform.cc +SRC_CC += sleep.cc INC_DIR += $(REP_DIR)/src/base/lock $(BASE_DIR)/src/base/lock INC_DIR += $(REP_DIR)/src/base/ipc diff --git a/repos/base-nova/include/base/sleep.h b/repos/base-nova/include/base/sleep.h deleted file mode 100644 index a76fe1e19..000000000 --- a/repos/base-nova/include/base/sleep.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * \brief Lay back and relax - * \author Norman Feske - * \author Alexander Boettcher - * \date 2010-02-01 - */ - -/* - * Copyright (C) 2010-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. - */ - -#ifndef _INCLUDE__BASE__SLEEP_H_ -#define _INCLUDE__BASE__SLEEP_H_ - -/* Genode includes */ -#include - -/* NOVA includes */ -#include -#include - -namespace Genode { - - __attribute__((noreturn)) inline void sleep_forever() - { - using namespace Nova; - - Thread_base *myself = Thread_base::myself(); - addr_t sem = myself ? myself->tid().exc_pt_sel + SM_SEL_EC : SM_SEL_EC; - - while (1) { - if (Nova::sm_ctrl(sem, SEMAPHORE_DOWNZERO)) - nova_die(); - } - } -} - -#endif /* _INCLUDE__BASE__SLEEP_H_ */ diff --git a/repos/base-nova/lib/mk/base-common.mk b/repos/base-nova/lib/mk/base-common.mk index 0342a1bab..906931672 100644 --- a/repos/base-nova/lib/mk/base-common.mk +++ b/repos/base-nova/lib/mk/base-common.mk @@ -21,6 +21,7 @@ SRC_CC += server/server.cc SRC_CC += thread/thread.cc thread/thread_context.cc thread/trace.cc SRC_CC += thread/myself.cc SRC_CC += thread/context_allocator.cc env/cap_map.cc +SRC_CC += sleep.cc INC_DIR += $(REP_DIR)/src/base/lock INC_DIR += $(BASE_DIR)/src/base/lock diff --git a/repos/base-nova/src/base/sleep.cc b/repos/base-nova/src/base/sleep.cc new file mode 100644 index 000000000..08bb47d6f --- /dev/null +++ b/repos/base-nova/src/base/sleep.cc @@ -0,0 +1,34 @@ +/* + * \brief Lay back and relax + * \author Norman Feske + * \author Christian Helmuth + * \date 2006-07-19 + */ + +/* + * Copyright (C) 2006-2016 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 +#include + +/* NOVA includes */ +#include +#include + +void Genode::sleep_forever() +{ + using namespace Nova; + + Thread_base *myself = Thread_base::myself(); + addr_t sem = myself ? myself->tid().exc_pt_sel + SM_SEL_EC : SM_SEL_EC; + + while (1) { + if (Nova::sm_ctrl(sem, SEMAPHORE_DOWNZERO)) + nova_die(); + } +} diff --git a/repos/base-okl4/lib/mk/base-common.mk b/repos/base-okl4/lib/mk/base-common.mk index 11fa72630..c736157a1 100644 --- a/repos/base-okl4/lib/mk/base-common.mk +++ b/repos/base-okl4/lib/mk/base-common.mk @@ -22,6 +22,7 @@ SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/thread_bootstrap.cc thread/trace.cc SRC_CC += thread/myself.cc SRC_CC += thread/context_allocator.cc +SRC_CC += sleep.cc INC_DIR += $(REP_DIR)/src/base/lock INC_DIR += $(BASE_DIR)/src/base/lock diff --git a/repos/base-pistachio/lib/mk/base-common.mk b/repos/base-pistachio/lib/mk/base-common.mk index be3800e78..b21f8b4c3 100644 --- a/repos/base-pistachio/lib/mk/base-common.mk +++ b/repos/base-pistachio/lib/mk/base-common.mk @@ -22,6 +22,7 @@ SRC_CC += server/server.cc server/common.cc SRC_CC += thread/thread.cc thread/trace.cc thread/thread_bootstrap.cc SRC_CC += thread/myself.cc SRC_CC += thread/context_allocator.cc +SRC_CC += sleep.cc INC_DIR += $(REP_DIR)/src/base/lock INC_DIR += $(BASE_DIR)/src/base/lock diff --git a/repos/base-sel4/lib/mk/base-common.inc b/repos/base-sel4/lib/mk/base-common.inc index 6c91736fc..552eaff36 100644 --- a/repos/base-sel4/lib/mk/base-common.inc +++ b/repos/base-sel4/lib/mk/base-common.inc @@ -24,6 +24,7 @@ SRC_CC += thread/myself.cc SRC_CC += thread/context_allocator.cc SRC_CC += thread/thread_bootstrap.cc SRC_CC += env/capability.cc +SRC_CC += sleep.cc INC_DIR += $(REP_DIR)/src/base INC_DIR += $(REP_DIR)/src/base/lock diff --git a/repos/base/include/base/sleep.h b/repos/base/include/base/sleep.h index 98f7403dc..7df8b438c 100644 --- a/repos/base/include/base/sleep.h +++ b/repos/base/include/base/sleep.h @@ -15,15 +15,6 @@ #ifndef _INCLUDE__BASE__SLEEP_H_ #define _INCLUDE__BASE__SLEEP_H_ -#include - -namespace Genode { - - __attribute__((noreturn)) inline void sleep_forever() - { - Lock sleep; - while (true) sleep.lock(); - } -} +namespace Genode { __attribute__((noreturn)) void sleep_forever(); } #endif /* _INCLUDE__BASE__SLEEP_H_ */ diff --git a/repos/base/src/base/sleep.cc b/repos/base/src/base/sleep.cc new file mode 100644 index 000000000..ad1dad49f --- /dev/null +++ b/repos/base/src/base/sleep.cc @@ -0,0 +1,22 @@ +/* + * \brief Lay back and relax + * \author Norman Feske + * \author Christian Helmuth + * \date 2006-07-19 + */ + +/* + * Copyright (C) 2006-2016 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 +#include + +void Genode::sleep_forever() +{ + Lock sleep; + while (true) sleep.lock(); +}