Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/vmstat Pass all three mib items to a sysctl in dkrea...



details:   https://anonhg.NetBSD.org/src/rev/7cbff555a129
branches:  trunk
changeset: 538856:7cbff555a129
user:      simonb <simonb%NetBSD.org@localhost>
date:      Fri Nov 01 15:23:06 2002 +0000

description:
Pass all three mib items to a sysctl in dkreadstats().
Use the new kernel sysctl sizing code to calculate the number of drives.

diffstat:

 usr.bin/vmstat/dkstats.c |  29 +++++++----------------------
 1 files changed, 7 insertions(+), 22 deletions(-)

diffs (61 lines):

diff -r e7d56513c575 -r 7cbff555a129 usr.bin/vmstat/dkstats.c
--- a/usr.bin/vmstat/dkstats.c  Fri Nov 01 15:20:03 2002 +0000
+++ b/usr.bin/vmstat/dkstats.c  Fri Nov 01 15:23:06 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dkstats.c,v 1.17 2002/11/01 12:47:56 mrg Exp $ */
+/*     $NetBSD: dkstats.c,v 1.18 2002/11/01 15:23:06 simonb Exp $      */
 
 /*
  * Copyright (c) 1996 John M. Vinopal
@@ -183,7 +183,7 @@
                mib[2] = sizeof(struct disk_sysctl);
 
                size = dk_ndrive * sizeof(struct disk_sysctl);
-               if (sysctl(mib, 2, dk_drives, &size, NULL, 0) < 0)
+               if (sysctl(mib, 3, dk_drives, &size, NULL, 0) < 0)
                        err(1, "sysctl hw.diskstats failed");
                for (i = 0; i < dk_ndrive; i++) {
                        cur.dk_rxfer[i] = dk_drives[i].dk_rxfer;
@@ -247,10 +247,10 @@
        struct disklist_head disk_head;
        struct disk     cur_disk, *p;
        struct clockinfo clockinfo;
-       char            errbuf[_POSIX2_LINE_MAX], *names, *s;
+       char            errbuf[_POSIX2_LINE_MAX];
        size_t          size;
        static int      once = 0;
-       int             i, mib[2];
+       int             i, mib[3];
 
        if (once)
                return (1);
@@ -272,26 +272,11 @@
                        hz = clockinfo.hz;
 
                mib[0] = CTL_HW;
-               mib[1] = HW_DISKNAMES;
-               if (sysctl(mib, 2, NULL, &size, NULL, 0) == -1)
-                       err(1, "sysctl hw.disknames failed");
-               names = (char *)malloc(size);
-               if (names == NULL)
-                       errx(1, "Memory allocation failure.");
-               mib[0] = CTL_HW;
-               mib[1] = HW_DISKNAMES;
-               if (sysctl(mib, 2, names, &size, NULL, 0) == -1)
-                       err(1, "sysctl hw.disknames failed");
-               dk_ndrive = 0;
-               for (s = names; *s; s++)
-                       if (*s == ' ')
-                               dk_ndrive++;
-               free(names);
-
-               mib[0] = CTL_HW;
                mib[1] = HW_DISKSTATS;
-               if (sysctl(mib, 2, NULL, &size, NULL, 0) == -1)
+               mib[2] = sizeof(struct disk_sysctl);
+               if (sysctl(mib, 3, NULL, &size, NULL, 0) == -1)
                        err(1, "sysctl hw.diskstats failed");
+               dk_ndrive = size / sizeof(struct disk_sysctl);
 
                if (size == 0) {
                        warnx("No drives attached.");



Home | Main Index | Thread Index | Old Index