From f2fe14844896c7abdc792b0b0d24ef1c2224b883 Mon Sep 17 00:00:00 2001
From: Kumar Harsh <harkumar@codeaurora.org>
Date: Fri, 14 Dec 2018 19:35:11 +0530
Subject: [PATCH] ldrp_V2 : Extract epoch info from clock data struct

Extracts the epoch data from clock data struct.
This helps in converting HLOS timestamps to non-HLOS
timestamps and vica-versa. This also additionally logs
the Linux Banner for ease in post-processing.

Change-Id: I6598d3dfb8c2c591f12cd3f77ab8de0363c76e0b
Signed-off-by: Kumar Harsh <harkumar@codeaurora.org>
---
 linux-ramdump-parser-v2/parsers/pstore.py | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/linux-ramdump-parser-v2/parsers/pstore.py b/linux-ramdump-parser-v2/parsers/pstore.py
index 70858f2..d62ff63 100644
--- a/linux-ramdump-parser-v2/parsers/pstore.py
+++ b/linux-ramdump-parser-v2/parsers/pstore.py
@@ -115,8 +115,27 @@ class PStore(RamParser):
             self.print_event_logs(pstore_out, start_addr+cpu_offset, percpu_size)
             pstore_out.close()
 
+    def print_clockdata_info(self):
+        '''
+        Extracts the epoch data from clock data struct. This helps in converting
+        HLOS timestamps to non-HLOS timestamps and vica-versa. This also
+        additionally logs the Linux Banner for ease in post-processing.
+        '''
+        out_file = self.ramdump.open_file('epoch_info.txt')
+        banner_addr = self.ramdump.address_of('linux_banner')
+        if banner_addr is not None:
+            banner_addr = self.ramdump.kernel_virt_to_phys(banner_addr)
+            vm_v = self.ramdump.gdbmi.get_value_of_string('linux_banner')
+            if vm_v is not None:
+                out_file.write('Linux Banner : {}\n'.format(vm_v))
+        epoch_ns = self.ramdump.read_word('cd.read_data[0].epoch_ns')
+        epoch_cyc = self.ramdump.read_word('cd.read_data[0].epoch_cyc')
+        out_file.write('\nepoch_ns: {0}ns  epoch_cyc: {1}\n'.format(epoch_ns,epoch_cyc))
+        out_file.close()
+
     def parse(self):
         base_addr = self.ramdump.address_of('oops_cxt')
         self.extract_io_event_logs(base_addr)
         self.extract_console_logs(base_addr)
+        self.print_clockdata_info()
 
-- 
GitLab