sigh, I give up making this fit on a line (need to squish flags)
[unix-history] / usr / src / bin / ps / ps.c
index f8477e4..5d1dcbc 100644 (file)
@@ -11,7 +11,7 @@ char copyright[] =
 #endif not lint
 
 #ifndef lint
 #endif not lint
 
 #ifndef lint
-static char sccsid[] = "@(#)ps.c       5.7 (Berkeley) %G%";
+static char sccsid[] = "@(#)ps.c       5.14 (Berkeley) %G%";
 #endif not lint
 
 #include <stdio.h>
 #endif not lint
 
 #include <stdio.h>
@@ -77,7 +77,7 @@ char *nl_names[] = {
 #define X_KERNELMAP    20
        "_mbmap",
 #define X_MBMAP                21
 #define X_KERNELMAP    20
        "_mbmap",
 #define X_MBMAP                21
-       "_nch",
+       "_namecache",
 #define X_NCH          22
        "_quota",
 #define X_QUOTA                23
 #define X_NCH          22
        "_quota",
 #define X_QUOTA                23
@@ -123,7 +123,7 @@ char        *lhdr;
 int    wcwidth;                /* width of the wchan field for sprintf*/
 struct lsav {
        short   l_ppid;
 int    wcwidth;                /* width of the wchan field for sprintf*/
 struct lsav {
        short   l_ppid;
-       char    l_cpu;
+       u_char  l_cpu;
        int     l_addr;
        caddr_t l_wchan;
 };
        int     l_addr;
        caddr_t l_wchan;
 };
@@ -392,13 +392,13 @@ main(argc, argv)
                else
                        spr(sp);
                if (sp->ap->a_stat == SZOMB)
                else
                        spr(sp);
                if (sp->ap->a_stat == SZOMB)
-                       printf(" <defunct>");
+                       printf(" %.*s", twidth - cmdstart - 2, "<defunct>");
                else if (sp->ap->a_flag & SWEXIT)
                else if (sp->ap->a_flag & SWEXIT)
-                       printf(" <exiting>");
+                       printf(" %.*s", twidth - cmdstart - 2, "<exiting>");
                else if (sp->ap->a_pid == 0)
                else if (sp->ap->a_pid == 0)
-                       printf(" swapper");
+                       printf(" %.*s", twidth - cmdstart - 2, "swapper");
                else if (sp->ap->a_pid == 2)
                else if (sp->ap->a_pid == 2)
-                       printf(" pagedaemon");
+                       printf(" %.*s", twidth - cmdstart - 2, "pagedaemon");
                else
                        printf(" %.*s", twidth - cmdstart - 2, sp->ap->a_cmdp);
                printf("\n");
                else
                        printf(" %.*s", twidth - cmdstart - 2, sp->ap->a_cmdp);
                printf("\n");
@@ -449,11 +449,11 @@ writepsdb(unixname)
        } else
                fchmod(fileno(fp), 0644);
 
        } else
                fchmod(fileno(fp), 0644);
 
-       fwrite(thisversion, sizeof (thisversion), 1, fp);
+       fwrite(thisversion, sizeof thisversion, 1, fp);
        fwrite(unixname, strlen(unixname) + 1, 1, fp);
        if (stat(unixname, &stb) < 0)
                stb.st_mtime = 0;
        fwrite(unixname, strlen(unixname) + 1, 1, fp);
        if (stat(unixname, &stb) < 0)
                stb.st_mtime = 0;
-       fwrite((char *) &stb.st_mtime, sizeof (stb.st_mtime), 1, fp);
+       fwrite((char *) &stb.st_mtime, sizeof stb.st_mtime, 1, fp);
 
        fwrite((char *) &nllen, sizeof nllen, 1, fp);
        fwrite((char *) nl, sizeof (struct nlist), nllen, fp);
 
        fwrite((char *) &nllen, sizeof nllen, 1, fp);
        fwrite((char *) nl, sizeof (struct nlist), nllen, fp);
