remove empty dir
[ghc-hetmet.git] / ghc / rts / Task.c
index b8bf1c4..7366480 100644 (file)
@@ -97,7 +97,8 @@ newTask (void)
 #endif
 
 #if defined(THREADED_RTS)
-    getProcessTimes(&currentUserTime, &currentElapsedTime);
+    currentUserTime = getThreadCPUTime();
+    currentElapsedTime = getProcessElapsedTime();
     task->mut_time = 0.0;
     task->mut_etime = 0.0;
     task->gc_time = 0.0;
@@ -170,17 +171,25 @@ boundTaskExiting (Task *task)
     IF_DEBUG(scheduler,sched_belch("task exiting"));
 }
 
+#ifdef THREADED_RTS
+#define TASK_ID(t) (t)->id
+#else
+#define TASK_ID(t) (t)
+#endif
+
 void
 discardTask (Task *task)
 {
     ASSERT_LOCK_HELD(&sched_mutex);
-#if defined(THREADED_RTS)
-    closeCondition(&task->cond);
-#endif
-    task->stopped = rtsTrue;
-    task->cap = NULL;
-    task->next = task_free_list;
-    task_free_list = task;
+    if (!task->stopped) {
+       IF_DEBUG(scheduler,sched_belch("discarding task %p", TASK_ID(task)));
+       task->cap = NULL;
+       task->tso = NULL;
+       task->stopped = rtsTrue;
+       tasksRunning--;
+       task->next = task_free_list;
+       task_free_list = task;
+    }
 }
 
 void
@@ -194,7 +203,8 @@ taskStop (Task *task)
     ASSERT(task->id == id);
     ASSERT(myTask() == task);
 
-    getProcessTimes(&currentUserTime, &currentElapsedTime);
+    currentUserTime = getThreadCPUTime();
+    currentElapsedTime = getProcessElapsedTime();
 
     // XXX this is wrong; we want elapsed GC time since the
     // Task started.