|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.