summaryrefslogtreecommitdiff
path: root/rts/Schedule.h
diff options
context:
space:
mode:
authorSimon Marlow <simonmar@microsoft.com>2006-06-08 14:44:57 +0000
committerSimon Marlow <simonmar@microsoft.com>2006-06-08 14:44:57 +0000
commit7434fb5be86c7cc59c520dc07dc96b27b4fb1406 (patch)
tree2d1a6b2467cab24f780b356832d0dcb1307caf5a /rts/Schedule.h
parent5a2769f0273dd389977e8283375e7920d183bdd4 (diff)
downloadhaskell-7434fb5be86c7cc59c520dc07dc96b27b4fb1406.tar.gz
fix possible ^C problems
Calling prodAllCapabilities() from interruptStgRts() was wrong, for the same reasons that we stopped doing it in handle_tick(). We now use the same mechanism (send a byte down the pipe to the IO manager thread), but abstract it in a wakeUpRts() function in the scheduler.
Diffstat (limited to 'rts/Schedule.h')
-rw-r--r--rts/Schedule.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/rts/Schedule.h b/rts/Schedule.h
index 3adb70f4a8..e30e911e68 100644
--- a/rts/Schedule.h
+++ b/rts/Schedule.h
@@ -43,6 +43,12 @@ void awakenBlockedQueue(StgBlockingQueueElement *q, StgClosure *node);
void awakenBlockedQueue (Capability *cap, StgTSO *tso);
#endif
+/* wakeUpRts()
+ *
+ * Causes an OS thread to wake up and run the scheduler, if necessary.
+ */
+void wakeUpRts(void);
+
/* unblockOne()
*
* Put the specified thread on the run queue of the given Capability.