/* ---------------------------------------------------------------------------
- * $Id: Schedule.c,v 1.47 2000/02/29 14:38:19 simonmar Exp $
+ * $Id: Schedule.c,v 1.51 2000/03/13 10:53:56 simonmar Exp $
*
- * (c) The GHC Team, 1998-1999
+ * (c) The GHC Team, 1998-2000
*
* Scheduler
*
#include "Sanity.h"
#include "Stats.h"
#include "Sparks.h"
+#include "Prelude.h"
#if defined(GRAN) || defined(PAR)
# include "GranSimRts.h"
# include "GranSim.h"
StgTSO *tso;
GlobalTaskId pe;
#endif
+ rtsBool was_interrupted = rtsFalse;
ACQUIRE_LOCK(&sched_mutex);
}
run_queue_hd = run_queue_tl = END_TSO_QUEUE;
blocked_queue_hd = blocked_queue_tl = END_TSO_QUEUE;
+ interrupted = rtsFalse;
+ was_interrupted = rtsTrue;
}
/* Go through the list of main threads and wake up any
break;
case ThreadKilled:
*prev = m->link;
- if (interrupted) {
+ if (was_interrupted) {
m->stat = Interrupted;
} else {
m->stat = Killed;
m->stat = Success;
return;
} else {
- if (interrupted) {
+ if (was_interrupted) {
m->stat = Interrupted;
} else {
m->stat = Killed;
}
}
threadPaused(new_t);
- ready_to_gc = rtsTrue;
- context_switch = 1;
PUSH_ON_RUN_QUEUE(new_t);
}
break;
}
#endif
-#if defined(GRAN)
-inline StgTSO *
-unblockOne(StgTSO *tso, StgClosure *node)
-{
- ACQUIRE_LOCK(&sched_mutex);
- tso = unblockOneLocked(tso, node);
- RELEASE_LOCK(&sched_mutex);
- return tso;
-}
-#elif defined(PAR)
+#if defined(PAR) || defined(GRAN)
inline StgTSO *
unblockOne(StgTSO *tso, StgClosure *node)
{