* examine and print certain things about processes
while (*ap
) switch (*ap
++) {
fprintf(stderr
, "Can't change to /dev\n");
nlist(argc
>2? argv
[2]:"/unix", nl
);
fprintf(stderr
, "No namelist\n");
nl
[0].n_value
= (char *)((int)nl
[0].n_value
& 0x7fffffff);
nl
[1].n_value
= (char *)((int)nl
[1].n_value
& 0x7fffffff);
nl
[2].n_value
= (char *)((int)nl
[2].n_value
& 0x7fffffff);
if ((mem
= open(coref
, 0)) < 0) {
fprintf(stderr
, "No kmem\n");
if((swmem
= open(memf
, 0)) < 0) {
fprintf(stderr
, "No mem\n");
* read mem to find swap dev.
lseek(mem
, (long)nl
[1].n_value
, 0);
read(mem
, &nl
[1].n_value
, sizeof(nl
[1].n_value
));
lseek(mem
, (long)nl
[2].n_value
, 0);
read(mem
, &swplo
, sizeof(swplo
));
lseek(mem
, (long)nl
[0].n_value
, 0);
printf(" F S UID PID PPID CPU PRI NICE ADDR SZ WCHAN TTY TIME COMMAND\n"); else
if (chkpid
==0) printf(" PID TTY TIME COMMAND\n");
for (i
=0; i
<NPROC
; i
++) {
read(mem
, &mproc
, sizeof mproc
);
if (mproc
.p_pgrp
==0 && xflg
==0 && mproc
.p_uid
==0)
if ((uid
!= puid
&& aflg
==0) ||
(chkpid
!=0 && chkpid
!=mproc
.p_pid
))
if ((df
= fopen("/dev", "r")) == NULL
) {
fprintf(stderr
, "Can't open /dev\n");
while (fread(&dbuf
, sizeof(dbuf
), 1, df
) == 1) {
if(stat(dbuf
.d_name
, &sbuf
) < 0)
if ((sbuf
.st_mode
&S_IFMT
) != S_IFCHR
)
strcpy(devl
[ndev
].dname
, dbuf
.d_name
);
devl
[ndev
].dev
= sbuf
.st_rdev
;
if ((swap
= open("/dev/swap", 0)) < 0) {
fprintf(stderr
, "Can't open /dev/swap\n");
if ((mproc
.p_flag
& (SLOAD
| SSPART
)) == 0) {
addr
= (mproc
.p_swaddr
+swplo
)<<9;
if (read(mf
, &u
, sizeof(u
)) != sizeof(u
))
for(c
=0; c
<UPAGES
; c
++) {
lseek(swmem
,mproc
.p_addr
[c
]<<9,0);
if (read(swmem
,((int *)&u
)+128*c
,512) != 512) /* get u page */
if (tptr
&& strcmpn(tptr
, tp
, 2))
printf("%3o %c%4d", 0377 & mproc
.p_flag
,
"0SWRIZT"[mproc
.p_stat
], puid
);
printf("%6u", mproc
.p_pid
);
printf("%6u%4d%4d%5d%8x%4d", mproc
.p_ppid
, mproc
.p_cpu
&0377,
mproc
.p_addr
[0], mproc
.p_size
);
printf("%9x", mproc
.p_wchan
); else
if (mproc
.p_stat
==SZOMB
) {
tm
= (u
.u_utime
+ u
.u_stime
+ 30)/60;
printf(tm
<10?"0%ld":"%ld", tm
);
if (0 && lflg
==0) { /* 0 == old tflg (print long times) */
tm
= (u
.u_cstime
+ 30)/60;
printf(tm
<10?"0%ld":"%ld", tm
);
tm
= (u
.u_cutime
+ 30)/60;
printf(tm
<10?"0%ld":"%ld", tm
);
c
= mproc
.p_size
- btoc(512);
if ((mproc
.p_flag
& SLOAD
) == 0) {
if (read(mf
, abuf
, sizeof(abuf
)) != sizeof(abuf
))
if (u
.u_pcb
.pcb_szpt
<1 || u
.u_pcb
.pcb_szpt
>20)
c
= ctob((u
.u_ptable
[u
.u_pcb
.pcb_szpt
-1] & 0x1fffff));
if (read(swmem
,pagetbl
,512) != 512) /* get last page table */
lseek(swmem
,ctob((pagetbl
[127] & 0x1fffff)),0);
if (read(swmem
,abuf
,sizeof(abuf
)) != sizeof(abuf
))
for (ip
= &abuf
[126]; ip
> abuf
;) {
if (*--ip
== -1 || *ip
== 0) {
for (cp1
= cp
; cp1
< (char *)&abuf
[128]; cp1
++) {
else if (c
< ' ' || c
> 0176) {
while (cp1
>cp
&& *--cp1
!=' ')
printf(lflg
?" %.30s":" %.60s", cp
);
if (devl
[i
].dev
== u
.u_ttyd
) {
if (p
[0]=='t' && p
[1]=='t' && p
[2]=='y')