RTS tidyup sweep, first phase
[ghc-hetmet.git] / includes / rts / Threads.h
similarity index 54%
rename from includes/SchedAPI.h
rename to includes/rts/Threads.h
index b11437b..06a0ed1 100644 (file)
@@ -1,18 +1,18 @@
 /* -----------------------------------------------------------------------------
  *
- * (c) The GHC Team 1998-2002
+ * (c) The GHC Team 1998-2009
  *
  * External API for the scheduler.  For most uses, the functions in
  * RtsAPI.h should be enough.
  *
  * ---------------------------------------------------------------------------*/
 
-#ifndef SCHEDAPI_H
-#define SCHEDAPI_H
+#ifndef RTS_THREADS_H
+#define RTS_THREADS_H
 
-/* 
- * Creating threads
- */
+// 
+// Creating threads
+//
 StgTSO *createThread (Capability *cap, nat stack_size);
 
 Capability *scheduleWaitThread (StgTSO *tso, /*out*/HaskellObj* ret,
@@ -24,4 +24,24 @@ StgTSO *createIOThread        (Capability *cap, nat stack_size,
                               StgClosure *closure);
 StgTSO *createStrictIOThread  (Capability *cap, nat stack_size,  
                               StgClosure *closure);
+
+// Suspending/resuming threads around foreign calls
+void *        suspendThread (StgRegTable *);
+StgRegTable * resumeThread  (void *);
+
+//
+// Thread operations from Threads.c
+//
+int    cmp_thread      (StgPtr tso1, StgPtr tso2);
+int    rts_getThreadId (StgPtr tso);
+pid_t  forkProcess     (HsStablePtr *entry);
+HsBool rtsSupportsBoundThreads (void);
+
+// The number of Capabilities
+extern unsigned int n_capabilities;
+
+#if !IN_STG_CODE
+extern Capability MainCapability;
 #endif
+
+#endif /* RTS_THREADS_H */