summaryrefslogtreecommitdiff
path: root/rts/IOManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'rts/IOManager.h')
-rw-r--r--rts/IOManager.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/rts/IOManager.h b/rts/IOManager.h
index 1059f4212e..614c3ac9c7 100644
--- a/rts/IOManager.h
+++ b/rts/IOManager.h
@@ -48,6 +48,24 @@ void initIOManagerAfterFork(/* inout */ Capability **pcap);
void stopIOManager(void);
void exitIOManager(bool wait_threads);
+
+/* Wakeup hook: called from the scheduler's wakeUpRts (currently only in
+ * threaded mode).
+ *
+ * The I/O manager can be blocked waiting on I/O or timers. Sometimes there are
+ * other external events where we need to wake up the I/O manager and return
+ * to the schedulr.
+ *
+ * At the moment, all the non-threaded I/O managers will do this automagically
+ * since a signal will interrupt any waiting system calls, so at the moment
+ * the implementation for the non-threaded I/O managers does nothing.
+ *
+ * For the I/O managers in threaded mode, this arranges to unblock the I/O
+ * manager if it waa blocked waiting.
+ */
+void wakeupIOManager(void);
+
+
/*
* Communicating with the IO manager thread (see GHC.Conc).
* Posix implementation in posix/Signals.c