Some build system refactoring
[ghc.git] / rts / Threads.h
index f6d2dfd..6d26610 100644 (file)
@@ -9,29 +9,46 @@
 #ifndef THREADS_H
 #define THREADS_H
 
+#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 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);
+void updateThunk         (Capability *cap, StgTSO *tso,
+                          StgClosure *thunk, StgClosure *val);
+
+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);
+W_   threadStackUnderflow (Capability *cap, StgTSO *tso);
+
 #ifdef DEBUG
 void printThreadBlockage (StgTSO *tso);
 void printThreadStatus (StgTSO *t);
 void printAllThreads (void);
 void printThreadQueue (StgTSO *t);
-# if defined(PARALLEL_HASKELL)
-void print_bq (StgClosure *node);
-void print_bqe (StgBlockingQueueElement *bqe);
-nat  run_queue_len (void);
-# elif defined(GRAN)
-void print_bq (StgClosure *node);
-# endif
 #endif
 
+#include "EndPrivate.h"
+
 #endif /* THREADS_H */