X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FSchedAPI.h;h=6757a5ed0fb4efc475928edb7c63a3db15eb8686;hb=11bca975a6781f42b0d29585500d76838a36ae47;hp=b682dfd686fb18543efa9f117f9f5a43b888fa59;hpb=f86b9ce4f5830feb70d48e626fe60a75616ba941;p=ghc-hetmet.git diff --git a/ghc/includes/SchedAPI.h b/ghc/includes/SchedAPI.h index b682dfd..6757a5e 100644 --- a/ghc/includes/SchedAPI.h +++ b/ghc/includes/SchedAPI.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: SchedAPI.h,v 1.6 1999/07/06 09:42:39 sof Exp $ + * $Id: SchedAPI.h,v 1.11 2000/11/13 14:40:36 simonmar Exp $ * * (c) The GHC Team 1998 * @@ -11,19 +11,28 @@ #ifndef SCHEDAPI_H #define SCHEDAPI_H +#if defined(GRAN) +// 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 schedule(StgTSO *main_thread, /*out*/StgClosure **ret); +SchedulerStatus waitThread(StgTSO *main_thread, /*out*/StgClosure **ret); /* * Creating threads */ - -StgTSO *createThread (nat stack_size); +#if defined(GRAN) +StgTSO *createThread(nat stack_size, StgInt pri); +#else +StgTSO *createThread(nat stack_size); +#endif +void scheduleThread(StgTSO *tso); static inline void pushClosure (StgTSO *tso, StgClosure *c) { tso->sp--; @@ -37,7 +46,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; } @@ -45,7 +58,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; @@ -59,9 +76,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; } @@ -69,13 +90,17 @@ createStrictIOThread(nat stack_size, StgClosure *closure) { /* * Killing threads */ - -void deleteThread(StgTSO *tso); +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