]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - kernel/sched_stats.h
sched, delay accounting: fix incorrect delay time when constantly waiting on runqueue
[linux-2.6-omap-h63xx.git] / kernel / sched_stats.h
index a38878e0e49d50cebcbb52fc5a976df23497f3ef..80179ef7450e95684f9d3f0221fce3b32615bbd5 100644 (file)
@@ -198,6 +198,9 @@ static inline void sched_info_queued(struct task_struct *t)
 /*
  * Called when a process ceases being the active-running process, either
  * voluntarily or involuntarily.  Now we can calculate how long we ran.
+ * Also, if the process is still in the TASK_RUNNING state, call
+ * sched_info_queued() to mark that it has now again started waiting on
+ * the runqueue.
  */
 static inline void sched_info_depart(struct task_struct *t)
 {
@@ -206,6 +209,9 @@ static inline void sched_info_depart(struct task_struct *t)
 
        t->sched_info.cpu_time += delta;
        rq_sched_info_depart(task_rq(t), delta);
+
+       if (t->state == TASK_RUNNING)
+               sched_info_queued(t);
 }
 
 /*