BSD 4_4_Lite1 release
[unix-history] / usr / src / usr.bin / systat / pigs.c
index ee882be..4c49494 100644 (file)
@@ -1,12 +1,38 @@
 /*-
 /*-
- * Copyright (c) 1980, 1992 The Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1980, 1992, 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  *
- * %sccs.include.proprietary.c%
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)pigs.c     5.11 (Berkeley) %G%";
+static char sccsid[] = "@(#)pigs.c     8.2 (Berkeley) 9/23/93";
 #endif /* not lint */
 
 /*
 #endif /* not lint */
 
 /*
@@ -18,15 +44,16 @@ static char sccsid[] = "@(#)pigs.c  5.11 (Berkeley) %G%";
 #include <sys/dir.h>
 #include <sys/time.h>
 #include <sys/proc.h>
 #include <sys/dir.h>
 #include <sys/time.h>
 #include <sys/proc.h>
-#include <sys/kinfo.h>
-#include <sys/kinfo_proc.h>
+#include <sys/sysctl.h>
 
 
-#include <pwd.h>
+#include <curses.h>
 #include <math.h>
 #include <math.h>
-#include <stdlib.h>
 #include <nlist.h>
 #include <nlist.h>
-#include "systat.h"
+#include <pwd.h>
+#include <stdlib.h>
+
 #include "extern.h"
 #include "extern.h"
+#include "systat.h"
 
 int compar __P((const void *, const void *));
 
 
 int compar __P((const void *, const void *));
 
@@ -83,8 +110,8 @@ showpigs()
         qsort(pt, nproc + 1, sizeof (struct p_times), compar);
        y = 1;
        i = nproc + 1;
         qsort(pt, nproc + 1, sizeof (struct p_times), compar);
        y = 1;
        i = nproc + 1;
-       if (i > wnd->_maxy-1)
-               i = wnd->_maxy-1;
+       if (i > wnd->maxy-1)
+               i = wnd->maxy-1;
        for (k = 0; i > 0 && pt[k].pt_pctcpu > 0.01; i--, y++, k++) {
                if (pt[k].pt_kp == NULL) {
                        uname = "";
        for (k = 0; i > 0 && pt[k].pt_pctcpu > 0.01; i--, y++, k++) {
                if (pt[k].pt_kp == NULL) {
                        uname = "";
@@ -107,7 +134,7 @@ showpigs()
        wmove(wnd, y, 0); wclrtobot(wnd);
 }
 
        wmove(wnd, y, 0); wclrtobot(wnd);
 }
 
-static struct nlist nl[] = {
+static struct nlist namelist[] = {
 #define X_FIRST                0
 #define X_CPTIME       0
        { "_cp_time" },
 #define X_FIRST                0
 #define X_CPTIME       0
        { "_cp_time" },
@@ -124,12 +151,12 @@ initpigs()
 {
        fixpt_t ccpu;
 
 {
        fixpt_t ccpu;
 
-       if (nl[X_FIRST].n_type == 0) {
-               if (kvm_nlist(kd, nl)) {
-                       nlisterr(nl);
+       if (namelist[X_FIRST].n_type == 0) {
+               if (kvm_nlist(kd, namelist)) {
+                       nlisterr(namelist);
                        return(0);
                }
                        return(0);
                }
-               if (nl[X_FIRST].n_type == 0) {
+               if (namelist[X_FIRST].n_type == 0) {
                        error("namelist failed");
                        return(0);
                }
                        error("namelist failed");
                        return(0);
                }
@@ -154,10 +181,9 @@ fetchpigs()
        double t;
        static int lastnproc = 0;
 
        double t;
        static int lastnproc = 0;
 
-       if (nl[X_FIRST].n_type == 0)
+       if (namelist[X_FIRST].n_type == 0)
                return;
                return;
-       if ((kpp = 
-           kvm_getprocs(kd, KINFO_PROC_ALL, 0, &nproc)) == NULL) {
+       if ((kpp = kvm_getprocs(kd, KERN_PROC_ALL, 0, &nproc)) == NULL) {
                error("%s", kvm_geterr(kd));
                if (pt)
                        free(pt);
                error("%s", kvm_geterr(kd));
                if (pt)
                        free(pt);
@@ -165,12 +191,11 @@ fetchpigs()
        }
        if (nproc > lastnproc) {
                free(pt);
        }
        if (nproc > lastnproc) {
                free(pt);
-               if ((pt = (struct p_times *) malloc 
-                   ((nproc + 1) * sizeof(struct p_times))) == NULL) {
-                   error("Out of memory");
-                   die(0);
-           }
-
+               if ((pt =
+                   malloc((nproc + 1) * sizeof(struct p_times))) == NULL) {
+                       error("Out of memory");
+                       die(0);
+               }
        }
        lastnproc = nproc;
        /*
        }
        lastnproc = nproc;
        /*
@@ -180,8 +205,8 @@ fetchpigs()
                pt[i].pt_kp = &kpp[i];
                pp = &kpp[i].kp_proc;
                pctp = &pt[i].pt_pctcpu;
                pt[i].pt_kp = &kpp[i];
                pp = &kpp[i].kp_proc;
                pctp = &pt[i].pt_pctcpu;
-               time = pp->p_time;
-               if (time == 0 || (pp->p_flag & SLOAD) == 0)
+               time = pp->p_swtime;
+               if (time == 0 || (pp->p_flag & P_INMEM) == 0)
                        *pctp = 0;
                else
                        *pctp = ((double) pp->p_pctcpu / 
                        *pctp = 0;
                else
                        *pctp = ((double) pp->p_pctcpu / 
@@ -205,7 +230,8 @@ fetchpigs()
 void
 labelpigs()
 {
 void
 labelpigs()
 {
-       wmove(wnd, 0, 0); wclrtoeol(wnd);
+       wmove(wnd, 0, 0);
+       wclrtoeol(wnd);
        mvwaddstr(wnd, 0, 20,
            "/0   /10  /20  /30  /40  /50  /60  /70  /80  /90  /100");
 }
        mvwaddstr(wnd, 0, 20,
            "/0   /10  /20  /30  /40  /50  /60  /70  /80  /90  /100");
 }