diff --git a/linux-ramdump-parser-v2/parsers/rtb.py b/linux-ramdump-parser-v2/parsers/rtb.py index c06ad65d1e30066b84a429f45bed958b2d315e89..8ef3eed81f5882f817b22c4e8f225f876d347ebc 100644 --- a/linux-ramdump-parser-v2/parsers/rtb.py +++ b/linux-ramdump-parser-v2/parsers/rtb.py @@ -55,40 +55,40 @@ class RTB(RamParser): rtbout.write('{0} No data\n'.format(logtype).encode('ascii', 'ignore')) def print_readlwritel(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) func = self.get_fun_name(caller) line = self.get_caller(caller) rtbout.write('{0} from address {1:x} called from addr {2:x} {3} {4}\n'.format( logtype, data, caller, func, line).encode('ascii', 'ignore')) def print_logbuf(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) func = self.get_fun_name(caller) line = self.get_caller(caller) rtbout.write('{0} log end {1:x} called from addr {2:x} {3} {4}\n'.format( logtype, data, caller, func, line).encode('ascii', 'ignore')) def print_hotplug(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) func = self.get_fun_name(caller) line = self.get_caller(caller) rtbout.write('{0} cpu data {1:x} called from addr {2:x} {3} {4}\n'.format( logtype, data, caller, func, line).encode('ascii', 'ignore')) def print_ctxid(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) func = self.get_fun_name(caller) line = self.get_caller(caller) rtbout.write('{0} context id {1:x} called from addr {2:x} {3} {4}\n'.format( logtype, data, caller, func, line).encode('ascii', 'ignore')) def print_timestamp(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) rtbout.write('{0} Timestamp: {1:x}{2:x}\n'.format( logtype, data, caller).encode('ascii', 'ignore')) @@ -114,20 +114,21 @@ class RTB(RamParser): data_offset = self.ramdump.field_offset( 'struct msm_rtb_layout', 'data') rtb_entry_size = self.ramdump.sizeof('struct msm_rtb_layout') - step_size = self.ramdump.read_word(rtb + step_size_offset) - total_entries = self.ramdump.read_word(rtb + nentries_offset) + step_size = self.ramdump.read_u32(rtb + step_size_offset) + print 'step size = {0:x}'.format(step_size) + total_entries = self.ramdump.read_int(rtb + nentries_offset) rtb_read_ptr = self.ramdump.read_word(rtb + rtb_entry_offset) for i in range(0, step_size): rtb_out = self.ramdump.open_file('msm_rtb{0}.txt'.format(i)) gdb_cmd = NamedTemporaryFile(mode='w+t', delete=False) gdb_out = NamedTemporaryFile(mode='w+t', delete=False) - mask = self.ramdump.read_word(rtb + nentries_offset) - 1 + mask = self.ramdump.read_int(rtb + nentries_offset) - 1 if step_size == 1: - last = self.ramdump.read_word( + last = self.ramdump.read_int( self.ramdump.addr_lookup('msm_rtb_idx')) else: - last = self.ramdump.read_word(self.ramdump.addr_lookup( - 'msm_rtb_idx_cpu') + self.ramdump.read_word(self.ramdump.addr_lookup('__per_cpu_offset') + 4 * i)) + last = self.ramdump.read_int(self.ramdump.addr_lookup( + 'msm_rtb_idx_cpu'), cpu=i ) last = last & mask last_ptr = 0 next_ptr = 0 @@ -137,8 +138,8 @@ class RTB(RamParser): last_ptr = rtb_read_ptr + last * rtb_entry_size + idx_offset next_ptr = rtb_read_ptr + next_entry * \ rtb_entry_size + idx_offset - a = self.ramdump.read_word(last_ptr) - b = self.ramdump.read_word(next_ptr) + a = self.ramdump.read_int(last_ptr) + b = self.ramdump.read_int(next_ptr) if a < b: last = next_entry if next_entry != last: @@ -154,7 +155,7 @@ class RTB(RamParser): 'struct msm_rtb_layout', 'caller') while True: ptr = rtb_read_ptr + next_entry * rtb_entry_size - stamp = self.ramdump.read_word(ptr + rtb_idx_offset) + stamp = self.ramdump.read_int(ptr + rtb_idx_offset) if stamp is None: break rtb_out.write('{0:x} '.format(stamp).encode('ascii', 'ignore'))