1 /* ---------------------------------------------------------------------------
3 * (c) The GHC Team, 2006
5 * Thread-related functionality
7 * --------------------------------------------------------------------------*/
14 #define END_BLOCKED_EXCEPTIONS_QUEUE ((MessageThrowTo*)END_TSO_QUEUE)
16 StgTSO * unblockOne (Capability *cap, StgTSO *tso);
17 StgTSO * unblockOne_ (Capability *cap, StgTSO *tso, rtsBool allow_migrate);
19 void checkBlockingQueues (Capability *cap, StgTSO *tso);
20 void wakeBlockingQueue (Capability *cap, StgBlockingQueue *bq);
21 void tryWakeupThread (Capability *cap, StgTSO *tso);
23 // Wakes up a thread on a Capability (probably a different Capability
24 // from the one held by the current Task).
27 void wakeupThreadOnCapability (Capability *cap,
28 Capability *other_cap,
32 void updateThunk (Capability *cap, StgTSO *tso,
33 StgClosure *thunk, StgClosure *val);
35 void removeThreadFromMVarQueue (Capability *cap, StgMVar *mvar, StgTSO *tso);
37 rtsBool removeThreadFromQueue (Capability *cap, StgTSO **queue, StgTSO *tso);
38 rtsBool removeThreadFromDeQueue (Capability *cap, StgTSO **head, StgTSO **tail, StgTSO *tso);
40 StgBool isThreadBound (StgTSO* tso);
43 void printThreadBlockage (StgTSO *tso);
44 void printThreadStatus (StgTSO *t);
45 void printAllThreads (void);
46 void printThreadQueue (StgTSO *t);
51 #endif /* THREADS_H */