Commit 59977b6c authored by Simon Marlow's avatar Simon Marlow

GHC.Prim.threadStatus# now returns the cap number, and the value of TSO_LOCKED

parent 3da49121
......@@ -1449,7 +1449,7 @@ primop NoDuplicateOp "noDuplicate#" GenPrimOp
has_side_effects = True
primop ThreadStatusOp "threadStatus#" GenPrimOp
ThreadId# -> State# RealWorld -> (# State# RealWorld, Int# #)
ThreadId# -> State# RealWorld -> (# State# RealWorld, Int#, Int#, Int# #)
with
out_of_line = True
has_side_effects = True
......
......@@ -234,6 +234,7 @@ main(int argc, char *argv[])
field_offset(Capability, r);
field_offset(Capability, lock);
struct_field(Capability, no);
struct_field(Capability, mut_lists);
struct_field(Capability, context_switch);
struct_field(Capability, sparks);
......
......@@ -631,7 +631,7 @@ stg_threadStatuszh
W_ tso;
W_ why_blocked;
W_ what_next;
W_ ret;
W_ ret, cap, locked;
tso = R1;
......@@ -651,7 +651,16 @@ stg_threadStatuszh
ret = why_blocked;
}
}
RET_N(ret);
cap = TO_W_(Capability_no(StgTSO_cap(tso)));
if ((TO_W_(StgTSO_flags(tso)) & TSO_LOCKED) != 0) {
locked = 1;
} else {
locked = 0;
}
RET_NNN(ret,cap,locked);
}
/* -----------------------------------------------------------------------------
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment