#ifndef lint static char *sccsid = "@(#)times.c 4.1 (ULTRIX) 7/3/90"; #endif lint /************************************************************************ * * * Copyright (c) 1987 by * * Digital Equipment Corporation, Maynard, MA * * All rights reserved. * * * * This software is furnished under a license and may be used and * * copied only in accordance with the terms of such license and * * with the inclusion of the above copyright notice. This * * software or any other copies thereof may not be provided or * * otherwise made available to any other person. No title to and * * ownership of the software is hereby transferred. * * * * This software is derived from software received from the * * University of California, Berkeley, and from Bell * * Laboratories. Use, duplication, or disclosure is subject to * * restrictions under license agreements with University of * * California and with AT&T. * * * * The information in this software is subject to change without * * notice and should not be construed as a commitment by Digital * * Equipment Corporation. * * * * Digital assumes no responsibility for the use or reliability * * of its software on equipment which is not supplied by Digital. * * * ************************************************************************/ /************************************************************************ * Modification History * * * * Mark A. Parenti * * 0001 Make changes for POSIX compliance. The change is to return * * the elapsed time since the epoch. Also include times.h * * rather than define the tms structure in this file. * * * ************************************************************************/ #include #include #include #include extern int getrusage(); extern long time(); clock_t times(tmsp) register struct tms *tmsp; { struct rusage ru; if (getrusage(RUSAGE_SELF, &ru) < 0) return (-1); tmsp->tms_utime = scale60(&ru.ru_utime); tmsp->tms_stime = scale60(&ru.ru_stime); if (getrusage(RUSAGE_CHILDREN, &ru) < 0) return (-1); tmsp->tms_cutime = scale60(&ru.ru_utime); tmsp->tms_cstime = scale60(&ru.ru_stime); return 60L * time( (long *)0 ); /* return (0); */ } static scale60(tvp) register struct timeval *tvp; { return (tvp->tv_sec * 60 + tvp->tv_usec / 16667); }