diff --git a/linux-ramdump-parser-v2/watchdog_v2.py b/linux-ramdump-parser-v2/watchdog_v2.py index 2de9189c9cd467e42804f8c4cea62fcd9beadcb8..0f9d5e86b333bef084a099e6299df9ee7decaa8f 100644 --- a/linux-ramdump-parser-v2/watchdog_v2.py +++ b/linux-ramdump-parser-v2/watchdog_v2.py @@ -875,10 +875,9 @@ def get_wdog_timing(ramdump): wdog_task, 'struct task_struct', 'state') wdog_task_threadinfo = ramdump.read_structure_field( wdog_task, 'struct task_struct', 'stack') + wdog_task_cpu = ramdump.get_task_cpu(wdog_task, wdog_task_threadinfo) wdog_task_oncpu = ramdump.read_structure_field( wdog_task, 'struct task_struct', 'on_cpu') - wdog_task_cpu = ramdump.read_structure_field( - wdog_task_threadinfo, 'struct thread_info', 'cpu') wdog_task_arrived = ramdump.read_structure_field( wdog_task, 'struct task_struct', 'sched_info.last_arrival') wdog_task_queued = ramdump.read_structure_field( @@ -941,11 +940,12 @@ def get_wdog_timing(ramdump): 'tick_cpu_device') + ramdump.per_cpu_offset(i) evt_dev = ramdump.read_structure_field( tick_cpu_device, 'struct tick_device', 'evtdev') - next_event = ramdump.read_structure_field( - evt_dev, 'struct clock_event_device', 'next_event') - next_event = ns_to_sec(next_event) - print_out_str( - "CPU{0} tick_device next_event: {1:.6f}".format(i, next_event)) + if evt_dev != 0: + next_event = ramdump.read_structure_field( + evt_dev, 'struct clock_event_device', 'next_event') + next_event = ns_to_sec(next_event) + print_out_str( + "CPU{0} tick_device next_event: {1:.6f}".format(i, next_event)) epoch_ns = ramdump.read_word('cd.read_data[0].epoch_ns') epoch_cyc = ramdump.read_word('cd.read_data[0].epoch_cyc') print_out_str('epoch_ns: {0}ns epoch_cyc: {1}'.format(epoch_ns,epoch_cyc))