diff -urN oldtree/.links/bookmarks.html newtree/.links/bookmarks.html --- oldtree/.links/bookmarks.html 2006-09-17 06:54:54.000000000 -0400 +++ newtree/.links/bookmarks.html 1969-12-31 19:00:00.000000000 -0500 @@ -1,27 +0,0 @@ - -
- --
- diff -urN oldtree/fs/proc/base.c newtree/fs/proc/base.c --- oldtree/fs/proc/base.c 2006-09-17 05:38:20.000000000 -0400 +++ newtree/fs/proc/base.c 2006-09-17 06:55:06.000000000 -0400 @@ -294,10 +294,13 @@ */ static int proc_pid_schedstat(struct task_struct *task, char *buffer) { - return sprintf(buffer, "%lu %lu %lu\n", + int ret = sprintf(buffer, "%lu %lu %lu %lu\n", task->sched_info.cpu_time, task->sched_info.run_delay, + task->sched_info.max_delay, task->sched_info.pcnt); + task->sched_info.max_delay = 0; + return ret; } #endif diff -urN oldtree/include/linux/sched.h newtree/include/linux/sched.h --- oldtree/include/linux/sched.h 2006-09-17 06:54:54.000000000 -0400 +++ newtree/include/linux/sched.h 2006-09-17 06:55:06.000000000 -0400 @@ -589,6 +589,7 @@ /* cumulative counters */ unsigned long cpu_time, /* time spent on the cpu */ run_delay, /* time spent waiting on a runqueue */ + max_delay, /* max time spent waiting on a runq */ pcnt; /* # of timeslices run on this cpu */ /* timestamps */ diff -urN oldtree/kernel/sched_ingosched.c newtree/kernel/sched_ingosched.c --- oldtree/kernel/sched_ingosched.c 2006-09-17 06:36:04.000000000 -0400 +++ newtree/kernel/sched_ingosched.c 2006-09-17 06:55:34.000000000 -0400 @@ -429,6 +429,7 @@ rq->sched_switch, rq->sched_cnt, rq->sched_goidle, rq->ttwu_cnt, rq->ttwu_local, rq->rq_sched_info.cpu_time, + rq->rq_sched_info.max_delay, rq->rq_sched_info.run_delay, rq->rq_sched_info.pcnt); seq_printf(seq, "\n"); @@ -499,6 +500,7 @@ rq_sched_info_arrive(struct rq *rq, unsigned long delta_jiffies) { if (rq) { + rq->rq_sched_info.max_delay = max(rq->rq_sched_info.max_delay, delta_jiffies); rq->rq_sched_info.run_delay += delta_jiffies; rq->rq_sched_info.pcnt++; } @@ -574,6 +576,7 @@ if (t->sched_info.last_queued) delta_jiffies = now - t->sched_info.last_queued; sched_info_dequeued(t); + t->sched_info.max_delay = max(t->sched_info.max_delay, delta_jiffies); t->sched_info.run_delay += delta_jiffies; t->sched_info.last_arrival = now; t->sched_info.pcnt++; diff -urN oldtree/kernel/sched_staircase.c newtree/kernel/sched_staircase.c --- oldtree/kernel/sched_staircase.c 2006-09-17 06:33:19.000000000 -0400 +++ newtree/kernel/sched_staircase.c 2006-09-17 06:55:34.000000000 -0400 @@ -352,6 +352,7 @@ rq->sched_switch, rq->sched_cnt, rq->sched_goidle, rq->ttwu_cnt, rq->ttwu_local, rq->rq_sched_info.cpu_time, + rq->rq_sched_info.max_delay, rq->rq_sched_info.run_delay, rq->rq_sched_info.pcnt); seq_printf(seq, "\n"); @@ -422,6 +423,7 @@ rq_sched_info_arrive(struct rq *rq, unsigned long delta_jiffies) { if (rq) { + rq->rq_sched_info.max_delay = max(rq->rq_sched_info.max_delay, delta_jiffies); rq->rq_sched_info.run_delay += delta_jiffies; rq->rq_sched_info.pcnt++; } @@ -491,6 +493,7 @@ if (t->sched_info.last_queued) delta_jiffies = now - t->sched_info.last_queued; sched_info_dequeued(t); + t->sched_info.max_delay = max(t->sched_info.max_delay, diff); t->sched_info.run_delay += delta_jiffies; t->sched_info.last_arrival = now; t->sched_info.pcnt++; Files oldtree/scripts/kconfig/mconf and newtree/scripts/kconfig/mconf differ