Messages in this thread | | | Subject | Re: [PATCH] fix granularity of task_u/stime(), v2 | From | Peter Zijlstra <> | Date | Thu, 12 Nov 2009 16:00:38 +0100 |
| |
On Thu, 2009-11-12 at 15:49 +0100, Stanislaw Gruszka wrote: > I can not reproduce > the bug with below patch: > > diff --git a/kernel/exit.c b/kernel/exit.c > index f7864ac..b85e384 100644 > --- a/kernel/exit.c > +++ b/kernel/exit.c > @@ -110,8 +110,8 @@ static void __exit_signal(struct task_struct *tsk) > * We won't ever get here for the group leader, since it > * will have been the last reference on the signal_struct. > */ > - sig->utime = cputime_add(sig->utime, task_utime(tsk)); > - sig->stime = cputime_add(sig->stime, task_stime(tsk)); > + sig->utime = cputime_add(sig->utime, tsk->utime); //task_utime(tsk)); > + sig->stime = cputime_add(sig->stime, tsk->stime); //task_stime(tsk)); > sig->gtime = cputime_add(sig->gtime, task_gtime(tsk)); > sig->min_flt += tsk->min_flt; > sig->maj_flt += tsk->maj_flt;
Yes, this is the thing I suggested and makes sense.
> diff --git a/kernel/sys.c b/kernel/sys.c > index ce17760..8be5b75 100644 > --- a/kernel/sys.c > +++ b/kernel/sys.c > @@ -914,8 +914,8 @@ void do_sys_times(struct tms *tms) > struct task_cputime cputime; > cputime_t cutime, cstime; > > - thread_group_cputime(current, &cputime); > spin_lock_irq(¤t->sighand->siglock); > + thread_group_cputime(current, &cputime); > cutime = current->signal->cutime; > cstime = current->signal->cstime; > spin_unlock_irq(¤t->sighand->siglock); > > Perhaps we can remove task_{u,s}time() in some places or maybe at whole ?
I think task_[us]time() still has value for getrusage() since it avoids the task hiding from top by never running during the tick crap.
| |