Commit | Line | Data |
---|---|---|
93d75995 KB |
1 | /* |
2 | * Copyright (c) 1989 The Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
269a7923 | 5 | * %sccs.include.redist.c% |
93d75995 KB |
6 | */ |
7 | ||
8 | #if defined(LIBC_SCCS) && !defined(lint) | |
428b8f00 | 9 | static char sccsid[] = "@(#)clock.c 5.4 (Berkeley) %G%"; |
93d75995 KB |
10 | #endif /* LIBC_SCCS and not lint */ |
11 | ||
428b8f00 | 12 | #include <sys/param.h> |
93d75995 KB |
13 | #include <sys/time.h> |
14 | #include <sys/resource.h> | |
15 | ||
428b8f00 KB |
16 | /* |
17 | * Convert usec to clock ticks; could do (usec * CLK_TCK) / 1000000, | |
18 | * but this would overflow if we switch to nanosec. | |
19 | */ | |
20 | #define CONVTCK(r) (r.tv_sec * CLK_TCK + r.tv_usec / (1000000 / CLK_TCK)) | |
21 | ||
93d75995 KB |
22 | clock_t |
23 | clock() | |
24 | { | |
428b8f00 | 25 | struct rusage ru; |
93d75995 | 26 | |
428b8f00 | 27 | if (getrusage(RUSAGE_SELF, &ru)) |
675fd207 | 28 | return ((clock_t) -1); |
428b8f00 | 29 | return((clock_t)((CONVTCK(ru.ru_utime) + CONVTCK(ru.ru_stime)))); |
93d75995 | 30 | } |