Skip to content
Snippets Groups Projects
Commit f3dbb5dc authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "linux-ramdump-parser-v2: Update slabinfo for 64-bit"

parents 42a0a8ec 33ff729c
No related branches found
No related tags found
No related merge requests found
...@@ -29,7 +29,7 @@ class Slabinfo(RamParser): ...@@ -29,7 +29,7 @@ class Slabinfo(RamParser):
def slab_index(self, ramdump, p, addr, slab): def slab_index(self, ramdump, p, addr, slab):
slab_size_offset = self.ramdump.field_offset( slab_size_offset = self.ramdump.field_offset(
'struct kmem_cache', 'size') 'struct kmem_cache', 'size')
slab_size = self.ramdump.read_word(slab + slab_size_offset) slab_size = self.ramdump.read_int(slab + slab_size_offset)
if slab_size is None: if slab_size is None:
return -1 return -1
return (p - addr) / slab_size return (p - addr) / slab_size
...@@ -56,10 +56,10 @@ class Slabinfo(RamParser): ...@@ -56,10 +56,10 @@ class Slabinfo(RamParser):
'struct kmem_cache', 'offset') 'struct kmem_cache', 'offset')
slab_inuse_offset = self.ramdump.field_offset( slab_inuse_offset = self.ramdump.field_offset(
'struct kmem_cache', 'inuse') 'struct kmem_cache', 'inuse')
slab_offset = self.ramdump.read_word(slab + slab_offset_offset) slab_offset = self.ramdump.read_int(slab + slab_offset_offset)
slab_inuse = self.ramdump.read_word(slab + slab_inuse_offset) slab_inuse = self.ramdump.read_int(slab + slab_inuse_offset)
if slab_offset != 0: if slab_offset != 0:
p = obj + slab_offset + 4 p = obj + slab_offset + self.ramdump.sizeof("void *")
else: else:
p = obj + slab_inuse p = obj + slab_inuse
return p + track_type * track_size return p + track_type * track_size
...@@ -68,12 +68,13 @@ class Slabinfo(RamParser): ...@@ -68,12 +68,13 @@ class Slabinfo(RamParser):
p = self.get_track(self.ramdump, slab, obj, track_type) p = self.get_track(self.ramdump, slab, obj, track_type)
track_addrs_offset = self.ramdump.field_offset('struct track', 'addrs') track_addrs_offset = self.ramdump.field_offset('struct track', 'addrs')
start = p + track_addrs_offset start = p + track_addrs_offset
pointer_size = self.ramdump.sizeof("unsigned long")
if track_type == 0: if track_type == 0:
out_file.write(' ALLOC STACK\n') out_file.write(' ALLOC STACK\n')
else: else:
out_file.write(' FREE STACK\n') out_file.write(' FREE STACK\n')
for i in range(0, 16): for i in range(0, 16):
a = self.ramdump.read_word(start + 4 * i) a = self.ramdump.read_word(start + pointer_size * i)
if a == 0: if a == 0:
break break
look = self.ramdump.unwind_lookup(a) look = self.ramdump.unwind_lookup(a)
...@@ -95,7 +96,7 @@ class Slabinfo(RamParser): ...@@ -95,7 +96,7 @@ class Slabinfo(RamParser):
# offset is always 0. Work around this for now # offset is always 0. Work around this for now
map_count_offset = self.ramdump.field_offset( map_count_offset = self.ramdump.field_offset(
'struct page', '_mapcount') 'struct page', '_mapcount')
count = self.ramdump.read_word(page + map_count_offset) count = self.ramdump.read_int(page + map_count_offset)
if count is None: if count is None:
return None return None
n_objects = (count >> 16) & 0xFFFF n_objects = (count >> 16) & 0xFFFF
...@@ -110,7 +111,7 @@ class Slabinfo(RamParser): ...@@ -110,7 +111,7 @@ class Slabinfo(RamParser):
return return
slab_size_offset = self.ramdump.field_offset( slab_size_offset = self.ramdump.field_offset(
'struct kmem_cache', 'size') 'struct kmem_cache', 'size')
slab_size = self.ramdump.read_word(slab + slab_size_offset) slab_size = self.ramdump.read_int(slab + slab_size_offset)
if slab_size is None: if slab_size is None:
return return
slab_max_offset = self.ramdump.field_offset('struct kmem_cache', 'max') slab_max_offset = self.ramdump.field_offset('struct kmem_cache', 'max')
...@@ -216,8 +217,7 @@ class Slabinfo(RamParser): ...@@ -216,8 +217,7 @@ class Slabinfo(RamParser):
self.ramdump, slab, slab_node, slab_node_addr + slab_full_offset, slab_out) self.ramdump, slab, slab_node, slab_node_addr + slab_full_offset, slab_out)
for i in range(0, cpus): for i in range(0, cpus):
cpu_slabn_addr = cpu_slab_addr + \ cpu_slabn_addr = self.ramdump.read_word(cpu_slab_addr, cpu=i)
self.ramdump.read_word(per_cpu_offset + 4 * i)
self.print_per_cpu_slab_info( self.print_per_cpu_slab_info(
self.ramdump, slab, slab_node, cpu_slabn_addr + cpu_cache_page_offset, slab_out) self.ramdump, slab, slab_node, cpu_slabn_addr + cpu_cache_page_offset, slab_out)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment