[BACK]Return to vmstat.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / systat

Diff for /src/usr.bin/systat/vmstat.c between version 1.1 and 1.2

version 1.1, 1995/10/18 08:46:10 version 1.2, 1996/05/22 11:35:39
Line 1 
Line 1 
 /*      $NetBSD: vmstat.c,v 1.4 1995/04/29 05:54:55 cgd Exp $   */  /*      $NetBSD: vmstat.c,v 1.5 1996/05/10 23:16:40 thorpej Exp $       */
   
 /*-  /*-
  * Copyright (c) 1983, 1989, 1992, 1993   * Copyright (c) 1983, 1989, 1992, 1993
Line 37 
Line 37 
 #if 0  #if 0
 static char sccsid[] = "@(#)vmstat.c    8.2 (Berkeley) 1/12/94";  static char sccsid[] = "@(#)vmstat.c    8.2 (Berkeley) 1/12/94";
 #endif  #endif
 static char rcsid[] = "$NetBSD: vmstat.c,v 1.4 1995/04/29 05:54:55 cgd Exp $";  static char rcsid[] = "$NetBSD: vmstat.c,v 1.5 1996/05/10 23:16:40 thorpej Exp $";
 #endif /* not lint */  #endif /* not lint */
   
 /*  /*
Line 72 
Line 72 
         long    time[CPUSTATES];          long    time[CPUSTATES];
         struct  vmmeter Cnt;          struct  vmmeter Cnt;
         struct  vmtotal Total;          struct  vmtotal Total;
         long    *dk_time;  
         long    *dk_wds;  
         long    *dk_seek;  
         long    *dk_xfer;  
         int     dk_busy;  
         struct  nchstats nchstats;          struct  nchstats nchstats;
         long    nchcount;          long    nchcount;
         long    *intrcnt;          long    *intrcnt;
 } s, s1, s2, z;  } s, s1, s2, z;
   
   #include "dkstats.h"
   extern struct _disk     cur;
   
   
 #define cnt s.Cnt  #define cnt s.Cnt
 #define oldcnt s1.Cnt  #define oldcnt s1.Cnt
 #define total s.Total  #define total s.Total
Line 215 
Line 214 
                 }                  }
         }          }
         hertz = stathz ? stathz : hz;          hertz = stathz ? stathz : hz;
         if (! dkinit())          if (! dkinit(1))
                 return(0);                  return(0);
         if (dk_ndrive && !once) {          if (dk_ndrive && !once) {
 #define allocate(e, t) \  #define allocate(e, t) \
Line 223 
Line 222 
     s1./**/e = (t *)calloc(dk_ndrive, sizeof (t)); \      s1./**/e = (t *)calloc(dk_ndrive, sizeof (t)); \
     s2./**/e = (t *)calloc(dk_ndrive, sizeof (t)); \      s2./**/e = (t *)calloc(dk_ndrive, sizeof (t)); \
     z./**/e = (t *)calloc(dk_ndrive, sizeof (t));      z./**/e = (t *)calloc(dk_ndrive, sizeof (t));
                 allocate(dk_time, long);  
                 allocate(dk_wds, long);  
                 allocate(dk_seek, long);  
                 allocate(dk_xfer, long);  
                 once = 1;                  once = 1;
 #undef allocate  #undef allocate
         }          }
Line 331 
Line 326 
         mvprintw(DISKROW, DISKCOL, "Discs");          mvprintw(DISKROW, DISKCOL, "Discs");
         mvprintw(DISKROW + 1, DISKCOL, "seeks");          mvprintw(DISKROW + 1, DISKCOL, "seeks");
         mvprintw(DISKROW + 2, DISKCOL, "xfers");          mvprintw(DISKROW + 2, DISKCOL, "xfers");
         mvprintw(DISKROW + 3, DISKCOL, " blks");          mvprintw(DISKROW + 3, DISKCOL, "Kbyte");
         mvprintw(DISKROW + 4, DISKCOL, " msps");          mvprintw(DISKROW + 4, DISKCOL, "  sec");
         j = 0;          j = 0;
         for (i = 0; i < dk_ndrive && j < MAXDRIVES; i++)          for (i = 0; i < dk_ndrive && j < MAXDRIVES; i++)
                 if (dk_select[i]) {                  if (dk_select[i]) {
Line 367 
Line 362 
         int i, l, c;          int i, l, c;
         static int failcnt = 0;          static int failcnt = 0;
   
         for (i = 0; i < dk_ndrive; i++) {  
                 X(dk_xfer); X(dk_seek); X(dk_wds); X(dk_time);          if (state == TIME)
         }                  dkswap();
         etime = 0;          etime = 0;
         for(i = 0; i < CPUSTATES; i++) {          for(i = 0; i < CPUSTATES; i++) {
                 X(time);                  X(time);
Line 617 
Line 612 
         size_t size;          size_t size;
         extern int errno;          extern int errno;
   
           dkreadstats();
         NREAD(X_CPTIME, s->time, sizeof s->time);          NREAD(X_CPTIME, s->time, sizeof s->time);
         NREAD(X_CNT, &s->Cnt, sizeof s->Cnt);          NREAD(X_CNT, &s->Cnt, sizeof s->Cnt);
         NREAD(X_DK_BUSY, &s->dk_busy, LONG);  
         NREAD(X_DK_TIME, s->dk_time, dk_ndrive * LONG);  
         NREAD(X_DK_XFER, s->dk_xfer, dk_ndrive * LONG);  
         NREAD(X_DK_WDS, s->dk_wds, dk_ndrive * LONG);  
         NREAD(X_DK_SEEK, s->dk_seek, dk_ndrive * LONG);  
         NREAD(X_NCHSTATS, &s->nchstats, sizeof s->nchstats);          NREAD(X_NCHSTATS, &s->nchstats, sizeof s->nchstats);
         NREAD(X_INTRCNT, s->intrcnt, nintr * LONG);          NREAD(X_INTRCNT, s->intrcnt, nintr * LONG);
         size = sizeof(s->Total);          size = sizeof(s->Total);
Line 649 
Line 640 
 copyinfo(from, to)  copyinfo(from, to)
         register struct Info *from, *to;          register struct Info *from, *to;
 {  {
         long *time, *wds, *seek, *xfer;  
         long *intrcnt;          long *intrcnt;
   
         /*          intrcnt = to->intrcnt;
          * time, wds, seek, and xfer are malloc'd so we have to  
          * save the pointers before the structure copy and then  
          * copy by hand.  
          */  
         time = to->dk_time; wds = to->dk_wds; seek = to->dk_seek;  
         xfer = to->dk_xfer; intrcnt = to->intrcnt;  
         *to = *from;          *to = *from;
         bcopy(from->dk_time, to->dk_time = time, dk_ndrive * sizeof (long));  
         bcopy(from->dk_wds, to->dk_wds = wds, dk_ndrive * sizeof (long));  
         bcopy(from->dk_seek, to->dk_seek = seek, dk_ndrive * sizeof (long));  
         bcopy(from->dk_xfer, to->dk_xfer = xfer, dk_ndrive * sizeof (long));  
         bcopy(from->intrcnt, to->intrcnt = intrcnt, nintr * sizeof (int));          bcopy(from->intrcnt, to->intrcnt = intrcnt, nintr * sizeof (int));
 }  }
   
Line 671 
Line 651 
 dinfo(dn, c)  dinfo(dn, c)
         int dn, c;          int dn, c;
 {  {
         double words, atime, itime, xtime;          double words, atime;
   
         c = DISKCOL + c * 5;          c = DISKCOL + c * 5;
         atime = s.dk_time[dn];  
         atime /= hertz;          /* time busy in disk activity */
         words = s.dk_wds[dn]*32.0;      /* number of words transferred */          atime = (double)cur.dk_time[dn].tv_sec +
         xtime = dk_mspw[dn]*words;      /* transfer time */                  ((double)cur.dk_time[dn].tv_usec / (double)1000000);
         itime = atime - xtime;          /* time not transferring */  
         if (xtime < 0)          words = cur.dk_bytes[dn] / 1024.0;      /* # of K transferred */
                 itime += xtime, xtime = 0;  
         if (itime < 0)          putint((int)((float)cur.dk_seek[dn]/etime+0.5), DISKROW + 1, c, 5);
                 xtime += itime, itime = 0;          putint((int)((float)cur.dk_xfer[dn]/etime+0.5), DISKROW + 2, c, 5);
         putint((int)((float)s.dk_seek[dn]/etime+0.5), DISKROW + 1, c, 5);          putint((int)(words/etime + 0.5), DISKROW + 3, c, 5);
         putint((int)((float)s.dk_xfer[dn]/etime+0.5), DISKROW + 2, c, 5);          putfloat(atime/etime, DISKROW + 4, c, 5, 1, 1);
         putint((int)(words/etime/512.0 + 0.5), DISKROW + 3, c, 5);  
         if (s.dk_seek[dn])  
                 putfloat(itime*1000.0/s.dk_seek[dn], DISKROW + 4, c, 5, 1, 1);  
         else  
                 putint(0, DISKROW + 4, c, 5);  
 }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2