aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorAndrew Morton <akpm@linux-foundation.org>2017-03-19 21:01:47 +1100
committerStephen Rothwell <sfr@canb.auug.org.au>2017-03-19 21:01:47 +1100
commitd76a8eb39493af206aec0049e8dd1c5b5c6ed539 (patch)
tree8b3b48fdb2f92720c124026182169e7b54438ae0 /kernel
parent4300beae6bb046da820e2366f9de131f7bac670f (diff)
taskstats-add-e-u-stime-for-tgid-command-fix
run ktime_get_ns() a single time Cc: Balbir Singh <bsingharora@gmail.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Zhang Xiao <xiao.zhang@windriver.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/taskstats.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/taskstats.c b/kernel/taskstats.c
index 802a2bb7ccb9..1247db3ff002 100644
--- a/kernel/taskstats.c
+++ b/kernel/taskstats.c
@@ -211,6 +211,7 @@ static int fill_stats_for_tgid(pid_t tgid, struct taskstats *stats)
unsigned long flags;
int rc = -ESRCH;
u64 delta, utime, stime;
+ u64 start_time;
/*
* Add additional stats from live tasks except zombie thread group
@@ -228,6 +229,7 @@ static int fill_stats_for_tgid(pid_t tgid, struct taskstats *stats)
memset(stats, 0, sizeof(*stats));
tsk = first;
+ start_time = ktime_get_ns();
do {
if (tsk->exit_state)
continue;
@@ -240,7 +242,7 @@ 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;
+ delta = start_time - tsk->start_time;
/* Convert to micro seconds */
do_div(delta, NSEC_PER_USEC);
stats->ac_etime += delta;