Dave Anderson wrote: Or perhaps just put
> a bunch of dashes in the MAPPING field. Or something like
> that.
>
> Dave
>
>
This is what I'm thinking -- it just puts dashes in the
MAPPING and INDEX columns if the kernel uses this type
of page structure:
--- memory.c 14 Feb 2006 20:13:46 -0000 1.112
+++ memory.c 17 Feb 2006 20:36:58 -0000
@@ -3482,7 +3482,7 @@
{
long i, n;
long total_pages;
- int others, page_not_mapped, phys_not_mapped;
+ int others, page_not_mapped, phys_not_mapped, page_mapping;
ulong pp, ppend;
physaddr_t phys, physend;
ulong tmp, reserved, shared, slabs;
@@ -3694,10 +3694,12 @@
continue;
}
+ page_mapping = VALID_MEMBER(page_mapping);
+
if (v22) {
inode = ULONG(pcache +
OFFSET(page_inode));
offset = ULONG(pcache +
OFFSET(page_offset));
- } else {
+ } else if (page_mapping) {
mapping = ULONG(pcache +
OFFSET(page_mapping));
index = ULONG(pcache +
OFFSET(page_index));
@@ -3740,6 +3742,20 @@
space(MINSPACE),
mkstring(buf4, 8,
CENTER|RJUST, " "),
" ");
+ else if (!page_mapping)
+ fprintf(fp, "%s%s%s%s%s%s%s %2d ",
+ mkstring(buf0, VADDR_PRLEN,
+ LJUST|LONG_HEX, MKSTR(pp)),
+ space(MINSPACE),
+ mkstring(buf1, MAX(PADDR_PRLEN,
+ strlen("PHYSICAL")),
+ RJUST|LONGLONG_HEX,
MKSTR(&phys)),
+ space(MINSPACE),
+ mkstring(buf3, VADDR_PRLEN,
+ CENTER|RJUST, "-------"),
+ space(MINSPACE),
+ mkstring(buf4, 8,
CENTER|RJUST, "-----"),
+ count);
else
fprintf(fp, "%s%s%s%s%s%s%8ld %2d ",
mkstring(buf0, VADDR_PRLEN,
Dave
------------------------------------------------------------------------
--
Crash-utility mailing list
Crash-utility(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility
Your approach is better lets go with that. BTW: page->mapping will
not always be valid even if
we can find the offset . The page can be unmapped or page->private
will be used.
you have to check the count and the flags to know what is valid. But
you show those anyway.
--
David Wilder
IBM Linux Technology Center
Beaverton, Oregon, USA
dwilder(a)us.ibm.com
(503)578-3789