@@ -603,7 +603,7 @@ getkvars(argc, argv)
                        exit(1);
                }
                addr = (long) nl[X_SYSMAP].n_value;
                        exit(1);
                }
                addr = (long) nl[X_SYSMAP].n_value;
-               addr &= ~0x80000000;
+               addr &= ~KERNBASE;
                (void) lseek(kmem, addr, 0);
                read(kmem, (char *) Sysmap, Syssize * sizeof (struct pte));
        }
                (void) lseek(kmem, addr, 0);
                read(kmem, (char *) Sysmap, Syssize * sizeof (struct pte));
        }
@@ -707,7 +707,7 @@ printhdr()
                        fprintf(stderr, "ps: out of memory\n");
                        exit(1);
                }
                        fprintf(stderr, "ps: out of memory\n");
                        exit(1);
                }
-               sprintf(hdr, lhdr, wcwidth, "WCHAN");
+               (void)sprintf(hdr, lhdr, wcwidth, "WCHAN");
        } else if (vflg)
                hdr = vhdr;
        else if (uflg) {
        } else if (vflg)
                hdr = vhdr;
        else if (uflg) {
@@ -716,7 +716,7 @@ printhdr()
                        fprintf(stderr, "ps: out of memory\n");
                        exit(1);
                }
                        fprintf(stderr, "ps: out of memory\n");
                        exit(1);
                }
-               sprintf(hdr, uhdr, nflg ? " UID" : "USER    ");
+               (void)sprintf(hdr, uhdr, nflg ? " UID" : "USER    ");
        } else
                hdr = shdr;
        if (lflg+vflg+uflg+sflg == 0)
        } else
                hdr = shdr;
        if (lflg+vflg+uflg+sflg == 0)
@@ -1196,24 +1196,25 @@ retucomm:
 }
 
 char   *lhdr =
 }
 
 char   *lhdr =
-"      F UID   PID  PPID CP PRI NI ADDR  SZ  RSS %*s STAT TT  TIME";
+"     F  UID   PID  PPID CP PRI NI ADDR    SZ  RSS %*sSTAT TT  TIME";
 lpr(sp)
        struct savcom *sp;
 {
        register struct asav *ap = sp->ap;
        register struct lsav *lp = sp->s_un.lp;
 
 lpr(sp)
        struct savcom *sp;
 {
        register struct asav *ap = sp->ap;
        register struct lsav *lp = sp->s_un.lp;
 
-       printf("%7x%4d%6u%6u%3d%4d%3d%5x%4d%5d",
-           ap->a_flag, ap->a_uid,
-           ap->a_pid, lp->l_ppid, lp->l_cpu&0377, ap->a_pri-PZERO,
-           ap->a_nice-NZERO, lp->l_addr, pgtok(ap->a_size), pgtok(ap->a_rss));
+       printf("%6x %4d %5u %5u %2d %3d %2d %4x %5d %4d",
+           (ap->a_flag &~ SPTECHG),                            /* XXX */
+           ap->a_uid, ap->a_pid, lp->l_ppid,
+           lp->l_cpu > 99 ? 99 : lp->l_cpu, ap->a_pri-PZERO,
+           ap->a_nice, lp->l_addr, pgtok(ap->a_size), pgtok(ap->a_rss));
        if (lp->l_wchan == 0)
                printf(" %*s", wcwidth, "");
        else if (nflg)
        if (lp->l_wchan == 0)
                printf(" %*s", wcwidth, "");
        else if (nflg)
-               printf(" %*x", wcwidth, (int)lp->l_wchan&0xffffff);
+               printf(" %*x", wcwidth, (int)lp->l_wchan&~KERNBASE);
        else
                printf(" %*.*s", wcwidth, abs(wcwidth), getchan(lp->l_wchan));
        else
                printf(" %*.*s", wcwidth, abs(wcwidth), getchan(lp->l_wchan));
-       printf(" %4.4s ", state(ap));
+       printf(" %-3.3s ", state(ap));
        ptty(ap->a_tty);
        ptime(ap);
 }
        ptty(ap->a_tty);
        ptime(ap);
 }
