|
|
1.1 root 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: */
9: struct 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:
23: vtimes(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:
41: static
42: getvtimes(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:
59: static
60: scale60(tvp)
61: register struct timeval *tvp;
62: {
63:
64: return (tvp->tv_sec * 60 + tvp->tv_usec / 16667);
65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.