changes designed so that ESIS and ARP may use routing table
[unix-history] / usr / src / usr.bin / systat / swap.c
index 3845579..91ff969 100644 (file)
@@ -1,30 +1,31 @@
+/*
+ * Copyright (c) 1980 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ */
+
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)swap.c      1.7 (Berkeley) %G%";
-#endif
+static char sccsid[] = "@(#)swap.c     5.7 (Berkeley) %G%";
+#endif not lint
 
 #include "systat.h"
 
 #include "systat.h"
-#include <sys/param.h>
-#include <sys/dir.h>
 #include <sys/user.h>
 #include <sys/proc.h>
 #include <sys/text.h>
 #include <sys/conf.h>
 #include <sys/user.h>
 #include <sys/proc.h>
 #include <sys/text.h>
 #include <sys/conf.h>
-#include <sys/file.h>
 #include <sys/vmmac.h>
 #include <machine/pte.h>
 #include <sys/vmmac.h>
 #include <machine/pte.h>
-#include <nlist.h>
+#include <paths.h>
 
 WINDOW *
 openswap()
 {
 
 WINDOW *
 openswap()
 {
-
        return (subwin(stdscr, LINES-5-1, 0, 5, 0));
 }
 
 closeswap(w)
        WINDOW *w;
 {
        return (subwin(stdscr, LINES-5-1, 0, 5, 0));
 }
 
 closeswap(w)
        WINDOW *w;
 {
-
        if (w == NULL)
                return;
        wclear(w);
        if (w == NULL)
                return;
        wclear(w);
@@ -42,14 +43,14 @@ struct      swdevt *swdevt;
 int    colwidth;
 
 extern union {
 int    colwidth;
 
 extern union {
-        struct  user user;
-        char    upages[UPAGES][NBPG];
+       struct  user user;
+       char    upages[UPAGES][NBPG];
 } user;
 #define u       user.user
 
 showswap()
 {
 } user;
 #define u       user.user
 
 showswap()
 {
-        register int i, j;
+       register int i, j;
        register struct proc *pp;
        register struct text *xp;
        register int row;
        register struct proc *pp;
        register struct text *xp;
        register int row;
@@ -59,7 +60,7 @@ showswap()
        if (xtext == 0)
                return;
        for (xp = xtext; xp < &xtext[ntext]; xp++) {
        if (xtext == 0)
                return;
        for (xp = xtext; xp < &xtext[ntext]; xp++) {
-               if (xp->x_iptr == NULL)
+               if (xp->x_vptr == NULL)
                        continue;
                ts = ctod(xp->x_size);
                dp = xp->x_daddr;
                        continue;
                ts = ctod(xp->x_size);
                dp = xp->x_daddr;
@@ -71,14 +72,14 @@ showswap()
                        buckets[swatodev(*dp)][dmtoindex(j)]++;
                        dp++;
                }
                        buckets[swatodev(*dp)][dmtoindex(j)]++;
                        dp++;
                }
-               if ((xp->x_flag & XPAGI) && xp->x_ptdaddr)
+               if ((xp->x_flag & XPAGV) && xp->x_ptdaddr)
                        buckets[swatodev(xp->x_ptdaddr)]
                            [dmtoindex(ctod(ctopt(xp->x_size)))]++;
        }
        row = swapdisplay(2, dmtext, 'X');
        if (kprocp == NULL)
                return;
                        buckets[swatodev(xp->x_ptdaddr)]
                            [dmtoindex(ctod(ctopt(xp->x_size)))]++;
        }
        row = swapdisplay(2, dmtext, 'X');
        if (kprocp == NULL)
                return;
-        for (i = 0, pp = kprocp; i < nproc; i++, pp++) {
+       for (i = 0, pp = kprocp; i < nproc; i++, pp++) {
                if (pp->p_stat == 0 || pp->p_stat == SZOMB)
                        continue;
                if (pp->p_flag & SSYS)
                if (pp->p_stat == 0 || pp->p_stat == SZOMB)
                        continue;
                if (pp->p_flag & SSYS)
@@ -91,7 +92,7 @@ showswap()
                if ((pp->p_flag & SLOAD) == 0)
                        vusize(pp);
 #endif
                if ((pp->p_flag & SLOAD) == 0)
                        vusize(pp);
 #endif
-        }
+       }
        (void) swapdisplay(1+row, dmmax, 'X');
 }
 
        (void) swapdisplay(1+row, dmmax, 'X');
 }
 
