/* -----------------------------------------------------------------------------
*
- * (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,
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 */