home *** CD-ROM | disk | FTP | other *** search
- /* P1003.1 times emulation */
- /* $Id: times.c,v 1.3 93/05/05 21:17:52 sjg Exp $ */
-
- #include <sys/times.h>
-
- #if _BSD
-
- #include <sys/time.h>
- #include <sys/resource.h>
-
- static long base_tv_sec = 0;
-
- clock_t
- times(tmsp)
- register struct tms *tmsp;
- {
- struct timeval tv;
- struct rusage ru;
-
- getrusage(RUSAGE_SELF, &ru);
- tmsp->tms_utime = ru.ru_utime.tv_sec*CLK_TCK
- + (long)ru.ru_utime.tv_usec*CLK_TCK/1000000;
- tmsp->tms_stime = ru.ru_stime.tv_sec*CLK_TCK
- + (long)ru.ru_stime.tv_usec*CLK_TCK/1000000;
- getrusage(RUSAGE_CHILDREN, &ru);
- tmsp->tms_cutime = ru.ru_utime.tv_sec*CLK_TCK
- + (long)ru.ru_utime.tv_usec*CLK_TCK/1000000;
- tmsp->tms_cstime = ru.ru_stime.tv_sec*CLK_TCK
- + (long)ru.ru_stime.tv_usec*CLK_TCK/1000000;
-
- gettimeofday(&tv, (struct timezone *)NULL);
- if (base_tv_sec == 0)
- base_tv_sec = tv.tv_sec;
- tv.tv_sec -= base_tv_sec; /* prevent clock_t overflow */
- return tv.tv_sec*CLK_TCK + (long)tv.tv_usec*CLK_TCK/1000000;
- }
-
- #endif
-
- #if _V7
-
- clock_t
- times(tmsp)
- struct tms *tmsp;
- {
- struct timeb tb;
-
- #undef times /* access real times() */
- times(tmsp);
- #define times times_
- ftime(&tb);
- return tb.time*CLK_TCK + (long)tb.millitm*CLK_TCK/1000;
- }
-
- #endif
-
-