diff options
author | Zhang Xiao <xiao.zhang@windriver.com> | 2017-03-19 21:01:46 +1100 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2017-03-19 21:01:46 +1100 |
commit | 4300beae6bb046da820e2366f9de131f7bac670f (patch) | |
tree | df9c3d6572892771265d2f4aace31de02659f69d /kernel | |
parent | bb87ad5e2cc4d163dadd006dd89fd048d178f1e3 (diff) |
taskstats: add e/u/stime for TGID command
The elapsed time, user CPU time and system CPU time for the thread group
status request are presently left at zero. Fill these in.
Link: http://lkml.kernel.org/r/1488508424-12322-1-git-send-email-xiao.zhang@windriver.com
Signed-off-by: Zhang Xiao <xiao.zhang@windriver.com>
Cc: Balbir Singh <bsingharora@gmail.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/taskstats.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/taskstats.c b/kernel/taskstats.c index 8a5e44236f78..802a2bb7ccb9 100644 --- a/kernel/taskstats.c +++ b/kernel/taskstats.c @@ -210,6 +210,7 @@ static int fill_stats_for_tgid(pid_t tgid, struct taskstats *stats) struct task_struct *tsk, *first; unsigned long flags; int rc = -ESRCH; + u64 delta, utime, stime; /* * Add additional stats from live tasks except zombie thread group @@ -238,6 +239,16 @@ static int fill_stats_for_tgid(pid_t tgid, struct taskstats *stats) */ delayacct_add_tsk(stats, tsk); + /* calculate task elapsed time in nsec */ + delta = ktime_get_ns() - tsk->start_time; + /* Convert to micro seconds */ + do_div(delta, NSEC_PER_USEC); + stats->ac_etime += delta; + + task_cputime(tsk, &utime, &stime); + stats->ac_utime += div_u64(utime, NSEC_PER_USEC); + stats->ac_stime += div_u64(stime, NSEC_PER_USEC); + stats->nvcsw += tsk->nvcsw; stats->nivcsw += tsk->nivcsw; } while_each_thread(first, tsk); |