int initvmstat(void) { field_view *v; int mib[4], i; size_t size; hertz = stathz; if (!dkinit(1)) return(0); mib[0] = CTL_KERN; mib[1] = KERN_INTRCNT; mib[2] = KERN_INTRCNT_NUM; size = sizeof(nintr); if (sysctl(mib, 3, &nintr, &size, NULL, 0) < 0) return (-1); intrloc = calloc(nintr, sizeof(long)); intrname = calloc(nintr, sizeof(char *)); for (i = 0; i < nintr; i++) { char name[128]; mib[0] = CTL_KERN; mib[1] = KERN_INTRCNT; mib[2] = KERN_INTRCNT_NAME; mib[3] = i; size = sizeof(name); if (sysctl(mib, 4, name, &size, NULL, 0) < 0) return (-1); intrname[i] = strdup(name); if (intrname[i] == NULL) return (-1); } nextintsrow = INTSROW + 2; allocinfo(&s); allocinfo(&s1); allocinfo(&s2); allocinfo(&s3); allocinfo(&z); getinfo(&s2); copyinfo(&z, &s1); for (v = views_vm; v->name != NULL; v++) add_view(v); return(1); }
int initiostat(void) { field_view *v; dkinit(1); dkreadstats(); bzero(&bccur, sizeof(bccur)); for (v = views_io; v->name != NULL; v++) add_view(v); return(1); }
void setup(void) { dkinit(0); }
int main(int argc, char *argv[]) { char errbuf[_POSIX2_LINE_MAX]; int c, todo = 0, reps = 0; const char *errstr; u_int interval = 0; while ((c = getopt(argc, argv, "c:fiM:mN:stw:vz")) != -1) { switch (c) { case 'c': reps = atoi(optarg); break; case 'f': todo |= FORKSTAT; break; case 'i': todo |= INTRSTAT; break; case 'M': memf = optarg; break; case 'm': todo |= MEMSTAT; break; case 'N': nlistf = optarg; break; case 's': todo |= SUMSTAT; break; case 't': todo |= TIMESTAT; break; case 'w': interval = (u_int)strtonum(optarg, 0, 1000, &errstr); if (errstr) errx(1, "-w %s: %s", optarg, errstr); break; case 'v': verbose = 1; break; case 'z': zflag = 1; break; case '?': default: usage(); } } argc -= optind; argv += optind; if (todo == 0) todo = VMSTAT; if (nlistf != NULL || memf != NULL) { kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, errbuf); if (kd == 0) errx(1, "kvm_openfiles: %s", errbuf); if ((c = kvm_nlist(kd, namelist)) != 0) { if (c > 0) { (void)fprintf(stderr, "%s: undefined symbols:", __progname); for (c = 0; c < sizeof(namelist)/sizeof(namelist[0]); c++) if (namelist[c].n_type == 0) fprintf(stderr, " %s", namelist[c].n_name); (void)fputc('\n', stderr); exit(1); } else errx(1, "kvm_nlist: %s", kvm_geterr(kd)); } } if (todo & VMSTAT) { struct winsize winsize; dkinit(0); /* Initialize disk stats, no disks selected. */ argv = choosedrives(argv); /* Select disks. */ winsize.ws_row = 0; (void) ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize); if (winsize.ws_row > 0) winlines = winsize.ws_row; } #define BACKWARD_COMPATIBILITY #ifdef BACKWARD_COMPATIBILITY if (*argv) { interval = (u_int)strtonum(*argv, 0, 1000, &errstr); if (errstr) errx(1, "%s: %s", *argv, errstr); if (*++argv) reps = atoi(*argv); } #endif if (interval) { if (!reps) reps = -1; } else if (reps) interval = 1; if (todo & FORKSTAT) doforkst(); if (todo & MEMSTAT) { domem(); dopool(); } if (todo & SUMSTAT) dosum(); if (todo & TIMESTAT) dotimes(); if (todo & INTRSTAT) dointr(); if (todo & VMSTAT) dovmstat(interval, reps); exit(0); }