X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FSchedAPI.h;h=524b1da9f58f47b561b17837bb06ab740fee5ec9;hb=d9d7ceaa9f77c3d44a51405b71bb9fd4a44b6588;hp=cff23251a8a2acf92b57f90d95b11495babe103a;hpb=619cd23c12cc4074b679bce4d8a005e5f42ccadf;p=ghc-hetmet.git diff --git a/ghc/includes/SchedAPI.h b/ghc/includes/SchedAPI.h index cff2325..524b1da 100644 --- a/ghc/includes/SchedAPI.h +++ b/ghc/includes/SchedAPI.h @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------------- - * $Id: SchedAPI.h,v 1.14 2002/02/15 07:37:55 sof Exp $ + * $Id: SchedAPI.h,v 1.17 2002/12/27 12:33:21 panne 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. @@ -30,17 +30,13 @@ extern StgTSO *createThread(nat stack_size); extern void taskStart(void); #endif extern void scheduleThread(StgTSO *tso); -extern void scheduleExtThread(StgTSO *tso); +extern SchedulerStatus scheduleWaitThread(StgTSO *tso, /*out*/HaskellObj* ret); -static inline void pushClosure (StgTSO *tso, StgClosure *c) { +static inline void pushClosure (StgTSO *tso, StgWord 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; @@ -49,7 +45,8 @@ createGenThread(nat stack_size, StgClosure *closure) { #else t = createThread(stack_size); #endif - pushClosure(t,closure); + pushClosure(t, (W_)closure); + pushClosure(t, (W_)&stg_enter_info); return t; } @@ -61,8 +58,10 @@ createIOThread(nat stack_size, StgClosure *closure) { #else t = createThread(stack_size); #endif - pushRealWorld(t); - pushClosure(t,closure); + pushClosure(t, (W_)&stg_noforceIO_info); + pushClosure(t, (W_)&stg_ap_v_info); + pushClosure(t, (W_)closure); + pushClosure(t, (W_)&stg_enter_info); return t; } @@ -79,8 +78,10 @@ createStrictIOThread(nat stack_size, StgClosure *closure) { #else t = createThread(stack_size); #endif - pushClosure(t,closure); - pushClosure(t,(StgClosure*)&stg_forceIO_closure); + pushClosure(t, (W_)&stg_forceIO_info); + pushClosure(t, (W_)&stg_ap_v_info); + pushClosure(t, (W_)closure); + pushClosure(t, (W_)&stg_enter_info); return t; } @@ -96,9 +97,4 @@ extern int howManyThreadsAvail ( void ); */ extern void finishAllThreads ( void ); -/* - * Reverting CAFs - */ -extern void RevertCAFs ( void ); - #endif