Annotation of researchv10no/cmd/ps/printp.c, revision 1.1

1.1     ! root        1: #include "ps.h"
        !             2: 
        !             3: hprint()
        !             4: {
        !             5:        if (uflag) printf("User    %%cpu ");
        !             6:        if (lflag) printf("size  rss  ppid    wchan ");
        !             7:        printf("  pid tty    stat  time command\n");
        !             8: }
        !             9: 
        !            10: char *
        !            11: printp(cp, fd, pp, up)
        !            12: register char *cp; register struct proc *pp; register struct user *up;
        !            13: {
        !            14:        char sstr[64], *args; int nargs = 56;
        !            15:        char *ctime();
        !            16:        register time;
        !            17: 
        !            18:        if (fd < 0)
        !            19:                return cp;
        !            20: 
        !            21:        if (pp->p_flag & SPAGE)
        !            22:                sstr[0] = 'P';
        !            23:        else if (pp->p_stat == SSLEEP)
        !            24:                sstr[0] = "IS"[pp->p_clktim && pp->p_clktim < 20];
        !            25:        else
        !            26:                sstr[0] = "?swRLZT?"[minmax(pp->p_stat, 0, 7)];
        !            27:        sstr[1] = (pp->p_flag&SLOAD) ? ' ' : 'W';
        !            28:        sstr[2] = " N"[pp->p_nice > NZERO];
        !            29:        sstr[3] = 0;
        !            30:        if (Tflag) {
        !            31:                sstr[3] = ' ';
        !            32:                strcpy(sstr+4,ctime(&up->u_start)+4);
        !            33:                sstr[16] = 0;
        !            34:                sprintf(sstr+16, " %x,%x", up->u_ttydev, up->u_ttyino);
        !            35:        }
        !            36:        time = (up->u_vm.vm_utime+up->u_vm.vm_stime)/HZ;
        !            37: 
        !            38:        if (uflag) {
        !            39:                cp += sprintf(cp, "%-7.7s %4.1f ",
        !            40:                        getuname(pp->p_uid), 100.0*pp->p_pctcpu);
        !            41:                nargs -= 13;
        !            42:        }
        !            43: 
        !            44:        if (lflag) {
        !            45:                cp += sprintf(cp, "%4d %4d %5d %8x ",
        !            46:                        (pp->p_dsize+pp->p_ssize)*NBPG/1024,
        !            47:                        pp->p_rssize*NBPG/1024,
        !            48:                        pp->p_ppid, (int)pp->p_wchan);
        !            49:                nargs -= 25;
        !            50:        }
        !            51:        args = getargs(fd, pp, up);
        !            52:        cp += sprintf(cp, "%5d %-6.6s %s %3d:%02d %.*s\n",
        !            53:                pp->p_pid, gettty(up->u_ttydev, up->u_ttyino), sstr,
        !            54:                time/60, time%60, nargs, args);
        !            55: 
        !            56:        if (fflag)
        !            57:                cp = fdprint(cp, pp, up);
        !            58: 
        !            59:        close(fd);
        !            60:        return cp;
        !            61: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.