From d98f48fb13ebe2b589d2bdf25526fa308c9f2e9f Mon Sep 17 00:00:00 2001
From: Laura Abbott <lauraa@codeaurora.org>
Date: Tue, 11 Mar 2014 17:09:01 -0700
Subject: [PATCH] linux-ramdump-parser-v2: Cleanup workqueues

The ramdump APIs now provide functions for accessing per CPU
variables. Use those instead of writing the same code over again.

Change-Id: Ia34a9b1a279e8385bdc08b2612e59fdfe0e1f958
---
 linux-ramdump-parser-v2/parsers/workqueue.py | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/linux-ramdump-parser-v2/parsers/workqueue.py b/linux-ramdump-parser-v2/parsers/workqueue.py
index 183cb03..27b25ce 100644
--- a/linux-ramdump-parser-v2/parsers/workqueue.py
+++ b/linux-ramdump-parser-v2/parsers/workqueue.py
@@ -342,7 +342,6 @@ class Workqueues(RamParser):
     def print_workqueue_state_3_10(self, ram_dump):
         print_out_str(
             '======================= WORKQUEUE STATE ============================')
-        per_cpu_offset_addr = ram_dump.addr_lookup('__per_cpu_offset')
         cpu_worker_pools_addr = ram_dump.addr_lookup('cpu_worker_pools')
 
         busy_hash_offset = ram_dump.field_offset(
@@ -362,22 +361,15 @@ class Workqueues(RamParser):
         worker_pool_size = ram_dump.sizeof('struct worker_pool')
         pending_work_offset = ram_dump.field_offset(
             'struct worker_pool', 'worklist')
-        cpu_present_bits_addr = ram_dump.addr_lookup('cpu_present_bits')
-        cpu_present_bits = ram_dump.read_word(cpu_present_bits_addr)
-        cpus = bin(cpu_present_bits).count('1')
 
         s = '<'
         for a in range(0, 64):
             s = s + 'I'
 
-        for i in range(0, cpus):
+        for i in ram_dump.iter_cpus():
             busy_hash = []
-            if per_cpu_offset_addr is None:
-                offset = 0
-            else:
-                offset = ram_dump.read_word(per_cpu_offset_addr + 4 * i)
 
-            worker_pool = cpu_worker_pools_addr + offset
+            worker_pool = cpu_worker_pools_addr + ram_dump.per_cpu_offset(i)
             # Need better way to ge the number of pools...
             for k in range(0, 2):
                 worker_pool_i = worker_pool + k * worker_pool_size
-- 
GitLab