@@ -1229,11 +1230,11 @@ ptime(ap)
        struct asav *ap;
 {
 
        struct asav *ap;
 {
 
-       printf("%3ld:%02ld", ap->a_cpu / 60, ap->a_cpu % 60);
+       printf(" %2ld:%02ld", ap->a_cpu / 60, ap->a_cpu % 60);
 }
 
 char   *uhdr =
 }
 
 char   *uhdr =
-"%s   PID %%CPU %%MEM   SZ  RSS TT STAT  TIME";
+"%s   PID %%CPU %%MEM    SZ   RSS TT STAT TIME";
 upr(sp)
        struct savcom *sp;
 {
 upr(sp)
        struct savcom *sp;
 {
@@ -1248,16 +1249,16 @@ upr(sp)
                printf("%4d ", ap->a_uid);
        else
                printf("%-8.8s ", getname(ap->a_uid));
                printf("%4d ", ap->a_uid);
        else
                printf("%-8.8s ", getname(ap->a_uid));
-       printf("%5d%5.1f%5.1f%5d%5d",
+       printf("%5d %4.1f %4.1f %5d %5d",
            ap->a_pid, sp->s_un.u_pctcpu, pmem(ap), vmsize, rmsize);
        putchar(' ');
        ptty(ap->a_tty);
            ap->a_pid, sp->s_un.u_pctcpu, pmem(ap), vmsize, rmsize);
        putchar(' ');
        ptty(ap->a_tty);
-       printf(" %4.4s", state(ap));
+       printf(" %-3.3s", state(ap));
        ptime(ap);
 }
 
 char *vhdr =
        ptime(ap);
 }
 
 char *vhdr =
-" SIZE  PID TT STAT  TIME SL RE PAGEIN SIZE  RSS  LIM TSIZ TRS %CPU %MEM"+5;
+" SIZE  PID TT STAT TIME SL RE PAGEIN  SIZE   RSS   LIM TSIZ TRS %CPU %MEM"+5;
 vpr(sp)
        struct savcom *sp;
 {
 vpr(sp)
        struct savcom *sp;
 {
@@ -1266,17 +1267,17 @@ vpr(sp)
 
        printf("%5u ", ap->a_pid);
        ptty(ap->a_tty);
 
        printf("%5u ", ap->a_pid);
        ptty(ap->a_tty);
-       printf(" %4.4s", state(ap));
+       printf(" %-3.3s", state(ap));
        ptime(ap);
        ptime(ap);
-       printf("%3d%3d%7d%5d%5d",
+       printf(" %2d %2d %6d %5d %5d",
           ap->a_slptime > 99 ? 99 : ap-> a_slptime,
           ap->a_time > 99 ? 99 : ap->a_time, vp->v_majflt,
           pgtok(ap->a_size), pgtok(ap->a_rss));
        if (ap->a_maxrss == (RLIM_INFINITY/NBPG))
           ap->a_slptime > 99 ? 99 : ap-> a_slptime,
           ap->a_time > 99 ? 99 : ap->a_time, vp->v_majflt,
           pgtok(ap->a_size), pgtok(ap->a_rss));
        if (ap->a_maxrss == (RLIM_INFINITY/NBPG))
-               printf("   xx");
+               printf("    xx");
        else
        else
-               printf("%5d", pgtok(ap->a_maxrss));
-       printf("%5d%4d%5.1f%5.1f",
+               printf(" %5d", pgtok(ap->a_maxrss));
+       printf(" %4d %3d %4.1f %4.1f",
           pgtok(ap->a_tsiz), pgtok(ap->a_txtrss), vp->v_pctcpu, pmem(ap));
 }
 
           pgtok(ap->a_tsiz), pgtok(ap->a_txtrss), vp->v_pctcpu, pmem(ap));
 }
 
