X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FTask.c;h=918dc559b83a3967060cb86b24e8a6c877ab1233;hb=5a2769f0273dd389977e8283375e7920d183bdd4;hp=7366480094da1554c1f34b0c85700a56f542cb60;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/rts/Task.c b/rts/Task.c index 7366480..918dc55 100644 --- a/rts/Task.c +++ b/rts/Task.c @@ -17,6 +17,7 @@ #include "RtsFlags.h" #include "Schedule.h" #include "Hash.h" +#include "Trace.h" #if HAVE_SIGNAL_H #include @@ -69,7 +70,9 @@ initTaskManager (void) void stopTaskManager (void) { - IF_DEBUG(scheduler, sched_belch("stopping task manager, %d tasks still running", tasksRunning)); + debugTrace(DEBUG_sched, + "stopping task manager, %d tasks still running", + tasksRunning); } @@ -99,10 +102,10 @@ newTask (void) #if defined(THREADED_RTS) currentUserTime = getThreadCPUTime(); currentElapsedTime = getProcessElapsedTime(); - task->mut_time = 0.0; - task->mut_etime = 0.0; - task->gc_time = 0.0; - task->gc_etime = 0.0; + task->mut_time = 0; + task->mut_etime = 0; + task->gc_time = 0; + task->gc_etime = 0; task->muttimestart = currentUserTime; task->elapsedtimestart = currentElapsedTime; #endif @@ -144,7 +147,7 @@ newBoundTask (void) taskEnter(task); - IF_DEBUG(scheduler,sched_belch("new task (taskCount: %d)", taskCount);); + debugTrace(DEBUG_sched, "new task (taskCount: %d)", taskCount); return task; } @@ -168,7 +171,7 @@ boundTaskExiting (Task *task) task_free_list = task; RELEASE_LOCK(&sched_mutex); - IF_DEBUG(scheduler,sched_belch("task exiting")); + debugTrace(DEBUG_sched, "task exiting"); } #ifdef THREADED_RTS @@ -182,7 +185,7 @@ discardTask (Task *task) { ASSERT_LOCK_HELD(&sched_mutex); if (!task->stopped) { - IF_DEBUG(scheduler,sched_belch("discarding task %p", TASK_ID(task))); + debugTrace(DEBUG_sched, "discarding task %p", TASK_ID(task)); task->cap = NULL; task->tso = NULL; task->stopped = rtsTrue; @@ -193,16 +196,11 @@ discardTask (Task *task) } void -taskStop (Task *task) +taskTimeStamp (Task *task USED_IF_THREADS) { #if defined(THREADED_RTS) - OSThreadId id; Ticks currentElapsedTime, currentUserTime, elapsedGCTime; - id = osThreadId(); - ASSERT(task->id == id); - ASSERT(myTask() == task); - currentUserTime = getThreadCPUTime(); currentElapsedTime = getProcessElapsedTime(); @@ -215,10 +213,22 @@ taskStop (Task *task) task->mut_etime = currentElapsedTime - task->elapsedtimestart - elapsedGCTime; - if (task->mut_time < 0.0) { task->mut_time = 0.0; } - if (task->mut_etime < 0.0) { task->mut_etime = 0.0; } + if (task->mut_time < 0) { task->mut_time = 0; } + if (task->mut_etime < 0) { task->mut_etime = 0; } +#endif +} + +void +workerTaskStop (Task *task) +{ +#if defined(THREADED_RTS) + OSThreadId id; + id = osThreadId(); + ASSERT(task->id == id); + ASSERT(myTask() == task); #endif + taskTimeStamp(task); task->stopped = rtsTrue; tasksRunning--; } @@ -268,7 +278,7 @@ startWorkerTask (Capability *cap, barf("startTask: Can't create new task"); } - IF_DEBUG(scheduler,sched_belch("new worker task (taskCount: %d)", taskCount);); + debugTrace(DEBUG_sched, "new worker task (taskCount: %d)", taskCount); task->id = tid;