diff options
Diffstat (limited to 'rts/win32/ConsoleHandler.c')
-rw-r--r-- | rts/win32/ConsoleHandler.c | 26 |
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() |