fix haddock submodule pointer
[ghc-hetmet.git] / rts / Threads.h
index e58b0db..857658a 100644 (file)
@@ -9,19 +9,39 @@
 #ifndef THREADS_H
 #define THREADS_H
 
-#pragma GCC visibility push(hidden)
+#include "BeginPrivate.h"
+
+#define END_BLOCKED_EXCEPTIONS_QUEUE ((MessageThrowTo*)END_TSO_QUEUE)
 
 StgTSO * unblockOne (Capability *cap, StgTSO *tso);
 StgTSO * unblockOne_ (Capability *cap, StgTSO *tso, rtsBool allow_migrate);
 
-void awakenBlockedQueue (Capability *cap, StgTSO *tso);
+void checkBlockingQueues (Capability *cap, StgTSO *tso);
+void wakeBlockingQueue   (Capability *cap, StgBlockingQueue *bq);
+void tryWakeupThread     (Capability *cap, StgTSO *tso);
+void migrateThread       (Capability *from, StgTSO *tso, Capability *to);
+
+// Wakes up a thread on a Capability (probably a different Capability
+// from the one held by the current Task).
+//
+#ifdef THREADED_RTS
+void wakeupThreadOnCapability (Capability *cap,
+                               Capability *other_cap, 
+                               StgTSO *tso);
+#endif
+
+void updateThunk         (Capability *cap, StgTSO *tso,
+                          StgClosure *thunk, StgClosure *val);
 
-void removeThreadFromMVarQueue (Capability *cap, StgMVar *mvar, StgTSO *tso);
-void removeThreadFromQueue     (Capability *cap, StgTSO **queue, StgTSO *tso);
-void removeThreadFromDeQueue   (Capability *cap, StgTSO **head, StgTSO **tail, StgTSO *tso);
+rtsBool removeThreadFromQueue     (Capability *cap, StgTSO **queue, StgTSO *tso);
+rtsBool removeThreadFromDeQueue   (Capability *cap, StgTSO **head, StgTSO **tail, StgTSO *tso);
 
 StgBool isThreadBound (StgTSO* tso);
 
+// Overfow/underflow
+void threadStackOverflow  (Capability *cap, StgTSO *tso);
+nat  threadStackUnderflow (Capability *cap, StgTSO *tso);
+
 #ifdef DEBUG
 void printThreadBlockage (StgTSO *tso);
 void printThreadStatus (StgTSO *t);
@@ -29,6 +49,6 @@ void printAllThreads (void);
 void printThreadQueue (StgTSO *t);
 #endif
 
-#pragma GCC visibility pop
+#include "EndPrivate.h"
 
 #endif /* THREADS_H */