From: Martin Schwidefsky Use cputime type and operations in do_task_stat, process_ticks and thread_ticks as well. Signed-off-by: Martin Schwidefsky Signed-off-by: Andrew Morton --- 25-akpm/fs/proc/array.c | 22 ++++++++++++---------- 25-akpm/kernel/posix-timers.c | 11 ++++++----- 2 files changed, 18 insertions(+), 15 deletions(-) diff -puN fs/proc/array.c~cputime-missing-pieces fs/proc/array.c --- 25/fs/proc/array.c~cputime-missing-pieces 2004-12-03 20:57:11.427901496 -0800 +++ 25-akpm/fs/proc/array.c 2004-12-03 20:57:11.431900888 -0800 @@ -315,8 +315,9 @@ static int do_task_stat(struct task_stru int num_threads = 0; struct mm_struct *mm; unsigned long long start_time; - unsigned long cmin_flt = 0, cmaj_flt = 0, cutime = 0, cstime = 0; - unsigned long min_flt = 0, maj_flt = 0, utime = 0, stime = 0; + unsigned long cmin_flt = 0, cmaj_flt = 0; + unsigned long min_flt = 0, maj_flt = 0; + cputime_t cutime, cstime, utime, stime; unsigned long rsslim = 0; struct task_struct *t; char tcomm[sizeof(task->comm)]; @@ -334,6 +335,7 @@ static int do_task_stat(struct task_stru sigemptyset(&sigign); sigemptyset(&sigcatch); + cutime = cstime = utime = stime = cputime_zero; read_lock(&tasklist_lock); if (task->sighand) { spin_lock_irq(&task->sighand->siglock); @@ -346,8 +348,8 @@ static int do_task_stat(struct task_stru do { min_flt += t->min_flt; maj_flt += t->maj_flt; - utime += t->utime; - stime += t->stime; + utime = cputime_add(utime, t->utime); + stime = cputime_add(stime, t->stime); t = next_thread(t); } while (t != task); } @@ -369,8 +371,8 @@ static int do_task_stat(struct task_stru if (whole) { min_flt += task->signal->min_flt; maj_flt += task->signal->maj_flt; - utime += task->signal->utime; - stime += task->signal->stime; + utime = cputime_add(utime, task->signal->utime); + stime = cputime_add(stime, task->signal->stime); } } ppid = task->pid ? task->group_leader->real_parent->tgid : 0; @@ -413,10 +415,10 @@ static int do_task_stat(struct task_stru cmin_flt, maj_flt, cmaj_flt, - jiffies_to_clock_t(utime), - jiffies_to_clock_t(stime), - jiffies_to_clock_t(cutime), - jiffies_to_clock_t(cstime), + cputime_to_clock_t(utime), + cputime_to_clock_t(stime), + cputime_to_clock_t(cutime), + cputime_to_clock_t(cstime), priority, nice, num_threads, diff -puN kernel/posix-timers.c~cputime-missing-pieces kernel/posix-timers.c --- 25/kernel/posix-timers.c~cputime-missing-pieces 2004-12-03 20:57:11.428901344 -0800 +++ 25-akpm/kernel/posix-timers.c 2004-12-03 20:57:11.433900584 -0800 @@ -1233,26 +1233,27 @@ int do_posix_clock_nonanosleep(int which } static unsigned long process_ticks(task_t *p) { - unsigned long ticks; + cputime_t cputime; task_t *t; spin_lock(&p->sighand->siglock); /* The signal structure is shared between all threads */ - ticks = p->signal->utime + p->signal->stime; + cputime = cputime_add(p->signal->utime, p->signal->stime); /* Add up the cpu time for all the still running threads of this process */ t = p; do { - ticks += t->utime + t->stime; + cputime = cputime_add(cputime, t->utime); + cputime = cputime_add(cputime, t->stime); t = next_thread(t); } while (t != p); spin_unlock(&p->sighand->siglock); - return ticks; + return cputime_to_jiffies(cputime); } static inline unsigned long thread_ticks(task_t *p) { - return p->utime + current->stime; + return cputime_to_jiffies(cputime_add(p->utime, current->stime)); } /* _