summaryrefslogtreecommitdiff
path: root/rts/win32/ConsoleHandler.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/win32/ConsoleHandler.c')
-rw-r--r--rts/win32/ConsoleHandler.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/rts/win32/ConsoleHandler.c b/rts/win32/ConsoleHandler.c
index 3d283b0162..545a76a004 100644
--- a/rts/win32/ConsoleHandler.c
+++ b/rts/win32/ConsoleHandler.c
@@ -183,13 +183,15 @@ void startSignalHandlers(Capability *cap)
handler = deRefStablePtr((StgStablePtr)console_handler);
while (stg_pending_events > 0) {
stg_pending_events--;
- scheduleThread(cap,
+ StgTSO *t =
createIOThread(cap,
- RtsFlags.GcFlags.initialStkSize,
- rts_apply(cap,
- (StgClosure *)handler,
- rts_mkInt(cap,
- stg_pending_buf[stg_pending_events]))));
+ RtsFlags.GcFlags.initialStkSize,
+ rts_apply(cap,
+ (StgClosure *)handler,
+ rts_mkInt(cap,
+ stg_pending_buf[stg_pending_events])));
+ scheduleThread(cap, t);
+ labelThread(cap, t, "signal handler thread");
}
RELEASE_LOCK(&sched_mutex);
@@ -197,18 +199,6 @@ void startSignalHandlers(Capability *cap)
}
#endif /* !THREADED_RTS */
-/*
- * Function: markSignalHandlers()
- *
- * Evacuate the handler stack. _Assumes_ that console event delivery
- * has already been blocked.
- */
-void markSignalHandlers (evac_fn evac STG_UNUSED, void *user STG_UNUSED)
-{
- // nothing to mark; the console handler is a StablePtr which is
- // already treated as a root by the GC.
-}
-
/*
* Function: generic_handler()