#include "PosixSource.h"
#include "Rts.h"
-#include "Storage.h"
+
#include "Schedule.h"
-#include "SchedAPI.h"
-#include "RtsFlags.h"
#include "RtsUtils.h"
-#include "ParTicky.h"
#include "Trace.h"
#include "Prelude.h"
-
-#include "SMP.h" // for cas
-
#include "Sparks.h"
#if defined(THREADED_RTS)
tso = createIOThread (cap, RtsFlags.GcFlags.initialStkSize,
&base_GHCziConc_runSparks_closure);
- postEvent(cap, EVENT_CREATE_SPARK_THREAD, 0, tso->id);
+ traceSchedEvent(cap, EVENT_CREATE_SPARK_THREAD, 0, tso->id);
appendToRunQueue(cap,tso);
}
cap->sparks_created++;
- postEvent(cap, EVENT_CREATE_SPARK, cap->r.rCurrentTSO->id, 0);
-
return 1;
}
StgWord botInd,oldBotInd,currInd; // indices in array (always < size)
const StgInfoTable *info;
- PAR_TICKY_MARK_SPARK_QUEUE_START();
-
n = 0;
pruned_sparks = 0;
pool->top &= pool->moduloSize;
pool->topBound = pool->top;
- debugTrace(DEBUG_sched,
+ debugTrace(DEBUG_sparks,
"markSparkQueue: current spark queue len=%ld; (hd=%ld; tl=%ld)",
sparkPoolSize(pool), pool->bottom, pool->top);
pool->bottom = (oldBotInd <= botInd) ? botInd : (botInd + pool->size);
// first free place we did not use (corrected by wraparound)
- PAR_TICKY_MARK_SPARK_QUEUE_END(n);
-
- debugTrace(DEBUG_sched, "pruned %d sparks", pruned_sparks);
+ debugTrace(DEBUG_sparks, "pruned %d sparks", pruned_sparks);
- debugTrace(DEBUG_sched,
+ debugTrace(DEBUG_sparks,
"new spark queue len=%ld; (hd=%ld; tl=%ld)",
sparkPoolSize(pool), pool->bottom, pool->top);
top++;
}
- debugTrace(DEBUG_sched,
+ debugTrace(DEBUG_sparks,
"traversed spark queue, len=%ld; (hd=%ld; tl=%ld)",
sparkPoolSize(pool), pool->bottom, pool->top);
}
*
* Could be called after GC, before Cap. release, from scheduler.
* -------------------------------------------------------------------------- */
-void balanceSparkPoolsCaps(nat n_caps, Capability caps[]);
+void balanceSparkPoolsCaps(nat n_caps, Capability caps[])
+ GNUC3_ATTRIBUTE(__noreturn__);
void balanceSparkPoolsCaps(nat n_caps STG_UNUSED,
Capability caps[] STG_UNUSED) {