diff options
author | Poul-Henning Kamp <phk@FreeBSD.org> | 2005-03-08 08:12:35 +0000 |
---|---|---|
committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2005-03-08 08:12:35 +0000 |
commit | 008aca9807ec0d052433d5231df2b11bfcf23251 (patch) | |
tree | 601d4285b1bceb0afb7b48eb7dc4c943f97fe997 /lib | |
parent | 1753d0e6a4288e3929bbf73087ceb61e5f6b4348 (diff) | |
download | src-008aca9807ec0d052433d5231df2b11bfcf23251.tar.gz src-008aca9807ec0d052433d5231df2b11bfcf23251.zip |
Make the returnvalue of times(3) insensitive to changes in wall-clock.
PR: 78537
Notes
Notes:
svn path=/head/; revision=143279
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/gen/times.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/libc/gen/times.c b/lib/libc/gen/times.c index c7de17ee72a7..dd3152443543 100644 --- a/lib/libc/gen/times.c +++ b/lib/libc/gen/times.c @@ -53,7 +53,8 @@ times(tp) struct tms *tp; { struct rusage ru; - struct timeval t; + struct timespec t; + clock_t c; if (getrusage(RUSAGE_SELF, &ru) < 0) return ((clock_t)-1); @@ -63,7 +64,8 @@ times(tp) return ((clock_t)-1); tp->tms_cutime = CONVTCK(ru.ru_utime); tp->tms_cstime = CONVTCK(ru.ru_stime); - if (gettimeofday(&t, (struct timezone *)0)) + if (clock_gettime(CLOCK_MONOTONIC, &t)) return ((clock_t)-1); - return ((clock_t)(CONVTCK(t))); + c = t.tv_sec * CLK_TCK + t.tv_nsec / (1000000000 / CLK_TCK); + return (c); } |