Frank.Hofmann at Sun.COM wrote:
On Fri, 31 Aug 2007, William P. Taylor wrote:
My library does mmap of the InfiniBand driver. The backing memory is
main memory, allocated by the InfiniBand driver via ddi_umem_alloc().
My library accesses the memory just fine, and I added printfs to dumps
the addresses. My library goes into an infinite loop, and I suspend it.
I run "mdb -p PID" in order to display the mmap'ed memory. I confirm
the address with "$m", here's the line of interest:
BASE LIMIT SIZE NAME
fffffd7ffedcc000 fffffd7ffedec000 20000
fffffd7ffedcc000/J
mdb: failed to read data from target: no mapping for address
Can someone tell me how I can display this memory?
Thanks for the reply.
That address is the _KERNEL_ address. Use "mdb -k" to see it.
No, it is an amd64 _USER_ address. "mdb -k" as root on the
same system while "mdb -p PID" is still running shows:
mdb: failed to read data from target: no mapping for address
"pmap PID" confirms my assertion of it being a _USER_ address:
FFFFFD7FFEDCC000 128K rw-s-
Maybe the "s" in "rw-s-" is of consequence, but "man pmap"
just says it means "shared".
For the userspace address of the buffer, you need to look at the "pmap"
output for your app, and see where it ended up.
FrankH.
-Bill