4.3BSD beta release manual page
[unix-history] / usr / src / lib / libcompat / 4.1 / vtimes.c
CommitLineData
2fe5b800
SL
1/* vtimes.c 4.1 83/05/31 */
2
3#include <sys/time.h>
4#include <sys/resource.h>
5
6/*
7 * Backwards compatible vtimes.
8 */
9struct vtimes {
10 int vm_utime; /* user time (60'ths) */
11 int vm_stime; /* system time (60'ths) */
12 /* divide next two by utime+stime to get averages */
13 unsigned vm_idsrss; /* integral of d+s rss */
14 unsigned vm_ixrss; /* integral of text rss */
15 int vm_maxrss; /* maximum rss */
16 int vm_majflt; /* major page faults */
17 int vm_minflt; /* minor page faults */
18 int vm_nswap; /* number of swaps */
19 int vm_inblk; /* block reads */
20 int vm_oublk; /* block writes */
21};
22
23vtimes(par, chi)
24 register struct vtimes *par, *chi;
25{
26 struct rusage ru;
27
28 if (par) {
29 if (getrusage(RUSAGE_SELF, &ru) < 0)
30 return (-1);
31 getvtimes(&ru, par);
32 }
33 if (chi) {
34 if (getrusage(RUSAGE_CHILDREN, &ru) < 0)
35 return (-1);
36 getvtimes(&ru, chi);
37 }
38 return (0);
39}
40
41static
42getvtimes(aru, avt)
43 register struct rusage *aru;
44 register struct vtimes *avt;
45{
46
47 avt->vm_utime = scale60(&aru->ru_utime);
48 avt->vm_stime = scale60(&aru->ru_stime);
49 avt->vm_idsrss = ((aru->ru_idrss+aru->ru_isrss) / 100) * 60;
50 avt->vm_ixrss = aru->ru_ixrss / 100 * 60;
51 avt->vm_maxrss = aru->ru_maxrss;
52 avt->vm_majflt = aru->ru_majflt;
53 avt->vm_minflt = aru->ru_minflt;
54 avt->vm_nswap = aru->ru_nswap;
55 avt->vm_inblk = aru->ru_inblock;
56 avt->vm_oublk = aru->ru_oublock;
57}
58
59static
60scale60(tvp)
61 register struct timeval *tvp;
62{
63
64 return (tvp->tv_sec * 60 + tvp->tv_usec / 16667);
65}