X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftime%2Fclock.c;h=6724012b92ef69b8dfa19e087b940aaf6a141e10;hb=7634101069db26b003adeec09c6aa14646363557;hp=78403af3c259c79aa6d3390f7a2c801b7cd12b4a;hpb=da49b872f5ef56026713855b66783c8e32570c4b;p=musl diff --git a/src/time/clock.c b/src/time/clock.c index 78403af3..6724012b 100644 --- a/src/time/clock.c +++ b/src/time/clock.c @@ -1,15 +1,16 @@ #include -#include -#include "syscall.h" - -int __clock_gettime(clockid_t, struct timespec *); +#include 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)*10000; + + 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; }