diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2004-10-14 15:33:33 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2004-10-14 15:33:33 -0400 |
| commit | e58d2eb090023ea4b8e1fe0af2a1bb5314ecfdcb (patch) | |
| tree | bfc1440ee2d3558f78c690d807b7bc788201b301 /kernel/acct.c | |
| parent | 5c6f34a71be8749b386e5a773fea0f4784da6a51 (diff) | |
| parent | 8b5915b08dda13ffe1f70f00322dcc34ce161904 (diff) | |
Merge pobox.com:/spare/repo/linux-2.6
into pobox.com:/spare/repo/libata-2.6
Diffstat (limited to 'kernel/acct.c')
| -rw-r--r-- | kernel/acct.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/acct.c b/kernel/acct.c index daf23c4efab4..fb6989a34f6e 100644 --- a/kernel/acct.c +++ b/kernel/acct.c @@ -384,6 +384,8 @@ static void do_acct_process(long exitcode, struct file *file) unsigned long vsize; unsigned long flim; u64 elapsed; + u64 run_time; + struct timespec uptime; /* * First check to see if there is enough free_space to continue @@ -401,7 +403,13 @@ static void do_acct_process(long exitcode, struct file *file) ac.ac_version = ACCT_VERSION | ACCT_BYTEORDER; strlcpy(ac.ac_comm, current->comm, sizeof(ac.ac_comm)); - elapsed = jiffies_64_to_AHZ(get_jiffies_64() - current->start_time); + /* calculate run_time in nsec*/ + do_posix_clock_monotonic_gettime(&uptime); + run_time = (u64)uptime.tv_sec*NSEC_PER_SEC + uptime.tv_nsec; + run_time -= (u64)current->start_time.tv_sec*NSEC_PER_SEC + + current->start_time.tv_nsec; + /* convert nsec -> AHZ */ + elapsed = nsec_to_AHZ(run_time); #if ACCT_VERSION==3 ac.ac_etime = encode_float(elapsed); #else |
