1*12843Ssam /* times.c 4.1 83/05/31 */ 2*12843Ssam 3*12843Ssam #include <sys/time.h> 4*12843Ssam #include <sys/resource.h> 5*12843Ssam 6*12843Ssam /* 7*12843Ssam * Backwards compatible times. 8*12843Ssam */ 9*12843Ssam struct tms { 10*12843Ssam int tms_utime; /* user time */ 11*12843Ssam int tms_stime; /* system time */ 12*12843Ssam int tms_cutime; /* user time, children */ 13*12843Ssam int tms_cstime; /* system time, children */ 14*12843Ssam }; 15*12843Ssam 16*12843Ssam times(tmsp) 17*12843Ssam register struct times *tmsp; 18*12843Ssam { 19*12843Ssam struct rusage ru; 20*12843Ssam 21*12843Ssam if (getrusage(RUSAGE_SELF, &ru) < 0) 22*12843Ssam return (-1); 23*12843Ssam tmsp->tms_utime = scale60(&ru.ru_time); 24*12843Ssam tmsp->tms_stime = scale60(&ru.ru_stime); 25*12843Ssam if (getrusage(RUSAGE_CHILDREN, &ru) < 0) 26*12843Ssam return (-1); 27*12843Ssam tmsp->tms_cutime = scale60(&ru.ru_utime); 28*12843Ssam tmsp->tms_cstime = scale60(&ru.ru_stime); 29*12843Ssam return (0); 30*12843Ssam } 31*12843Ssam 32*12843Ssam static 33*12843Ssam scale60(tvp) 34*12843Ssam register struct timeval *tvp; 35*12843Ssam { 36*12843Ssam 37*12843Ssam return (tvp->tv_sec * 60 + tvp->tv_usec / 16667); 38*12843Ssam } 39