xref: /csrg-svn/lib/libc/gen/times.c (revision 12843)
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