BSD 3 development
[unix-history] / usr / src / cmd / iostat.c
index 8e03f88..31ad101 100644 (file)
@@ -1,6 +1,6 @@
 int    bflg;
 int    dflg;
 int    bflg;
 int    dflg;
-int    tflg;
+int    tflg = 1;
 int    iflg;
 int    aflg;
 int    sflg;
 int    iflg;
 int    aflg;
 int    sflg;
@@ -11,6 +11,11 @@ struct
        unsigned        value;
 } nl[] = {
        "_dk_busy", 0, 0,
        unsigned        value;
 } nl[] = {
        "_dk_busy", 0, 0,
+       "_dk_time", 0, 0,
+       "_dk_numb", 0, 0,
+       "_dk_wds", 0, 0,
+       "_tk_nin", 0, 0,
+       "_tk_nout", 0, 0,
        "_io_info", 0, 0,
        "\0\0\0\0\0\0\0\0", 0, 0
 };
        "_io_info", 0, 0,
        "\0\0\0\0\0\0\0\0", 0, 0
 };
@@ -45,9 +50,9 @@ char *argv[];
        double f1, f2;
        long t;
 
        double f1, f2;
        long t;
 
-       nlist("/unix", nl);
+       nlist("/vmunix", nl);
        if(nl[0].type == -1) {
        if(nl[0].type == -1) {
-               printf("dk_busy not found in /unix namelist\n");
+               printf("dk_busy not found in /vmunix namelist\n");
                exit(1);
        }
        mf = open("/dev/kmem", 0);
                exit(1);
        }
        mf = open("/dev/kmem", 0);
@@ -68,7 +73,7 @@ char *argv[];
                else if (argv[1][1]=='i')
                        iflg++;
                else if (argv[1][1]=='b')
                else if (argv[1][1]=='i')
                        iflg++;
                else if (argv[1][1]=='b')
-                       bflg++;
+                       bflg++, tflg = 0;
                argc--;
                argv++;
        }
                argc--;
                argv++;
        }
@@ -78,16 +83,26 @@ char *argv[];
        if(tflg)
                printf("         TTY");
        if (bflg==0)
        if(tflg)
                printf("         TTY");
        if (bflg==0)
-       printf("   RF                RK                RP                  PERCENT\n");
+       printf("   RP                      RM                PERCENT\n");
        if(tflg)
                printf("   tin  tout");
        if (bflg==0)
        if(tflg)
                printf("   tin  tout");
        if (bflg==0)
-       printf("   tpm  msps  mspt   tpm  msps  mspt   tpm  msps  mspt  user  nice systm  idle\n");
+       printf("   spm   tpm  msps  mspt   tpm  msps  mspt  user  nice systm  idle\n");
        }
 
 loop:
        lseek(mf, (long)nl[0].value, 0);
        }
 
 loop:
        lseek(mf, (long)nl[0].value, 0);
