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 <sys/times.h> |
|||
|
|||
/* this function assumes 100 hz linux and corrects for it */ |
|||
int __clock_gettime(clockid_t, struct timespec *); |
|||
|
|||
clock_t clock() |
|||
{ |
|||
struct timespec ts; |
|||
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