> On Tue, 18 Sep 2007 00:23:39 +0200 Guillaume Chazarain <guichaz@yahoo.fr> wrote:
>
>> TASKSTATS_CMD_ATTR_TGID used to return only the delay accounting stats, not
>> the basic and extended accounting. With this patch,
>> TASKSTATS_CMD_ATTR_TGID also aggregates the accounting info for all threads
>> of a thread group. This makes TASKSTATS_CMD_ATTR_TGID usable in a similar
>> fashion to TASKSTATS_CMD_ATTR_PID, for commands like iotop -P
>> (
http://guichaz.free.fr/misc/iotop.py).
>
> This patch conflicts somewhat with
> add-scaled-time-to-taskstats-based-process-accounting.patch
>
> I fixed it up like this:
>
> void bacct_add_tsk(struct taskstats *stats, struct task_struct *task)
> {
> if (task->flags & PF_SUPERPRIV)
> stats->ac_flag |= ASU;
> if (task->flags & PF_DUMPCORE)
> stats->ac_flag |= ACORE;
> if (task->flags & PF_SIGNALED)
> stats->ac_flag |= AXSIG;
> if (thread_group_leader(task) && (task->flags & PF_FORKNOEXEC))
> /*
> * Threads are created by do_fork() and don't exec but not in
> * the AFORK sense, as the latter involves fork(2).
> */
> stats->ac_flag |= AFORK;
>
> stats->ac_utimescaled +=
> cputime_to_msecs(task->utimescaled) * USEC_PER_MSEC;
> stats->ac_stimescaled +=
> cputime_to_msecs(task->stimescaled) * USEC_PER_MSEC;
> stats->ac_utime += cputime_to_msecs(task->utime) * USEC_PER_MSEC;
> stats->ac_stime += cputime_to_msecs(task->stime) * USEC_PER_MSEC;
> stats->ac_minflt += task->min_flt;
> stats->ac_majflt += task->maj_flt;
> }
>
> (note the s/=/+=/ in there) but it all needs reviewing and checking and
> testing please.