X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FSchedAPI.h;h=565ed202319bb0481082d01c1459fb49ca9403ac;hb=6e5df3a4551b8d8b83e936b3f7b52edfc778ca8a;hp=317a177b91cc791b19f1fc358852ae05259dceca;hpb=1b39436bdf0dbc46008460669d1ac81a98df6c84;p=ghc-hetmet.git diff --git a/ghc/includes/SchedAPI.h b/ghc/includes/SchedAPI.h index 317a177..565ed20 100644 --- a/ghc/includes/SchedAPI.h +++ b/ghc/includes/SchedAPI.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: SchedAPI.h,v 1.8 1999/11/18 12:10:17 sewardj Exp $ + * $Id: SchedAPI.h,v 1.15 2002/06/19 20:45:17 sof Exp $ * * (c) The GHC Team 1998 * @@ -11,20 +11,26 @@ #ifndef SCHEDAPI_H #define SCHEDAPI_H -/* - * 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); +#if defined(GRAN) +// Dummy def for NO_PRI if not in GranSim +#define NO_PRI 0 +#endif + +extern SchedulerStatus waitThread(StgTSO *main_thread, /*out*/StgClosure **ret); /* * Creating threads */ - -StgTSO *createThread(nat stack_size); -void scheduleThread(StgTSO *tso); +#if defined(GRAN) +extern StgTSO *createThread(nat stack_size, StgInt pri); +#else +extern StgTSO *createThread(nat stack_size); +#endif +#if defined(PAR) || defined(SMP) +extern void taskStart(void); +#endif +extern void scheduleThread(StgTSO *tso); +extern SchedulerStatus scheduleWaitThread(StgTSO *tso, /*out*/HaskellObj* ret); static inline void pushClosure (StgTSO *tso, StgClosure *c) { tso->sp--; @@ -38,7 +44,11 @@ static inline void pushRealWorld (StgTSO *tso) { 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; } @@ -46,7 +56,11 @@ createGenThread(nat stack_size, StgClosure *closure) { 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; @@ -60,9 +74,13 @@ createIOThread(nat stack_size, StgClosure *closure) { 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); + pushClosure(t,(StgClosure*)&stg_forceIO_closure); return t; } @@ -70,14 +88,17 @@ createStrictIOThread(nat stack_size, StgClosure *closure) { /* * Killing threads */ - -void deleteThread(StgTSO *tso); -void deleteAllThreads ( void ); +extern void deleteThread(StgTSO *tso); +extern void deleteAllThreads ( void ); +extern int howManyThreadsAvail ( void ); +/* + * Run until there are no more threads. + */ +extern void finishAllThreads ( void ); /* * Reverting CAFs */ - -void RevertCAFs(void); +extern void RevertCAFs ( void ); #endif