TYPEDEF void * timer_t;
TYPEDEF int clockid_t;
-TYPEDEF unsigned long clock_t;
+TYPEDEF long clock_t;
TYPEDEF struct { unsigned long __bits[128/sizeof(long)]; } sigset_t;
TYPEDEF struct __siginfo siginfo_t;
TYPEDEF void * timer_t;
TYPEDEF int clockid_t;
-TYPEDEF unsigned long clock_t;
+TYPEDEF long clock_t;
TYPEDEF struct { unsigned long __bits[128/sizeof(long)]; } sigset_t;
TYPEDEF struct __siginfo siginfo_t;
TYPEDEF void * timer_t;
TYPEDEF int clockid_t;
-TYPEDEF unsigned long clock_t;
+TYPEDEF long clock_t;
TYPEDEF struct { unsigned long __bits[128/sizeof(long)]; } sigset_t;
TYPEDEF struct __siginfo siginfo_t;
TYPEDEF void * timer_t;
TYPEDEF int clockid_t;
-TYPEDEF unsigned long clock_t;
+TYPEDEF long clock_t;
TYPEDEF struct { unsigned long __bits[128/sizeof(long)]; } sigset_t;
TYPEDEF struct __siginfo siginfo_t;
TYPEDEF void * timer_t;
TYPEDEF int clockid_t;
-TYPEDEF unsigned long clock_t;
+TYPEDEF long clock_t;
TYPEDEF struct { unsigned long __bits[128/sizeof(long)]; } sigset_t;
TYPEDEF struct __siginfo siginfo_t;
#include <time.h>
-#include <sys/times.h>
-#include "syscall.h"
+#include <limits.h>
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)*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;
}