xref: /csrg-svn/lib/libc/gen/times.c (revision 12887)
1*12887Ssam /*	times.c	4.2	83/06/02	*/
212843Ssam 
312843Ssam #include <sys/time.h>
412843Ssam #include <sys/resource.h>
512843Ssam 
612843Ssam /*
712843Ssam  * Backwards compatible times.
812843Ssam  */
912843Ssam struct tms {
1012843Ssam 	int	tms_utime;		/* user time */
1112843Ssam 	int	tms_stime;		/* system time */
1212843Ssam 	int	tms_cutime;		/* user time, children */
1312843Ssam 	int	tms_cstime;		/* system time, children */
1412843Ssam };
1512843Ssam 
1612843Ssam times(tmsp)
17*12887Ssam 	register struct tms *tmsp;
1812843Ssam {
1912843Ssam 	struct rusage ru;
2012843Ssam 
2112843Ssam 	if (getrusage(RUSAGE_SELF, &ru) < 0)
2212843Ssam 		return (-1);
23*12887Ssam 	tmsp->tms_utime = scale60(&ru.ru_utime);
2412843Ssam 	tmsp->tms_stime = scale60(&ru.ru_stime);
2512843Ssam 	if (getrusage(RUSAGE_CHILDREN, &ru) < 0)
2612843Ssam 		return (-1);
2712843Ssam 	tmsp->tms_cutime = scale60(&ru.ru_utime);
2812843Ssam 	tmsp->tms_cstime = scale60(&ru.ru_stime);
2912843Ssam 	return (0);
3012843Ssam }
3112843Ssam 
3212843Ssam static
3312843Ssam scale60(tvp)
3412843Ssam 	register struct timeval *tvp;
3512843Ssam {
3612843Ssam 
3712843Ssam 	return (tvp->tv_sec * 60 + tvp->tv_usec / 16667);
3812843Ssam }
39