diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-09-07 01:48:46 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2019-09-07 04:13:18 -0400 |
commit | 95844745eda80f8fe35794c81e4ac87b9d528999 (patch) | |
tree | 3b027829a84db11a2d842447dbec0de50979fb04 /rts/Messages.c | |
parent | b55ee979d32df938eee9c4c02c189f8be267e8a1 (diff) | |
download | haskell-wip/pause-threads.tar.gz |
Support for pausing other threadswip/pause-threads
Diffstat (limited to 'rts/Messages.c')
-rw-r--r-- | rts/Messages.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/rts/Messages.c b/rts/Messages.c index d878db5eda..fa3db268cd 100644 --- a/rts/Messages.c +++ b/rts/Messages.c @@ -77,6 +77,15 @@ loop: (W_)tso->id); tryWakeupThread(cap, tso); } + else if (i == &stg_MSG_PAUSE_THREAD_info) + { + MessagePauseThread *t = (MessagePauseThread *)m; + StgStack *stack = t->tso->stackobj; + stack->sp += sizeofW(StgPauseThread); + StgPauseThread *frame = (StgPauseThread *) stack->sp; + frame->mvar = t->mvar; + frame->header.info = &stg_pause_thread_info; + } else if (i == &stg_MSG_THROWTO_info) { MessageThrowTo *t = (MessageThrowTo *)m; |