diff options
author | Edward Z. Yang <ezyang@mit.edu> | 2013-07-08 11:03:35 -0700 |
---|---|---|
committer | Edward Z. Yang <ezyang@mit.edu> | 2013-07-09 11:29:11 -0700 |
commit | 70e20631742e516c6a11c3c112fbd5b4a08c15ac (patch) | |
tree | d0097f8b1c8e5c0a67b26bb950c036ea7684c65d /rts/Trace.c | |
parent | ca9a431401755f119d97dec59a1fc963a8e9f681 (diff) | |
download | haskell-70e20631742e516c6a11c3c112fbd5b4a08c15ac.tar.gz |
Implement atomicReadMVar, fixing #4001.
We add the invariant to the MVar blocked threads queue that
threads blocked on an atomic read are always at the front of
the queue. This invariant is easy to maintain, since takers
are only ever added to the end of the queue.
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Diffstat (limited to 'rts/Trace.c')
-rw-r--r-- | rts/Trace.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/rts/Trace.c b/rts/Trace.c index 78dfead450..21901891cb 100644 --- a/rts/Trace.c +++ b/rts/Trace.c @@ -179,6 +179,7 @@ static char *thread_stop_reasons[] = { [ThreadFinished] = "finished", [THREAD_SUSPENDED_FOREIGN_CALL] = "suspended while making a foreign call", [6 + BlockedOnMVar] = "blocked on an MVar", + [6 + BlockedOnMVarRead] = "blocked on an atomic MVar read", [6 + BlockedOnBlackHole] = "blocked on a black hole", [6 + BlockedOnRead] = "blocked on a read operation", [6 + BlockedOnWrite] = "blocked on a write operation", |