for (bd = free_list; bd != NULL; bd = bd->link) {
IF_DEBUG(block_alloc,
- debugBelch("group at 0x%p, length %d blocks\n",
- bd->start, bd->blocks));
+ debugBelch("group at 0x%p, length %ld blocks\n",
+ bd->start, (long)bd->blocks));
ASSERT(bd->blocks > 0);
checkWellFormedGroup(bd);
if (bd->link != NULL) {
copied += mut_list_size;
debugTrace(DEBUG_gc,
- "mut_list_size: %ld (%d vars, %d arrays, %d others)",
- mut_list_size * sizeof(W_),
+ "mut_list_size: %lu (%d vars, %d arrays, %d others)",
+ (unsigned long)(mut_list_size * sizeof(W_)),
mutlist_MUTVARS, mutlist_MUTARRS, mutlist_OTHERS);
}
if (closure_IND(bh) || bh->header.info == &stg_BLACKHOLE_info) {
debugTrace(DEBUG_squeeze,
"suspending duplicate work: %ld words of stack",
- (StgPtr)frame - tso->sp);
+ (long)((StgPtr)frame - tso->sp));
// If this closure is already an indirection, then
// suspend the computation up to this point:
case TSO:
debugBelch("TSO(");
- debugBelch("%d (%p)",((StgTSO*)obj)->id, (StgTSO*)obj);
+ debugBelch("%lu (%p)",(unsigned long)(((StgTSO*)obj)->id), (StgTSO*)obj);
debugBelch(")\n");
break;
// ASSERT(get_itbl(target)->type == TSO);
}
- debugTrace(DEBUG_sched, "throwTo: from thread %d to thread %d",
- source->id, target->id);
+ debugTrace(DEBUG_sched, "throwTo: from thread %lu to thread %lu",
+ (unsigned long)source->id, (unsigned long)target->id);
#ifdef DEBUG
if (traceClass(DEBUG_sched)) {
static void
blockedThrowTo (StgTSO *source, StgTSO *target)
{
- debugTrace(DEBUG_sched, "throwTo: blocking on thread %d", target->id);
+ debugTrace(DEBUG_sched, "throwTo: blocking on thread %lu", (unsigned long)target->id);
source->link = target->blocked_exceptions;
target->blocked_exceptions = source;
dirtyTSO(target); // we modified the blocked_exceptions queue
if (bound) {
if (bound == task) {
debugTrace(DEBUG_sched,
- "### Running thread %d in bound thread", t->id);
+ "### Running thread %lu in bound thread", (unsigned long)t->id);
// yes, the Haskell thread is bound to the current native thread
} else {
debugTrace(DEBUG_sched,
- "### thread %d bound to another OS thread", t->id);
+ "### thread %lu bound to another OS thread", (unsigned long)t->id);
// no, bound to a different Haskell thread: pass to that thread
pushOnRunQueue(cap,t);
continue;
// The thread we want to run is unbound.
if (task->tso) {
debugTrace(DEBUG_sched,
- "### this OS thread cannot run thread %d", t->id);
+ "### this OS thread cannot run thread %lu", (unsigned long)t->id);
// no, the current native thread is bound to a different
// Haskell thread, so pass it to any worker thread
pushOnRunQueue(cap,t);
// immediately and return to normaility.
if (ret == ThreadBlocked) {
debugTrace(DEBUG_sched,
- "--<< thread %d (%s) stopped: blocked",
- t->id, whatNext_strs[t->what_next]);
+ "--<< thread %lu (%s) stopped: blocked",
+ (unsigned long)t->id, whatNext_strs[t->what_next]);
continue;
}
#endif
prev->link = t;
prev = t;
} else {
- debugTrace(DEBUG_sched, "pushing thread %d to capability %d", t->id, free_caps[i]->no);
+ debugTrace(DEBUG_sched, "pushing thread %lu to capability %d", (unsigned long)t->id, free_caps[i]->no);
appendToRunQueue(free_caps[i],t);
if (t->bound) { t->bound->cap = free_caps[i]; }
t->cap = free_caps[i];
#ifdef DEBUG
if (traceClass(DEBUG_sched)) {
- debugTraceBegin("--<< thread %d (%s) stopped: ",
- t->id, whatNext_strs[t->what_next]);
+ debugTraceBegin("--<< thread %lu (%s) stopped: ",
+ (unsigned long)t->id, whatNext_strs[t->what_next]);
printThreadBlockage(t);
debugTraceEnd();
}
* We also end up here if the thread kills itself with an
* uncaught exception, see Exception.cmm.
*/
- debugTrace(DEBUG_sched, "--++ thread %d (%s) finished",
- t->id, whatNext_strs[t->what_next]);
+ debugTrace(DEBUG_sched, "--++ thread %lu (%s) finished",
+ (unsigned long)t->id, whatNext_strs[t->what_next]);
#if defined(GRAN)
endThread(t, CurrentProc); // clean-up the thread
tso = cap->r.rCurrentTSO;
debugTrace(DEBUG_sched,
- "thread %d did a safe foreign call",
- cap->r.rCurrentTSO->id);
+ "thread %lu did a safe foreign call",
+ (unsigned long)cap->r.rCurrentTSO->id);
// XXX this might not be necessary --SDM
tso->what_next = ThreadRunGHC;
/* Preparing to leave the RTS, so ensure there's a native thread/task
waiting to take over.
*/
- debugTrace(DEBUG_sched, "thread %d: leaving RTS", tso->id);
+ debugTrace(DEBUG_sched, "thread %lu: leaving RTS", (unsigned long)tso->id);
#endif
errno = saved_errno;
tso = task->suspended_tso;
task->suspended_tso = NULL;
tso->link = END_TSO_QUEUE;
- debugTrace(DEBUG_sched, "thread %d: re-entering RTS", tso->id);
+ debugTrace(DEBUG_sched, "thread %lu: re-entering RTS", (unsigned long)tso->id);
if (tso->why_blocked == BlockedOnCCall) {
awakenBlockedExceptionQueue(cap,tso);
appendToRunQueue(cap,tso);
- debugTrace(DEBUG_sched, "new bound thread (%d)", tso->id);
+ debugTrace(DEBUG_sched, "new bound thread (%lu)", (unsigned long)tso->id);
#if defined(GRAN)
/* GranSim specific init */
ASSERT(task->stat != NoStatus);
ASSERT_FULL_CAPABILITY_INVARIANTS(cap,task);
- debugTrace(DEBUG_sched, "bound thread (%d) finished", task->tso->id);
+ debugTrace(DEBUG_sched, "bound thread (%lu) finished", (unsigned long)task->tso->id);
return cap;
}
for (task = cap->suspended_ccalling_tasks; task != NULL;
task=task->next) {
debugTrace(DEBUG_sched,
- "evac'ing suspended TSO %d", task->suspended_tso->id);
+ "evac'ing suspended TSO %lu", (unsigned long)task->suspended_tso->id);
evac((StgClosure **)(void *)&task->suspended_tso);
}
next = tso->global_link;
tso->global_link = all_threads;
all_threads = tso;
- debugTrace(DEBUG_sched, "resurrecting thread %d", tso->id);
+ debugTrace(DEBUG_sched, "resurrecting thread %lu", (unsigned long)tso->id);
// Wake up the thread on the Capability it was last on
cap = tso->cap;
if (p->sn_obj == NULL) {
// StableName object is dead
freeStableName(p);
- debugTrace(DEBUG_stable, "GC'd Stable name %ld",
- p - stable_ptr_table);
+ debugTrace(DEBUG_stable, "GC'd Stable name %ld",
+ (long)(p - stable_ptr_table));
continue;
} else {
p->addr = (StgPtr)isAlive((StgClosure *)p->addr);
debugTrace(DEBUG_stable,
"stable name %ld still alive at %p, ref %ld\n",
- p - stable_ptr_table, p->addr, p->ref);
+ (long)(p - stable_ptr_table), p->addr, p->ref);
}
}
}
{
ASSERT_LOCK_HELD(&sched_mutex);
if (!task->stopped) {
- debugTrace(DEBUG_sched, "discarding task %ld", TASK_ID(task));
+ debugTrace(DEBUG_sched, "discarding task %ld", (long)TASK_ID(task));
task->cap = NULL;
task->tso = NULL;
task->stopped = rtsTrue;
debugBelch("on capability %d, ", task->cap->no);
}
if (task->tso) {
- debugBelch("bound to thread %d", task->tso->id);
+ debugBelch("bound to thread %lu", (unsigned long)task->tso->id);
} else {
debugBelch("worker");
}
debugBelch("is blocked on an MVar @ %p", tso->block_info.closure);
break;
case BlockedOnException:
- debugBelch("is blocked on delivering an exception to thread %d",
- tso->block_info.tso->id);
+ debugBelch("is blocked on delivering an exception to thread %lu",
+ (unsigned long)tso->block_info.tso->id);
break;
case BlockedOnBlackHole:
debugBelch("is blocked on a black hole");
void
printThreadStatus(StgTSO *t)
{
- debugBelch("\tthread %4d @ %p ", t->id, (void *)t);
+ debugBelch("\tthread %4lu @ %p ", (unsigned long)t->id, (void *)t);
{
void *label = lookupThreadLabel(t->id);
if (label) debugBelch("[\"%s\"] ",(char *)label);
sleeping_queue = tso->link;
tso->why_blocked = NotBlocked;
tso->link = END_TSO_QUEUE;
- IF_DEBUG(scheduler,debugBelch("Waking up sleeping thread %d\n", tso->id));
+ IF_DEBUG(scheduler,debugBelch("Waking up sleeping thread %lu\n", (unsigned long)tso->id));
// MainCapability: this code is !THREADED_RTS
pushOnRunQueue(&MainCapability,tso);
flag = rtsTrue;
}
if (ready) {
- IF_DEBUG(scheduler,debugBelch("Waking up blocked thread %d\n", tso->id));
+ IF_DEBUG(scheduler,debugBelch("Waking up blocked thread %lu\n", (unsigned long)tso->id));
tso->why_blocked = NotBlocked;
tso->link = END_TSO_QUEUE;
pushOnRunQueue(&MainCapability,tso);