Date: Fri, 21 Apr 2017 00:00:23 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r317234 - head/usr.bin/vmstat Message-ID: <201704210000.v3L00NrH070007@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: glebius Date: Fri Apr 21 00:00:23 2017 New Revision: 317234 URL: https://svnweb.freebsd.org/changeset/base/317234 Log: - When reading VM stats, provide proper size argument to sysctl. - While here, remove unused arguments from mysysctl(). Modified: head/usr.bin/vmstat/vmstat.c Modified: head/usr.bin/vmstat/vmstat.c ============================================================================== --- head/usr.bin/vmstat/vmstat.c Thu Apr 20 23:12:50 2017 (r317233) +++ head/usr.bin/vmstat/vmstat.c Fri Apr 21 00:00:23 2017 (r317234) @@ -413,12 +413,11 @@ retry_nlist: } static int -mysysctl(const char *name, void *oldp, size_t *oldlenp, - void *newp, size_t newlen) +mysysctl(const char *name, void *oldp, size_t *oldlenp) { int error; - error = sysctlbyname(name, oldp, oldlenp, newp, newlen); + error = sysctlbyname(name, oldp, oldlenp, NULL, 0); if (error != 0 && errno != ENOMEM) xo_err(1, "sysctl(%s)", name); return (error); @@ -541,10 +540,12 @@ fill_vmmeter(struct __vmmeter *vmmp) GET_COUNTER(v_kthreadpages); #undef GET_COUNTER } else { - size_t size = sizeof(uint64_t); + size_t size; -#define GET_VM_STATS(cat, name) \ - mysysctl("vm.stats." #cat "." #name, &vmmp->name, &size, NULL, 0) +#define GET_VM_STATS(cat, name) do { \ + size = sizeof(vmmp->name); \ + mysysctl("vm.stats." #cat "." #name, &vmmp->name, &size); \ +} while (0) /* sys */ GET_VM_STATS(sys, v_swtch); GET_VM_STATS(sys, v_trap); @@ -609,7 +610,7 @@ fill_vmtotal(struct vmtotal *vmtp) xo_errx(1, "not implemented"); } else { size_t size = sizeof(*vmtp); - mysysctl("vm.vmtotal", vmtp, &size, NULL, 0); + mysysctl("vm.vmtotal", vmtp, &size); if (size != sizeof(*vmtp)) xo_errx(1, "vm.total size mismatch"); } @@ -633,14 +634,14 @@ getcpuinfo(u_long *maskp, int *maxidp) mask = 0; ncpus = 0; size = sizeof(maxcpu); - mysysctl("kern.smp.maxcpus", &maxcpu, &size, NULL, 0); + mysysctl("kern.smp.maxcpus", &maxcpu, &size); if (size != sizeof(maxcpu)) xo_errx(1, "sysctl kern.smp.maxcpus"); size = sizeof(long) * maxcpu * CPUSTATES; times = malloc(size); if (times == NULL) xo_err(1, "malloc %zd bytes", size); - mysysctl("kern.cp_times", times, &size, NULL, 0); + mysysctl("kern.cp_times", times, &size); maxid = (size / CPUSTATES / sizeof(long)) - 1; for (i = 0; i <= maxid; i++) { empty = 1; @@ -731,7 +732,7 @@ dovmstat(unsigned int interval, int reps struct clockinfo clockrate; size = sizeof(clockrate); - mysysctl("kern.clockrate", &clockrate, &size, NULL, 0); + mysysctl("kern.clockrate", &clockrate, &size); if (size != sizeof(clockrate)) xo_errx(1, "clockrate size mismatch"); hz = clockrate.hz; @@ -751,13 +752,13 @@ dovmstat(unsigned int interval, int reps xo_errx(1, "kvm_getcptime: %s", kvm_geterr(kd)); } else { size = sizeof(cur.cp_time); - mysysctl("kern.cp_time", &cur.cp_time, &size, NULL, 0); + mysysctl("kern.cp_time", &cur.cp_time, &size); if (size != sizeof(cur.cp_time)) xo_errx(1, "cp_time size mismatch"); } if (Pflag) { size = size_cp_times; - mysysctl("kern.cp_times", cur_cp_times, &size, NULL, 0); + mysysctl("kern.cp_times", cur_cp_times, &size); if (size != size_cp_times) xo_errx(1, "cp_times mismatch"); } @@ -1110,7 +1111,7 @@ dosum(void) kread(X_NCHSTATS, &lnchstats, sizeof(lnchstats)); } else { size_t size = sizeof(lnchstats); - mysysctl("vfs.cache.nchstats", &lnchstats, &size, NULL, 0); + mysysctl("vfs.cache.nchstats", &lnchstats, &size); if (size != sizeof(lnchstats)) xo_errx(1, "vfs.cache.nchstats size mismatch"); } @@ -1300,8 +1301,7 @@ read_intrcnts(unsigned long **intrcnts) *intrcnts = reallocf(*intrcnts, intrcntlen); if (*intrcnts == NULL) err(1, "reallocf()"); - if (mysysctl("hw.intrcnt", - *intrcnts, &intrcntlen, NULL, 0) == 0) + if (mysysctl("hw.intrcnt", *intrcnts, &intrcntlen) == 0) break; } } @@ -1369,8 +1369,7 @@ dointr(unsigned int interval, int reps) for (intrnames = NULL, inamlen = 1024; ; inamlen *= 2) { if ((intrnames = reallocf(intrnames, inamlen)) == NULL) xo_err(1, "reallocf()"); - if (mysysctl("hw.intrnames", - intrnames, &inamlen, NULL, 0) == 0) + if (mysysctl("hw.intrnames", intrnames, &inamlen) == 0) break; } }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201704210000.v3L00NrH070007>