* Michael Holzheu <holzheu@xxxxxxxxxxxxxxxxxx> [2010-11-19 21:11:12]: > From: Michael Holzheu <holzheu@xxxxxxxxxxxxxxxxxx> > > With this patch the (full) cumulative CPU time is added to "struct taskstats". > The CPU time is only returned for the thread group leader. > > Signed-off-by: Michael Holzheu <holzheu@xxxxxxxxxxxxxxxxxx> > --- > include/linux/taskstats.h | 7 ++++++- > kernel/tsacct.c | 7 +++++++ > 2 files changed, 13 insertions(+), 1 deletion(-) > > --- a/include/linux/taskstats.h > +++ b/include/linux/taskstats.h > @@ -33,7 +33,7 @@ > */ > > > -#define TASKSTATS_VERSION 7 > +#define TASKSTATS_VERSION 8 > #define TS_COMM_LEN 32 /* should be >= TASK_COMM_LEN > * in linux/sched.h */ > > @@ -163,6 +163,11 @@ struct taskstats { > /* Delay waiting for memory reclaim */ > __u64 freepages_count; > __u64 freepages_delay_total; > + /* version 7 ends here */ > + > + /* All cumulative CPU time of dead children */ > + __u64 ac_cutime_acct; /* User CPU time [usec] */ > + __u64 ac_cstime_acct; /* System CPU time [usec] */ > }; > > > --- a/kernel/tsacct.c > +++ b/kernel/tsacct.c > @@ -31,6 +31,7 @@ void bacct_add_tsk(struct taskstats *sta > const struct cred *tcred; > struct timespec uptime, ts; > u64 ac_etime; > + unsigned long flags; > > BUILD_BUG_ON(TS_COMM_LEN < TASK_COMM_LEN); > > @@ -71,6 +72,12 @@ void bacct_add_tsk(struct taskstats *sta > stats->ac_majflt = tsk->maj_flt; > > strncpy(stats->ac_comm, tsk->comm, sizeof(stats->ac_comm)); > + if (tsk->tgid == tsk->pid && lock_task_sighand(tsk, &flags)) { I don't think referring to tgid and pid is a good idea in the context of namespaces, thread_group_leader makes more sense like Oleg pointed out. > + struct cdata *cd = &tsk->signal->cdata_acct; > + stats->ac_cutime_acct = cputime_to_usecs(cd->utime); > + stats->ac_cstime_acct = cputime_to_usecs(cd->stime); > + unlock_task_sighand(tsk, &flags); > + } > } > > > -- Three Cheers, Balbir -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html