diff --git a/linux-ramdump-parser-v2/dmesglib.py b/linux-ramdump-parser-v2/dmesglib.py index c22a2dbc2ae2131cc68d4519ae87b274e0da7726..2375f59f4f2d6145de43ad1b99b08400990be673 100644 --- a/linux-ramdump-parser-v2/dmesglib.py +++ b/linux-ramdump-parser-v2/dmesglib.py @@ -132,11 +132,10 @@ class DmesgLib(object): curr_idx = self.verify_log(curr_idx, logbuf_addr, last_idx) def extract_dmesg(self): - if re.search('3.7.\d', self.ramdump.version) is not None: - self.extract_dmesg_binary() - elif re.search('3\.10\.\d', self.ramdump.version) is not None: - self.extract_dmesg_binary() - elif re.search('3\.14\.\d', self.ramdump.version) is not None: - self.extract_dmesg_binary() - else: - self.extract_dmesg_flat() + match = re.search('(\d+)\.(\d+)\.(\d+)', self.ramdump.version) + if match is not None: + major, minor, patch = map(int, match.groups()) + if (major, minor) >= (3, 7): + self.extract_dmesg_binary() + return + self.extract_dmesg_flat() diff --git a/linux-ramdump-parser-v2/parsers/workqueue.py b/linux-ramdump-parser-v2/parsers/workqueue.py index 0fd3f21ea20a4660aecda0a51b3a1e63d75afffb..dcecd4297b8c7141da5456d3f92fb84dea0e5774 100644 --- a/linux-ramdump-parser-v2/parsers/workqueue.py +++ b/linux-ramdump-parser-v2/parsers/workqueue.py @@ -441,9 +441,11 @@ class Workqueues(RamParser): def parse(self): ver = self.ramdump.version - if re.search('3.0.\d', ver) is not None: + match = re.search('(\d+)\.(\d+)\.(\d+)', ver) + major, minor, patch = map(int, match.groups()) + if (major, minor) == (3, 0): print_workqueue_state_3_0(self.ramdump) - if re.search('3.4.\d', ver) is not None: + elif (major, minor) == (3, 4): # somebody did a backport of 3.7 workqueue patches to msm so # need to detect new vs. old versions idle_list_offset = self.ramdump.field_offset( @@ -452,9 +454,9 @@ class Workqueues(RamParser): self.print_workqueue_state_3_7(self.ramdump) else: self.print_workqueue_state_3_0(self.ramdump) - if re.search('3.7.\d', ver) is not None: + elif (major, minor) == (3, 7): self.print_workqueue_state_3_7(self.ramdump) - if re.search('3.10.\d', ver) is not None: - self.print_workqueue_state_3_10(self.ramdump) - if re.search('3.14.\d', ver) is not None: + elif (major, minor) >= (3, 10): self.print_workqueue_state_3_10(self.ramdump) + else: + print_out_str('Kernel version {0}.{1} is not yet supported for parsing workqueues'.format(major, minor))