-A address Dumps the vm_amap structure found at address.
-E address Dumps the vm_map_entry structure found at address.
-S address Dumps the vmspace structure found at address.
-V address Dumps the vm_map structure found at address.
This required reorganizing the code a little, which led to some
cleanup (yay!). These new methods are executed without any extra
privileges, so you need read access on /dev/mem or on the kernel core
into which you are digging.
This should be useful for, eg, examining amaps are corrupt when being
destroyed, which can cause a kernel panic (and, hence, are no longer
connected to a map entry, or the map entry is no longer connected to a
vm_map/vmspace).
The options in the man page have also been reorganized.
am_bckptr, am_slots, and am_anon data, if the vm_map_entry has an
amap. This adds three new debug "bits" to the -D argument, so the
namei cache dumping "bit" has been moved up.
Also, change the * that gets emitted with -vv to indicate the number
of pages skipped and the size of the area (in kilobytes).
better use of the submap names when dumping the kernel map, clean up
the "interface" between the main and LOCKDEBUG dependent pmap modules,
and make the heap identification work better.
VM_MAP_TOPDOWN flag (and the VM_MAP_DYING flag, since it never got
documented before), minor tweak to one of the examples, and use the
UVM_ET_IS*() macros instead of doing the same work manually.
would fail in spectacular ways on LOCKDEBUG kernels) by compiling the
groveler code twice (the second time with LOCKDEBUG defined so that
the appropriate structures get larger in the right way). We currently
decide if we are operating on a kernel with LOCKDEBUG enabled if the
kernel's vm_map has referential integrity between a few pointers
and/or values.
Also, if you use more than one -v, you get a * on a line by itself in
between gaps in entries. It makes finding gaps much easier visually.
merely " == 1" is just *not* helpful).
Note which symbols were missing (better for bug reports, if anyone
files one :).
Make the kernel submap symbols optional (sparc, sparc64, most powerpc,
and the sh3 ports seem not to have a phys_map -- problem noted by
myself yesterday).
Oh, and a little misc lint cleanup while I'm here.
would be horrific).
Handle the new VM_MAP_DYING flag (and adjust the VM_MAP_TOPDOWN bit).
Check to see if 0, 1, and 2 are properly "open" and try to "adjust" if
they're not. Emit no warnings or errors here.
recurse into submaps (a kernel thing) as suggested by Chuck Cranor,
with the output from these entries indented. Clean up and rework code
slightly, to make the recursion task much easier. Also, add a note to
the BUGS section in the man page thats mentions that stuff "just won't
work right" unless pmap is reading from the proper kernel.