@@ -1292,7 +1293,7 @@ spr(sp)
        printf("%5u", ap->a_pid);
        putchar(' ');
        ptty(ap->a_tty);
        printf("%5u", ap->a_pid);
        putchar(' ');
        ptty(ap->a_tty);
-       printf(" %4.4s", state(ap));
+       printf(" %-3.3s", state(ap));
        ptime(ap);
 }
 
        ptime(ap);
 }
 
@@ -1300,49 +1301,55 @@ char *
 state(ap)
        register struct asav *ap;
 {
 state(ap)
        register struct asav *ap;
 {
-       char stat, load, nice, anom;
        static char res[5];
        static char res[5];
+       char *cp = res;
 
        switch (ap->a_stat) {
 
        case SSTOP:
 
        switch (ap->a_stat) {
 
        case SSTOP:
-               stat = 'T';
+               *cp = 'T';
                break;
 
        case SSLEEP:
                if (ap->a_pri >= PZERO)
                        if (ap->a_slptime >= MAXSLP)
                break;
 
        case SSLEEP:
                if (ap->a_pri >= PZERO)
                        if (ap->a_slptime >= MAXSLP)
-                               stat = 'I';
+                               *cp = 'I';
                        else
                        else
-                               stat = 'S';
+                               *cp = 'S';
                else if (ap->a_flag & SPAGE)
                else if (ap->a_flag & SPAGE)
-                       stat = 'P';
+                       *cp = 'P';
                else
                else
-                       stat = 'D';
+                       *cp = 'D';
                break;
 
        case SWAIT:
        case SRUN:
        case SIDL:
                break;
 
        case SWAIT:
        case SRUN:
        case SIDL:
-               stat = 'R';
+               *cp = 'R';
                break;
 
        case SZOMB:
                break;
 
        case SZOMB:
-               stat = 'Z';
+               *cp = 'Z';
                break;
 
        default:
                break;
 
        default:
-               stat = '?';
+               *cp = '?';
        }
        }
-       load = ap->a_flag & SLOAD ? (ap->a_rss>ap->a_maxrss ? '>' : ' ') : 'W';
+       cp++;
+       if (ap->a_flag & SLOAD) {
+               if (ap->a_rss > ap->a_maxrss)
+                       *cp++ = '>';
+       } else
+               *cp++ = 'W';
        if (ap->a_nice < NZERO)
        if (ap->a_nice < NZERO)
-               nice = '<';
+               *cp++ = '<';
        else if (ap->a_nice > NZERO)
        else if (ap->a_nice > NZERO)
-               nice = 'N';
-       else
-               nice = ' ';
-       anom = (ap->a_flag&SUANOM) ? 'A' : ((ap->a_flag&SSEQL) ? 'S' : ' ');
-       res[0] = stat; res[1] = load; res[2] = nice; res[3] = anom;
+               *cp++ = 'N';
+       if (ap->a_flag & SUANOM)
+               *cp++ = 'A';
+       else if (ap->a_flag & SSEQL)
+               *cp++ = 'S';
+       *cp = '\0';
        return (res);
 }
 
        return (res);
 }
 
@@ -1485,9 +1492,9 @@ long      loc;
        register        p;
        off_t   newloc;
 
        register        p;
        off_t   newloc;
 
-       newloc = loc & ~0xc0000000;
+       newloc = loc & ~KERNBASE;
        p = btop(newloc);
        p = btop(newloc);
-       if ((loc & 0xc0000000) == 0) {
+       if ((loc & KERNBASE) == 0) {
                fprintf(stderr, "Vtophys: translating non-kernel address\n");
                return((off_t) -1);
        }
                fprintf(stderr, "Vtophys: translating non-kernel address\n");
                return((off_t) -1);
        }