/* * Copyright (c) 1989 The Regents of the University of California. * All rights reserved. * * %sccs.include.redist.c% */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)clock.c 5.3 (Berkeley) 06/01/90"; #endif /* LIBC_SCCS and not lint */ #include #include #include #include clock_t clock() { struct rusage rusage; clock_t val; if (getrusage(RUSAGE_SELF, &rusage)) return ((clock_t) -1); val = (rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec) * CLK_TCK; /* * Convert usec to clock ticks; could do (usec * CLK_TCK) / 1000000, * but this would overflow if we switch to nanosec. */ val += (rusage.ru_utime.tv_usec + rusage.ru_stime.tv_usec) / (1000000 / CLK_TCK); return (val); }