static char sccsid
[] = "@(#)fetch.c 1.4 (Lucasfilm) %G%";
if (read(kmem
, &word
, sizeof (word
)) != sizeof (word
))
printf("Error reading kmem at %x\n", loc
);
register struct proc
*mproc
;
register struct procs
*pp
;
for (j
= numprocs
- 1; j
>= 0; j
--) {
namp
= strncpy(pp
->cmd
, getcmd(pid
, mproc
), 15);
namp
= getcmd(pid
, mproc
);
char upages
[UPAGES
][NBPG
];
register struct proc
*mproc
;
if (mproc
== NULL
|| mproc
->p_stat
== SZOMB
)
if (mproc
->p_flag
&(SSYS
|SWEXIT
))
(void) strncpy(cmd
, u
.u_comm
, sizeof (cmd
));
register struct proc
*mproc
;
struct pte
*pteaddr
, apte
;
struct pte arguutl
[UPAGES
+CLSIZE
];
size
= sizeof (struct user
);
if ((mproc
->p_flag
& SLOAD
) == 0) {
(void) lseek(swap
, (long)dtob(mproc
->p_swaddr
), L_SET
);
if (read(swap
, (char *)&user
.user
, size
) != size
) {
error("cant read u for pid %d", mproc
->p_pid
);
pteaddr
= &Usrptma
[btokmx(mproc
->p_p0br
) + mproc
->p_szpt
- 1];
klseek(kmem
, (long)pteaddr
, L_SET
);
if (read(kmem
, (char *)&apte
, sizeof (apte
)) != sizeof (apte
)) {
error("cant read indir pte to get u for pid %d", mproc
->p_pid
);
(long)ctob(apte
.pg_pfnum
+1) - (UPAGES
+CLSIZE
) * sizeof (struct pte
),
if (read(mem
, (char *)arguutl
, sizeof (arguutl
)) != sizeof (arguutl
)) {
error("cant read page table for u of pid %d", mproc
->p_pid
);
if (arguutl
[0].pg_fod
== 0 && arguutl
[0].pg_pfnum
)
argaddr
= ctob(arguutl
[0].pg_pfnum
);
pcbpf
= arguutl
[CLSIZE
].pg_pfnum
;
ncl
= (size
+ NBPG
*CLSIZE
- 1) / (NBPG
*CLSIZE
);
klseek(mem
, (long)ctob(arguutl
[CLSIZE
+i
].pg_pfnum
), L_SET
);
if (read(mem
, user
.upages
[i
], CLSIZE
*NBPG
) != CLSIZE
*NBPG
) {
error("cant read page %d of u of pid %d\n",
arguutl
[CLSIZE
+i
].pg_pfnum
, mproc
->p_pid
);
(void) lseek(fd
, (long)loc
, off
);