fix incorrect clock tick scaling in fallback case of clock()
authorRich Felker <dalias@aerifal.cx>
Sun, 5 May 2013 18:51:25 +0000 (14:51 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 5 May 2013 18:51:25 +0000 (14:51 -0400)
since CLOCKS_PER_SEC is 1000000 (required by XSI) and the times
syscall reports values in 1/100 second units (Linux), the correct
scaling factor is 10000, not 100. note that only ancient kernels which
lack clock_gettime are affected.

src/time/clock.c

index d32cd09249abe8c9602a87e2bde31f630020fe14..78403af3c259c79aa6d3390f7a2c801b7cd12b4a 100644 (file)
@@ -11,5 +11,5 @@ clock_t clock()
        if (!__clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts))
                return ts.tv_sec*1000000 + ts.tv_nsec/1000;
        __syscall(SYS_times, &tms);
-       return (tms.tms_utime + tms.tms_stime)*100;
+       return (tms.tms_utime + tms.tms_stime)*10000;
 }