+#endif
+
+/* raiseAsync()
+ *
+ * Raises an exception asynchronously in the specified thread.
+ *
+ * Called from STG : yes
+ * Locks assumed : none
+ */
+void raiseAsync(StgTSO *tso, StgClosure *exception);
+void raiseAsyncWithLock(StgTSO *tso, StgClosure *exception);
+
+/* awaitEvent(rtsBool wait)
+ *
+ * Checks for blocked threads that need to be woken.
+ *
+ * Called from STG : NO
+ * Locks assumed : sched_mutex
+ */
+void awaitEvent(rtsBool wait); /* In Select.c */
+
+/* wakeUpSleepingThreads(nat ticks)
+ *
+ * Wakes up any sleeping threads whose timers have expired.
+ *
+ * Called from STG : NO
+ * Locks assumed : sched_mutex
+ */
+rtsBool wakeUpSleepingThreads(nat); /* In Select.c */
+
+/* wakeBlockedWorkerThread()
+ *
+ * If a worker thread is currently blocked in awaitEvent(), interrupt it.
+ *
+ * Called from STG : NO
+ * Locks assumed : sched_mutex
+ */
+void wakeBlockedWorkerThread(void); /* In Select.c */
+
+/* resetWorkerWakeupPipeAfterFork()
+ *
+ * Notify Select.c that a fork() has occured
+ *
+ * Called from STG : NO
+ * Locks assumed : don't care, but must be called right after fork()
+ */
+void resetWorkerWakeupPipeAfterFork(void); /* In Select.c */
+
+/* GetRoots(evac_fn f)
+ *
+ * Call f() for each root known to the scheduler.
+ *
+ * Called from STG : NO
+ * Locks assumed : ????
+ */
+void GetRoots(evac_fn);
+
+// ToDo: check whether all fcts below are used in the SMP version, too
+#if defined(GRAN)
+void awaken_blocked_queue(StgBlockingQueueElement *q, StgClosure *node);
+void unlink_from_bq(StgTSO* tso, StgClosure* node);
+void initThread(StgTSO *tso, nat stack_size, StgInt pri);
+#elif defined(PAR)
+nat run_queue_len(void);
+void awaken_blocked_queue(StgBlockingQueueElement *q, StgClosure *node);