X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FSchedAPI.h;h=8dff6ea63db55837524fbe0bfb0fcd8d45078a25;hb=6f917d9600e7e5ba63a33f4079bcbc6ebbdb10fb;hp=18c48f5f9cf6c5c8155593d12cdacbfcf00947a1;hpb=1b28d4e1f43185ad8c8e7407c66413e1b358402b;p=ghc-hetmet.git diff --git a/ghc/includes/SchedAPI.h b/ghc/includes/SchedAPI.h index 18c48f5..8dff6ea 100644 --- a/ghc/includes/SchedAPI.h +++ b/ghc/includes/SchedAPI.h @@ -1,7 +1,6 @@ /* ----------------------------------------------------------------------------- - * $Id: SchedAPI.h,v 1.9 2000/01/13 14:34:01 hwloidl Exp $ * - * (c) The GHC Team 1998 + * (c) The GHC Team 1998-2002 * * External API for the scheduler. For most uses, the functions in * RtsAPI.h should be enough. @@ -12,92 +11,26 @@ #define SCHEDAPI_H #if defined(GRAN) -// Dummy def for NO_PRI if not in GranSim +/* Dummy def for NO_PRI if not in GranSim */ #define NO_PRI 0 #endif /* - * schedule() plus the thread creation functions are not part - * part of the external RTS API, so leave them out if we're - * not compiling rts/ bits. -- sof 7/99 - * - */ -SchedulerStatus waitThread(StgTSO *main_thread, /*out*/StgClosure **ret); - -/* * Creating threads */ #if defined(GRAN) -StgTSO *createThread(nat stack_size, StgInt pri); +StgTSO *createThread (Capability *cap, nat stack_size, StgInt pri); #else -StgTSO *createThread(nat stack_size); +StgTSO *createThread (Capability *cap, nat stack_size); #endif -void scheduleThread(StgTSO *tso); - -static inline void pushClosure (StgTSO *tso, StgClosure *c) { - tso->sp--; - tso->sp[0] = (W_) c; -} - -static inline void pushRealWorld (StgTSO *tso) { - tso->sp--; - tso->sp[0] = (W_) REALWORLD_TAG; -} -static inline StgTSO * -createGenThread(nat stack_size, StgClosure *closure) { - StgTSO *t; -#if defined(GRAN) - t = createThread(stack_size, NO_PRI); -#else - t = createThread(stack_size); -#endif - pushClosure(t,closure); - return t; -} - -static inline StgTSO * -createIOThread(nat stack_size, StgClosure *closure) { - StgTSO *t; -#if defined(GRAN) - t = createThread(stack_size, NO_PRI); -#else - t = createThread(stack_size); -#endif - pushRealWorld(t); - pushClosure(t,closure); - return t; -} - -/* - * Same as above, but also evaluate the result of the IO action - * to whnf while we're at it. - */ - -static inline StgTSO * -createStrictIOThread(nat stack_size, StgClosure *closure) { - StgTSO *t; -#if defined(GRAN) - t = createThread(stack_size, NO_PRI); -#else - t = createThread(stack_size); -#endif - pushClosure(t,closure); - pushClosure(t,(StgClosure*)&forceIO_closure); - return t; -} - - -/* - * Killing threads - */ - -void deleteThread(StgTSO *tso); -void deleteAllThreads ( void ); - -/* - * Reverting CAFs - */ -void RevertCAFs(void); +Capability *scheduleWaitThread (StgTSO *tso, /*out*/HaskellObj* ret, + Capability *cap); +StgTSO *createGenThread (Capability *cap, nat stack_size, + StgClosure *closure); +StgTSO *createIOThread (Capability *cap, nat stack_size, + StgClosure *closure); +StgTSO *createStrictIOThread (Capability *cap, nat stack_size, + StgClosure *closure); #endif