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();
+}