X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Ftime%2Fclock.c;h=c348e39836caec86425652d6e0e3259ff9c05a2c;hp=e6e9e7766210bc2485779bf766a37ad439794397;hb=d9265653552a2b667bf3e84407a06edaa7e9f74f;hpb=ad5759821ced59bbb70eb36d396df2a787141089 diff --git a/src/time/clock.c b/src/time/clock.c index e6e9e776..c348e398 100644 --- a/src/time/clock.c +++ b/src/time/clock.c @@ -1,14 +1,18 @@ #include -#include +#include int __clock_gettime(clockid_t, struct timespec *); clock_t clock() { struct timespec ts; - struct tms tms; - 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; + + if (__clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts)) + return -1; + + if (ts.tv_sec > LONG_MAX/1000000 + || ts.tv_nsec/1000 > LONG_MAX-1000000*ts.tv_sec) + return -1; + + return ts.tv_sec*1000000 + ts.tv_nsec/1000; }