|
Lines 74-79
Link Here
|
| 74 |
#include <nfs/nfsnode.h> |
74 |
#include <nfs/nfsnode.h> |
| 75 |
|
75 |
|
| 76 |
|
76 |
|
|
|
77 |
#include <vm/vm.h> |
| 78 |
#include <vm/vm_map.h> |
| 79 |
#include <vm/vm_object.h> |
| 80 |
|
| 77 |
#include <net/route.h> |
81 |
#include <net/route.h> |
| 78 |
#include <netinet/in.h> |
82 |
#include <netinet/in.h> |
| 79 |
#include <netinet/in_systm.h> |
83 |
#include <netinet/in_systm.h> |
|
Lines 100-105
Link Here
|
| 100 |
#define CDIR -2 |
104 |
#define CDIR -2 |
| 101 |
#define RDIR -3 |
105 |
#define RDIR -3 |
| 102 |
#define TRACE -4 |
106 |
#define TRACE -4 |
|
|
107 |
#define MMAP -5 |
| 103 |
|
108 |
|
| 104 |
DEVS *devs; |
109 |
DEVS *devs; |
| 105 |
|
110 |
|
|
Lines 132-137
Link Here
|
| 132 |
kvm_t *kd; |
137 |
kvm_t *kd; |
| 133 |
|
138 |
|
| 134 |
void dofiles __P((struct kinfo_proc *kp)); |
139 |
void dofiles __P((struct kinfo_proc *kp)); |
|
|
140 |
void dommap __P((struct kinfo_proc *kp)); |
| 135 |
void vtrans __P((struct vnode *vp, int i, int flag)); |
141 |
void vtrans __P((struct vnode *vp, int i, int flag)); |
| 136 |
int ufs_filestat __P((struct vnode *vp, struct filestat *fsp)); |
142 |
int ufs_filestat __P((struct vnode *vp, struct filestat *fsp)); |
| 137 |
int nfs_filestat __P((struct vnode *vp, struct filestat *fsp)); |
143 |
int nfs_filestat __P((struct vnode *vp, struct filestat *fsp)); |
|
Lines 246-251
Link Here
|
| 246 |
if (p->kp_proc.p_stat == SZOMB) |
252 |
if (p->kp_proc.p_stat == SZOMB) |
| 247 |
continue; |
253 |
continue; |
| 248 |
dofiles(p); |
254 |
dofiles(p); |
|
|
255 |
dommap(p); |
| 249 |
} |
256 |
} |
| 250 |
exit(0); |
257 |
exit(0); |
| 251 |
} |
258 |
} |
|
Lines 267-272
Link Here
|
| 267 |
case TRACE: \ |
274 |
case TRACE: \ |
| 268 |
printf(" tr"); \ |
275 |
printf(" tr"); \ |
| 269 |
break; \ |
276 |
break; \ |
|
|
277 |
case MMAP: \ |
| 278 |
printf(" mmap"); \ |
| 279 |
break; \ |
| 270 |
default: \ |
280 |
default: \ |
| 271 |
printf(" %4d", i); \ |
281 |
printf(" %4d", i); \ |
| 272 |
break; \ |
282 |
break; \ |
|
Lines 356-361
Link Here
|
| 356 |
dprintf(stderr, |
366 |
dprintf(stderr, |
| 357 |
"unknown file type %d for file %d of pid %d\n", |
367 |
"unknown file type %d for file %d of pid %d\n", |
| 358 |
file.f_type, i, Pid); |
368 |
file.f_type, i, Pid); |
|
|
369 |
} |
| 370 |
} |
| 371 |
} |
| 372 |
|
| 373 |
void |
| 374 |
dommap(kp) |
| 375 |
struct kinfo_proc *kp; |
| 376 |
{ |
| 377 |
struct proc *p = &kp->kp_proc; |
| 378 |
struct vmspace vmspace; |
| 379 |
vm_map_t map; |
| 380 |
struct vm_map_entry entry; |
| 381 |
vm_map_entry_t entryp; |
| 382 |
struct vm_object object; |
| 383 |
vm_object_t objp; |
| 384 |
int prot, fflags; |
| 385 |
|
| 386 |
if (!KVM_READ(p->p_vmspace, &vmspace, sizeof(vmspace))) { |
| 387 |
dprintf(stderr, "can't read vmspace at %p for pid %d\n", |
| 388 |
(void *)p->p_vmspace, Pid); |
| 389 |
return; |
| 390 |
} |
| 391 |
|
| 392 |
map = &vmspace.vm_map; |
| 393 |
|
| 394 |
for (entryp = map->header.next; entryp != &p->p_vmspace->vm_map.header; |
| 395 |
entryp = entry.next) { |
| 396 |
if (!KVM_READ(entryp, &entry, sizeof(entry))) { |
| 397 |
dprintf(stderr, |
| 398 |
"can't read vm_map_entry at %p for pid %d\n", |
| 399 |
(void *)entryp, Pid); |
| 400 |
return; |
| 401 |
} |
| 402 |
|
| 403 |
if (entry.eflags & MAP_ENTRY_IS_SUB_MAP) |
| 404 |
continue; |
| 405 |
|
| 406 |
if ((objp = entry.object.vm_object) == NULL) |
| 407 |
continue; |
| 408 |
|
| 409 |
for (; objp; objp = object.backing_object) { |
| 410 |
if (!KVM_READ(objp, &object, sizeof(object))) { |
| 411 |
dprintf(stderr, |
| 412 |
"can't read vm_object at %p for pid %d\n", |
| 413 |
(void *)objp, Pid); |
| 414 |
return; |
| 415 |
} |
| 416 |
} |
| 417 |
|
| 418 |
prot = entry.protection; |
| 419 |
fflags = (prot & VM_PROT_READ ? FREAD : 0) | |
| 420 |
(prot & VM_PROT_WRITE ? FWRITE : 0); |
| 421 |
|
| 422 |
switch (object.type) { |
| 423 |
case OBJT_VNODE: |
| 424 |
vtrans((struct vnode *)object.handle, MMAP, fflags); |
| 425 |
break; |
| 426 |
default: |
| 427 |
break; |
| 359 |
} |
428 |
} |
| 360 |
} |
429 |
} |
| 361 |
} |
430 |
} |