X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FSchedAPI.h;h=8dff6ea63db55837524fbe0bfb0fcd8d45078a25;hb=5c67b7e313b2455ca65d5aa5970d86889145e97e;hp=27745272da6c5f03819eb1ad777278c140cfd390;hpb=438596897ebbe25a07e1c82085cfbc5bdb00f09e;p=ghc-hetmet.git diff --git a/ghc/includes/SchedAPI.h b/ghc/includes/SchedAPI.h index 2774527..8dff6ea 100644 --- a/ghc/includes/SchedAPI.h +++ b/ghc/includes/SchedAPI.h @@ -1,7 +1,6 @@ /* ----------------------------------------------------------------------------- - * $Id: SchedAPI.h,v 1.2 1998/12/02 13:21:33 simonm 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. @@ -11,62 +10,27 @@ #ifndef SCHEDAPI_H #define SCHEDAPI_H -/* - * Running the scheduler - */ - -typedef enum { - Success, - Killed, /* another thread killed us */ - Interrupted, /* stopped in response to a call to interruptStgRts */ - Deadlock, - AllBlocked, /* subtly different from Deadlock */ -} SchedulerStatus; - -SchedulerStatus schedule(StgTSO *main_thread, /*out*/StgClosure **ret); - -/* - * Creating thraeds - */ - -StgTSO *createThread (nat stack_size); - -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; - t = createThread(stack_size); - pushClosure(t,closure); - return t; -} - -static inline StgTSO * -createIOThread(nat stack_size, StgClosure *closure) { - StgTSO *t; - t = createThread(stack_size); - pushRealWorld(t); - pushClosure(t,closure); - return t; -} +#if defined(GRAN) +/* Dummy def for NO_PRI if not in GranSim */ +#define NO_PRI 0 +#endif /* - * Killing threads - */ - -void deleteThread(StgTSO *tso); - -/* - * Reverting CAFs + * Creating threads */ +#if defined(GRAN) +StgTSO *createThread (Capability *cap, nat stack_size, StgInt pri); +#else +StgTSO *createThread (Capability *cap, nat stack_size); +#endif -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