Skip to content
Snippets Groups Projects
Commit 333199e1 authored by Patrick Daly's avatar Patrick Daly
Browse files

lrdp-v2: Support kernel 3.14 log format

Kernel change 62e32ac3505a0cab1c5ef8ea2c0eab3b26ed855f
renamed 'struct log' to 'struct printk_log'. Detect which kernel
version is being parsed and use the appropriate struct name.

Change-Id: I1a92623e8b4167f390d09051a52e6411ae3901ee
parent 2f22e97c
No related branches found
No related tags found
No related merge requests found
...@@ -20,9 +20,13 @@ class DmesgLib(object): ...@@ -20,9 +20,13 @@ class DmesgLib(object):
self.ramdump = ramdump self.ramdump = ramdump
self.wrap_cnt = 0 self.wrap_cnt = 0
self.outfile = outfile self.outfile = outfile
if (self.ramdump.sizeof('struct printk_log') is None):
self.struct_name = 'struct log'
else:
self.struct_name = 'struct printk_log'
def log_from_idx(self, idx, logbuf): def log_from_idx(self, idx, logbuf):
len_offset = self.ramdump.field_offset('struct log', 'len') len_offset = self.ramdump.field_offset(self.struct_name, 'len')
msg = logbuf + idx msg = logbuf + idx
msg_len = self.ramdump.read_u16(msg + len_offset) msg_len = self.ramdump.read_u16(msg + len_offset)
...@@ -32,7 +36,7 @@ class DmesgLib(object): ...@@ -32,7 +36,7 @@ class DmesgLib(object):
return msg return msg
def log_next(self, idx, logbuf): def log_next(self, idx, logbuf):
len_offset = self.ramdump.field_offset('struct log', 'len') len_offset = self.ramdump.field_offset(self.struct_name, 'len')
msg = idx msg = idx
msg_len = self.ramdump.read_u16(msg + len_offset) msg_len = self.ramdump.read_u16(msg + len_offset)
...@@ -52,10 +56,10 @@ class DmesgLib(object): ...@@ -52,10 +56,10 @@ class DmesgLib(object):
first_idx_addr = self.ramdump.addr_lookup('log_first_idx') first_idx_addr = self.ramdump.addr_lookup('log_first_idx')
last_idx_addr = self.ramdump.addr_lookup('log_next_idx') last_idx_addr = self.ramdump.addr_lookup('log_next_idx')
logbuf_addr = self.ramdump.read_word(self.ramdump.addr_lookup('log_buf')) logbuf_addr = self.ramdump.read_word(self.ramdump.addr_lookup('log_buf'))
time_offset = self.ramdump.field_offset('struct log', 'ts_nsec') time_offset = self.ramdump.field_offset(self.struct_name, 'ts_nsec')
len_offset = self.ramdump.field_offset('struct log', 'len') len_offset = self.ramdump.field_offset(self.struct_name, 'len')
text_len_offset = self.ramdump.field_offset('struct log', 'text_len') text_len_offset = self.ramdump.field_offset(self.struct_name, 'text_len')
log_size = self.ramdump.sizeof('struct log') log_size = self.ramdump.sizeof(self.struct_name)
first_idx = self.ramdump.read_u32(first_idx_addr) first_idx = self.ramdump.read_u32(first_idx_addr)
last_idx = self.ramdump.read_u32(last_idx_addr) last_idx = self.ramdump.read_u32(last_idx_addr)
...@@ -77,5 +81,7 @@ class DmesgLib(object): ...@@ -77,5 +81,7 @@ class DmesgLib(object):
self.extract_dmesg_binary() self.extract_dmesg_binary()
elif re.search('3\.10\.\d', self.ramdump.version) is not None: elif re.search('3\.10\.\d', self.ramdump.version) is not None:
self.extract_dmesg_binary() self.extract_dmesg_binary()
elif re.search('3\.14\.\d', self.ramdump.version) is not None:
self.extract_dmesg_binary()
else: else:
self.extract_dmesg_flat() self.extract_dmesg_flat()
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