mirror of https://git.musl-libc.org/git/musl
Browse Source
it previously was returning the pseudo-monotonic-realtime clock returned by times() rather than process cputime. it also violated C namespace by pulling in times(). we now use clock_gettime() if available because times() has ridiculously bad resolution. still provide a fallback for ancient kernels without clock_gettime.rs-1.0
1 changed files with 7 additions and 2 deletions
@ -1,9 +1,14 @@ |
|||||
#include <time.h> |
#include <time.h> |
||||
#include <sys/times.h> |
#include <sys/times.h> |
||||
|
|
||||
/* this function assumes 100 hz linux and corrects for it */ |
int __clock_gettime(clockid_t, struct timespec *); |
||||
|
|
||||
clock_t clock() |
clock_t clock() |
||||
{ |
{ |
||||
|
struct timespec ts; |
||||
struct tms tms; |
struct tms tms; |
||||
return (unsigned long)times(&tms)*10000; |
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; |
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue