diff mbox

[PATCHv3,10/13] scripts/gdb: Add cpu iterators

Message ID 1457005267-843-11-git-send-email-kieran.bingham@linaro.org
State New
Headers show

Commit Message

Kieran Bingham March 3, 2016, 11:41 a.m. UTC
The linux kernel provides macro's for iterating against values from the
cpu_list masks. By providing some commonly used masks, we can mirror the
kernels helper macros with easy to use generators.

Signed-off-by: Kieran Bingham <kieran.bingham@linaro.org>

---
 scripts/gdb/linux/cpus.py | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

-- 
2.5.0

Comments

Kieran Bingham March 13, 2016, 6:39 p.m. UTC | #1
On 13/03/16 16:33, Jan Kiszka wrote:
> On 2016-03-03 12:41, Kieran Bingham wrote:

>> The linux kernel provides macro's for iterating against values from the

>> cpu_list masks. By providing some commonly used masks, we can mirror the

>> kernels helper macros with easy to use generators.

>>

>> Signed-off-by: Kieran Bingham <kieran.bingham@linaro.org>

>> ---

>>  scripts/gdb/linux/cpus.py | 21 +++++++++++++++++++++

>>  1 file changed, 21 insertions(+)

>>

>> diff --git a/scripts/gdb/linux/cpus.py b/scripts/gdb/linux/cpus.py

>> index 4297b83fedef..59e24472c507 100644

>> --- a/scripts/gdb/linux/cpus.py

>> +++ b/scripts/gdb/linux/cpus.py

>> @@ -100,6 +100,27 @@ def cpu_list(mask_name):

>>          yield cpu

>>  

>>  

>> +def each_online_cpu():

>> +    for cpu in cpu_list("cpu_online_mask"):

>> +        yield cpu

>> +

>> +

>> +def each_present_cpu():

>> +    for cpu in cpu_list("cpu_present_mask"):

>> +        yield cpu

>> +

>> +

>> +def each_possible_cpu():

>> +    for cpu in cpu_list("cpu_possible_mask"):

>> +        yield cpu

>> +

> 

> This patch requires rebasing over master (these masks became macros).


Ah, yes Ok - I see.

Changed between 4b804c85dc37d...5aec01b834fd6

I'll fixup, and rebase on next.

> In general, please base on master or even next before posting.


Ack. Of course,

And of course this highlights your concerns about the need for continual
testing as well!

> 

>> +

>> +def print_cpus():

>> +    gdb.write("Possible CPUS : {}\n".format(list(each_possible_cpu())))

>> +    gdb.write("Present CPUS  : {}\n".format(list(each_present_cpu())))

>> +    gdb.write("Online CPUS   : {}\n".format(list(each_online_cpu())))

> 

> I think this can be useful. Let's make it a real, discoverable command.

> lx-cpus?


Ack.

Looking through the above breakage, I see there is also a
cpu_active_mask, so I'll add that for completeness.

--
Kieran

> 

>> +

>> +

>>  class PerCpu(gdb.Function):

>>      """Return per-cpu variable.

>>  

>>

> 

> Jan

>
diff mbox

Patch

diff --git a/scripts/gdb/linux/cpus.py b/scripts/gdb/linux/cpus.py
index 4297b83fedef..59e24472c507 100644
--- a/scripts/gdb/linux/cpus.py
+++ b/scripts/gdb/linux/cpus.py
@@ -100,6 +100,27 @@  def cpu_list(mask_name):
         yield cpu
 
 
+def each_online_cpu():
+    for cpu in cpu_list("cpu_online_mask"):
+        yield cpu
+
+
+def each_present_cpu():
+    for cpu in cpu_list("cpu_present_mask"):
+        yield cpu
+
+
+def each_possible_cpu():
+    for cpu in cpu_list("cpu_possible_mask"):
+        yield cpu
+
+
+def print_cpus():
+    gdb.write("Possible CPUS : {}\n".format(list(each_possible_cpu())))
+    gdb.write("Present CPUS  : {}\n".format(list(each_present_cpu())))
+    gdb.write("Online CPUS   : {}\n".format(list(each_online_cpu())))
+
+
 class PerCpu(gdb.Function):
     """Return per-cpu variable.