68 lines
1.5 KiB
C
68 lines
1.5 KiB
C
#if !defined(lint) && defined(SCCSIDS)
|
|
static char sccsid[] = "@(#)vtimes.c 1.1 94/10/31 SMI"; /* from UCB 4.1 83/05/31 */
|
|
#endif
|
|
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
|
|
/*
|
|
* Backwards compatible vtimes.
|
|
*/
|
|
struct vtimes {
|
|
int vm_utime; /* user time (60'ths) */
|
|
int vm_stime; /* system time (60'ths) */
|
|
/* divide next two by utime+stime to get averages */
|
|
unsigned vm_idsrss; /* integral of d+s rss */
|
|
unsigned vm_ixrss; /* integral of text rss */
|
|
int vm_maxrss; /* maximum rss */
|
|
int vm_majflt; /* major page faults */
|
|
int vm_minflt; /* minor page faults */
|
|
int vm_nswap; /* number of swaps */
|
|
int vm_inblk; /* block reads */
|
|
int vm_oublk; /* block writes */
|
|
};
|
|
|
|
vtimes(par, chi)
|
|
register struct vtimes *par, *chi;
|
|
{
|
|
struct rusage ru;
|
|
|
|
if (par) {
|
|
if (getrusage(RUSAGE_SELF, &ru) < 0)
|
|
return (-1);
|
|
getvtimes(&ru, par);
|
|
}
|
|
if (chi) {
|
|
if (getrusage(RUSAGE_CHILDREN, &ru) < 0)
|
|
return (-1);
|
|
getvtimes(&ru, chi);
|
|
}
|
|
return (0);
|
|
}
|
|
|
|
static
|
|
getvtimes(aru, avt)
|
|
register struct rusage *aru;
|
|
register struct vtimes *avt;
|
|
{
|
|
|
|
avt->vm_utime = scale60(&aru->ru_utime);
|
|
avt->vm_stime = scale60(&aru->ru_stime);
|
|
avt->vm_idsrss = ((aru->ru_idrss+aru->ru_isrss) / 100) * 60;
|
|
avt->vm_ixrss = aru->ru_ixrss / 100 * 60;
|
|
avt->vm_maxrss = aru->ru_maxrss;
|
|
avt->vm_majflt = aru->ru_majflt;
|
|
avt->vm_minflt = aru->ru_minflt;
|
|
avt->vm_nswap = aru->ru_nswap;
|
|
avt->vm_inblk = aru->ru_inblock;
|
|
avt->vm_oublk = aru->ru_oublock;
|
|
}
|
|
|
|
static
|
|
scale60(tvp)
|
|
register struct timeval *tvp;
|
|
{
|
|
|
|
return (tvp->tv_sec * 60 + tvp->tv_usec / 16667);
|
|
}
|