-       read(mf, (char *)&s, sizeof s);
+       read(mf, &s.busy, sizeof s.busy);
+       lseek(mf, (long)nl[1].value, 0);
+       read(mf, s.etime, sizeof s.etime);
+       lseek(mf, (long)nl[2].value, 0);
+       read(mf, s.numb, sizeof s.numb);
+       lseek(mf, (long)nl[3].value, 0);
+       read(mf, s.wds, sizeof s.wds);
+       lseek(mf, (long)nl[4].value, 0);
+       read(mf, &s.tin, sizeof s.tin);
+       lseek(mf, (long)nl[5].value, 0);
+       read(mf, &s.tout, sizeof s.tout);
        for(i=0; i<40; i++) {
                t = s.etime[i];
                s.etime[i] -= s1.etime[i];
        for(i=0; i<40; i++) {
                t = s.etime[i];
                s.etime[i] -= s1.etime[i];
@@ -141,9 +156,11 @@ contin:
 
 /* usec per word for the various disks */
 double xf[] = {
 
 /* usec per word for the various disks */
 double xf[] = {
+       2.48,   /* RP06 */
+       2.48,   /* RP06 */
+       1.66,   /* RM03 */
        16.0,   /* RF */
        11.1,   /* RK03/05 */
        16.0,   /* RF */
        11.1,   /* RK03/05 */
-       2.48,   /* RP06 */
 };
 
 stats(dn)
 };
 
 stats(dn)
@@ -152,6 +169,7 @@ stats(dn)
        double f1, f2, f3;
        double f4, f5, f6;
        long t;
        double f1, f2, f3;
        double f4, f5, f6;
        long t;
+       static float zerof5;
 
        t = 0;
        for(i=0; i<32; i++)
 
        t = 0;
        for(i=0; i<32; i++)
@@ -160,7 +178,7 @@ stats(dn)
        f1 = t;
        f1 = f1/60.;
        f2 = s.numb[dn];
        f1 = t;
        f1 = f1/60.;
        f2 = s.numb[dn];
-       if(f2 == 0.) {
+       if(f2 == 0. && dn) {
                printf("%6.0f%6.1f%6.1f", 0.0, 0.0, 0.0);
                return;
        }
                printf("%6.0f%6.1f%6.1f", 0.0, 0.0, 0.0);
                return;
        }
@@ -170,8 +188,20 @@ stats(dn)
        f4 = f4*1.0e-6;
        f5 = f1 - f4*f3;
        f6 = f1 - f5;
        f4 = f4*1.0e-6;
        f5 = f1 - f4*f3;
        f6 = f1 - f5;
+       if (dn == 0) {
+               if (s.numb[0] == 0) {
+                       f2 = s.numb[0] = 1;
+                       s.wds[0] = 0;
+               }
+               printf("%6.0f", s.numb[0]*60./etime);
+               zerof5 = f5*1000./f2;
+               return;
+       }
        printf("%6.0f", f2*60./etime);
        printf("%6.0f", f2*60./etime);
-       printf("%6.1f", f5*1000./f2);
+       if (dn == 1)    /* hack together seek time for rp */
+               printf("%6.1f", f5*1000./f2 + zerof5);
+       else
+               printf("%6.1f", f5*1000./f2);
        printf("%6.1f", f6*1000./f2);
 }
 
        printf("%6.1f", f6*1000./f2);
 }
 
@@ -238,24 +268,26 @@ double t;
        for (i=0; i<32; i++)
                if (i&01)
                        sum += s.etime[i];
        for (i=0; i<32; i++)
                if (i&01)
                        sum += s.etime[i];
-       printf("%6.2f RF active\n", sum/t);
+       printf("%6.2f RP seek\n", sum/t);
        sum = 0;
        for (i=0; i<32; i++)
                if (i&02)
                        sum += s.etime[i];
        sum = 0;
        for (i=0; i<32; i++)
                if (i&02)
                        sum += s.etime[i];
-       printf("%6.2f RK active\n", sum/t);
+       printf("%6.2f RP transfer\n", sum/t);
+/*
        sum = 0;
        for (i=0; i<32; i++)
                if (i&04)
                        sum += s.etime[i];
        printf("%6.2f RP active\n", sum/t);
        sum = 0;
        for (i=0; i<32; i++)
                if (i&04)
                        sum += s.etime[i];
        printf("%6.2f RP active\n", sum/t);
+*/
 }
 
 biostats()
 {
 register i;
 
 }
 
 biostats()
 {
 register i;
 
-       lseek(mf,(long)nl[1].value, 0);
+       lseek(mf,(long)nl[6].value, 0);
        read(mf, (char *)&io_info, sizeof(io_info));
        printf("%D\t%D\t%D\t%D\n",
         io_info.nread-io_delta.nread, io_info.nreada-io_delta.nreada,
        read(mf, (char *)&io_info, sizeof(io_info));
        printf("%D\t%D\t%D\t%D\n",
         io_info.nread-io_delta.nread, io_info.nreada-io_delta.nreada,