pmap: Refresh debugging facilities

Print vm_aslr_delta_mmap from 'struct vmspace'.
Print the WANTVA bit of 'flags' from 'struct vm_map'.
Replace %x with %#x, this improves readability of hex vs dec numbers.

Sponsored by <The NetBSD Foundation>
This commit is contained in:
kamil 2017-10-04 11:33:01 +00:00
parent 2b4a7b077a
commit 15e2febe9d
1 changed files with 18 additions and 12 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.52 2015/12/14 03:15:10 christos Exp $ */
/* $NetBSD: pmap.c,v 1.53 2017/10/04 11:33:01 kamil Exp $ */
/*
* Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
@ -31,7 +31,7 @@
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$NetBSD: pmap.c,v 1.52 2015/12/14 03:15:10 christos Exp $");
__RCSID("$NetBSD: pmap.c,v 1.53 2017/10/04 11:33:01 kamil Exp $");
#endif
#include <string.h>
@ -127,8 +127,10 @@ dump_vm_map(kvm_t *kd, struct kinfo_proc2 *proc,
printf(" vm_daddr = %p,\n", D(vmspace, vmspace)->vm_daddr);
printf(" vm_maxsaddr = %p,",
D(vmspace, vmspace)->vm_maxsaddr);
printf(" vm_minsaddr = %p }\n",
printf(" vm_minsaddr = %p,\n",
D(vmspace, vmspace)->vm_minsaddr);
printf(" vm_aslr_delta_mmap = %#zx }\n",
D(vmspace, vmspace)->vm_aslr_delta_mmap);
}
if (debug & PRINT_VM_MAP) {
@ -144,7 +146,7 @@ dump_vm_map(kvm_t *kd, struct kinfo_proc2 *proc,
D(vm_map, vm_map)->hint);
printf("%*s first_free = %p,", indent(2), "",
D(vm_map, vm_map)->first_free);
printf(" flags = %x <%s%s%s%s >,\n", D(vm_map, vm_map)->flags,
printf(" flags = %#x <%s%s%s%s%s >,\n", D(vm_map, vm_map)->flags,
D(vm_map, vm_map)->flags & VM_MAP_PAGEABLE ? " PAGEABLE" : "",
D(vm_map, vm_map)->flags & VM_MAP_WIREFUTURE ? " WIREFUTURE" : "",
#ifdef VM_MAP_DYING
@ -153,6 +155,10 @@ dump_vm_map(kvm_t *kd, struct kinfo_proc2 *proc,
"",
#ifdef VM_MAP_TOPDOWN
D(vm_map, vm_map)->flags & VM_MAP_TOPDOWN ? " TOPDOWN" :
#endif
"",
#ifdef VM_MAP_WANTVA
D(vm_map, vm_map)->flags & VM_MAP_WANTVA ? " WANTVA" :
#endif
"");
printf("%*s timestamp = %u }\n", indent(2), "",
@ -165,7 +171,7 @@ dump_vm_map(kvm_t *kd, struct kinfo_proc2 *proc,
recurse < 2 ? "MAP" : "SUBMAP", P(vm_map),
vm_map_min(D(vm_map, vm_map)),
vm_map_max(D(vm_map, vm_map)));
printf("\t%*s#ent=%d, sz=%"PRIxVSIZE", ref=%d, version=%d, flags=0x%x\n",
printf("\t%*s#ent=%d, sz=%"PRIxVSIZE", ref=%d, version=%d, flags=%#x\n",
indent(2), "", D(vm_map, vm_map)->nentries,
D(vm_map, vm_map)->size, D(vm_map, vm_map)->ref_count,
D(vm_map, vm_map)->timestamp, D(vm_map, vm_map)->flags);
@ -289,20 +295,20 @@ dump_vm_map_entry(kvm_t *kd, struct kinfo_proc2 *proc, struct kbit *vmspace,
printf(" object.uvm_obj/sub_map = %p,\n", vme->object.uvm_obj);
printf("%*s offset = %" PRIx64 ",", indent(2), "",
vme->offset);
printf(" etype = %x <%s%s%s%s >,", vme->etype,
printf(" etype = %#x <%s%s%s%s >,", vme->etype,
UVM_ET_ISOBJ(vme) ? " OBJ" : "",
UVM_ET_ISSUBMAP(vme) ? " SUBMAP" : "",
UVM_ET_ISCOPYONWRITE(vme) ? " COW" : "",
UVM_ET_ISNEEDSCOPY(vme) ? " NEEDSCOPY" : "");
printf(" protection = %x,\n", vme->protection);
printf("%*s max_protection = %x,", indent(2), "",
printf(" protection = %#x,\n", vme->protection);
printf("%*s max_protection = %#x,", indent(2), "",
vme->max_protection);
printf(" inheritance = %d,", vme->inheritance);
printf(" wired_count = %d,\n", vme->wired_count);
printf("%*s aref = { ar_pageoff = %x, ar_amap = %p },",
printf("%*s aref = { ar_pageoff = %#x, ar_amap = %p },",
indent(2), "", vme->aref.ar_pageoff, vme->aref.ar_amap);
printf(" advice = %d,\n", vme->advice);
printf("%*s flags = %x <%s%s%s > }\n", indent(2), "",
printf("%*s flags = %#x <%s%s%s > }\n", indent(2), "",
vme->flags,
vme->flags & UVM_MAP_KERNEL ? " KERNEL" : "",
vme->flags & UVM_MAP_STATIC ? " STATIC" : "",
@ -425,7 +431,7 @@ dump_vm_map_entry(kvm_t *kd, struct kinfo_proc2 *proc, struct kbit *vmspace,
}
if (print_ddb) {
printf("%*s - %p: %#"PRIxVADDR"->%#"PRIxVADDR": obj=%p/0x%" PRIx64 ", amap=%p/%d\n",
printf("%*s - %p: %#"PRIxVADDR"->%#"PRIxVADDR": obj=%p/%#" PRIx64 ", amap=%p/%d\n",
indent(2), "",
P(vm_map_entry), vme->start, vme->end,
vme->object.uvm_obj, vme->offset,
@ -541,7 +547,7 @@ dump_amap(kvm_t *kd, struct kbit *amap)
}
printf("%*s amap %p = { am_ref = %d, "
"am_flags = %x,\n"
"am_flags = %#x,\n"
"%*s am_maxslot = %d, am_nslot = %d, am_nused = %d, "
"am_slots = %p,\n"
"%*s am_bckptr = %p, am_anon = %p, am_ppref = %p }\n",