@@ -165,81 +166,82 @@ dmtoindex(dm)
 
 static struct nlist nlst[] = {
 #define X_PROC          0
 
 static struct nlist nlst[] = {
 #define X_PROC          0
-        { "_proc" },
+       { "_proc" },
 #define X_NPROC         1
 #define X_NPROC         1
-        { "_nproc" },
+       { "_nproc" },
 #define X_USRPTMAP      2
 #define X_USRPTMAP      2
-        { "_Usrptmap" },
+       { "_Usrptmap" },
 #define X_USRPT         3
 #define X_USRPT         3
-        { "_usrpt" },
+       { "_usrpt" },
 #define X_NSWAP         4
 #define X_NSWAP         4
-        { "_nswap" },
+       { "_nswap" },
 #define X_DMMIN         5
 #define X_DMMIN         5
-        { "_dmmin" },
+       { "_dmmin" },
 #define X_DMMAX         6
 #define X_DMMAX         6
-        { "_dmmax" },
+       { "_dmmax" },
 #define        X_DMTEXT        7
        { "_dmtext" },
 #define X_NSWDEV        8
 #define        X_DMTEXT        7
        { "_dmtext" },
 #define X_NSWDEV        8
-        { "_nswdev" },
+       { "_nswdev" },
 #define        X_SWDEVT        9
        { "_swdevt" },
 #define        X_NTEXT         10
        { "_ntext" },
 #define        X_TEXT          11
        { "_text" },
 #define        X_SWDEVT        9
        { "_swdevt" },
 #define        X_NTEXT         10
        { "_ntext" },
 #define        X_TEXT          11
        { "_text" },
-        { "" }
+       { "" }
 };
 
 initswap()
 {
 };
 
 initswap()
 {
-
        if (nlst[X_PROC].n_type == 0) {
        if (nlst[X_PROC].n_type == 0) {
-               nlist("/vmunix", nlst);
+               nlist(_PATH_UNIX, nlst);
                if (nlst[X_PROC].n_type == 0) {
                if (nlst[X_PROC].n_type == 0) {
-                       error("namelist on /vmunix failed");
-                       return;
+                       error("namelist on %s failed", _PATH_UNIX);
+                       return(0);
                }
        }
                }
        }
-        if (nswdev == 0) {
-                dmmin = getw(nlst[X_DMMIN].n_value);
-                dmmax = getw(nlst[X_DMMAX].n_value);
-                dmtext = getw(nlst[X_DMTEXT].n_value);
-                nswdev = getw(nlst[X_NSWDEV].n_value);
+       if (nswdev == 0) {
+               dmmin = getw(nlst[X_DMMIN].n_value);
+               dmmax = getw(nlst[X_DMMAX].n_value);
+               dmtext = getw(nlst[X_DMTEXT].n_value);
+               nswdev = getw(nlst[X_NSWDEV].n_value);
+               if (nswdev > MAXSWAPDEV)
+                       nswdev = MAXSWAPDEV;
                swdevt = (struct swdevt *)calloc(nswdev, sizeof (*swdevt));
                klseek(kmem, nlst[X_SWDEVT].n_value, L_SET);
                read(kmem, swdevt, nswdev * sizeof (struct swdevt));
                ntext = getw(nlst[X_NTEXT].n_value);
                textp = getw(nlst[X_TEXT].n_value);
                swdevt = (struct swdevt *)calloc(nswdev, sizeof (*swdevt));
                klseek(kmem, nlst[X_SWDEVT].n_value, L_SET);
                read(kmem, swdevt, nswdev * sizeof (struct swdevt));
                ntext = getw(nlst[X_NTEXT].n_value);
                textp = getw(nlst[X_TEXT].n_value);
-        }
-        if (procp == NULL) {
-                procp = getw(nlst[X_PROC].n_value);
-                nproc = getw(nlst[X_NPROC].n_value);
-        }
+       }
+       if (procp == NULL) {
+               procp = getw(nlst[X_PROC].n_value);
+               nproc = getw(nlst[X_NPROC].n_value);
+       }
        if (xtext == NULL)
                xtext = (struct text *)calloc(ntext, sizeof (struct text));
        if (kprocp == NULL)
        if (xtext == NULL)
                xtext = (struct text *)calloc(ntext, sizeof (struct text));
        if (kprocp == NULL)
-                kprocp = (struct proc *)calloc(nproc, sizeof (struct proc));
-        if (usrpt != NULL)
-                return;
+               kprocp = (struct proc *)calloc(nproc, sizeof (struct proc));
+       if (usrpt != NULL)
+               return(1);
        usrpt = (struct pte *)nlst[X_USRPT].n_value;
        Usrptma = (struct pte *)nlst[X_USRPTMAP].n_value;
        if (pt == NULL)
                pt = (struct p_times *)malloc(nproc * sizeof (struct p_times));
        usrpt = (struct pte *)nlst[X_USRPT].n_value;
        Usrptma = (struct pte *)nlst[X_USRPTMAP].n_value;
        if (pt == NULL)
                pt = (struct p_times *)malloc(nproc * sizeof (struct p_times));
+       return(1);
 }
 
 fetchswap()
 {
 }
 
 fetchswap()
 {
-
        if (nlst[X_PROC].n_type == 0)
                return;
        if (kprocp == NULL) {
        if (nlst[X_PROC].n_type == 0)
                return;
        if (kprocp == NULL) {
-                kprocp = (struct proc *)malloc(sizeof (*kprocp) * nproc);
+               kprocp = (struct proc *)malloc(sizeof (*kprocp) * nproc);
                if (kprocp == NULL)
                        return;
        }
                if (kprocp == NULL)
                        return;
        }
-        lseek(kmem, procp, L_SET);
-        if (read(kmem, kprocp, sizeof (struct proc) * nproc) !=
+       lseek(kmem, procp, L_SET);
+       if (read(kmem, kprocp, sizeof (struct proc) * nproc) !=
            sizeof (struct proc) * nproc) {
                error("couldn't read proc table");
                return;
            sizeof (struct proc) * nproc) {
                error("couldn't read proc table");
                return;
@@ -260,10 +262,12 @@ char      *devnames[] =
      { "hp", "ht", "up", "rk", "sw", "tm", "ts", "mt", "tu", "ra", "ut",
        "rb", "rx", "rl" };
 #endif
      { "hp", "ht", "up", "rk", "sw", "tm", "ts", "mt", "tu", "ra", "ut",
        "rb", "rx", "rl" };
 #endif
+#ifdef tahoe
+char   *devnames[] = { "ud", "vd", "xp", "cy", "sw" };
+#endif
 
 labelswap()
 {
 
 labelswap()
 {
-       register int i, j;
        register int row;
 
        if (nswdev == 0) {
        register int row;
 
        if (nswdev == 0) {