All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3
       [not found] <20220720122711.6174-1-pngliu@hotmail.com>
@ 2022-07-20 12:27 ` pngliu
  2022-08-04  8:50   ` Peng Liu
  2022-08-31 15:01   ` Jan Kiszka
  2022-07-20 12:27 ` [PATCH 3/3] scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing pngliu
  1 sibling, 2 replies; 12+ messages in thread
From: pngliu @ 2022-07-20 12:27 UTC (permalink / raw)
  To: jan.kiszka, kbingham; +Cc: linux-kernel, Peng Liu

From: Peng Liu <liupeng17@lenovo.com>

Below incompatibilities between Python2 and Python3 made lx-timerlist
fail to run under Python3.

o xrange() is replaced by range() in Python3
o bytes and str are different types in Python3
o the return value of Inferior.read_memory() is memoryview object in
  Python3

Signed-off-by: Peng Liu <liupeng17@lenovo.com>
---
 scripts/gdb/linux/timerlist.py | 4 +++-
 scripts/gdb/linux/utils.py     | 5 ++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/scripts/gdb/linux/timerlist.py b/scripts/gdb/linux/timerlist.py
index 44e39dc3eb64..8281da068c5b 100644
--- a/scripts/gdb/linux/timerlist.py
+++ b/scripts/gdb/linux/timerlist.py
@@ -72,7 +72,7 @@ def print_cpu(hrtimer_bases, cpu, max_clock_bases):
     ts = cpus.per_cpu(tick_sched_ptr, cpu)
 
     text = "cpu: {}\n".format(cpu)
-    for i in xrange(max_clock_bases):
+    for i in range(max_clock_bases):
         text += " clock {}:\n".format(i)
         text += print_base(cpu_base['clock_base'][i])
 
@@ -157,6 +157,8 @@ def pr_cpumask(mask):
     num_bytes = (nr_cpu_ids + 7) / 8
     buf = utils.read_memoryview(inf, bits, num_bytes).tobytes()
     buf = binascii.b2a_hex(buf)
+    if type(buf) is not str:
+        buf=buf.decode()
 
     chunks = []
     i = num_bytes
diff --git a/scripts/gdb/linux/utils.py b/scripts/gdb/linux/utils.py
index ff7c1799d588..db59f986c7fd 100644
--- a/scripts/gdb/linux/utils.py
+++ b/scripts/gdb/linux/utils.py
@@ -89,7 +89,10 @@ def get_target_endianness():
 
 
 def read_memoryview(inf, start, length):
-    return memoryview(inf.read_memory(start, length))
+    m = inf.read_memory(start, length)
+    if type(m) is memoryview:
+        return m
+    return memoryview(m)
 
 
 def read_u16(buffer, offset):
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/3] scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing
       [not found] <20220720122711.6174-1-pngliu@hotmail.com>
  2022-07-20 12:27 ` [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3 pngliu
@ 2022-07-20 12:27 ` pngliu
  2022-08-04  8:50   ` Peng Liu
  2022-08-31 15:03   ` Jan Kiszka
  1 sibling, 2 replies; 12+ messages in thread
From: pngliu @ 2022-07-20 12:27 UTC (permalink / raw)
  To: jan.kiszka, kbingham; +Cc: linux-kernel, Peng Liu

From: Peng Liu <liupeng17@lenovo.com>

HRTIMER_MAX_CLOCK_BASES is of enum type hrtimer_base_type. To print
it as an integer, HRTIMER_MAX_CLOCK_BASES should be converted first.

Signed-off-by: Peng Liu <liupeng17@lenovo.com>
---
 scripts/gdb/linux/timerlist.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/gdb/linux/timerlist.py b/scripts/gdb/linux/timerlist.py
index 8281da068c5b..249f0e804b24 100644
--- a/scripts/gdb/linux/timerlist.py
+++ b/scripts/gdb/linux/timerlist.py
@@ -188,7 +188,8 @@ class LxTimerList(gdb.Command):
         max_clock_bases = gdb.parse_and_eval("HRTIMER_MAX_CLOCK_BASES")
 
         text = "Timer List Version: gdb scripts\n"
-        text += "HRTIMER_MAX_CLOCK_BASES: {}\n".format(max_clock_bases)
+        text += "HRTIMER_MAX_CLOCK_BASES: {}\n".format(
+            max_clock_bases.type.fields()[max_clock_bases].enumval)
         text += "now at {} nsecs\n".format(ktime_get())
 
         for cpu in cpus.each_online_cpu():
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3
  2022-07-20 12:27 ` [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3 pngliu
@ 2022-08-04  8:50   ` Peng Liu
  2022-08-22  9:30     ` Peng Liu
  2022-08-31 15:01   ` Jan Kiszka
  1 sibling, 1 reply; 12+ messages in thread
From: Peng Liu @ 2022-08-04  8:50 UTC (permalink / raw)
  To: jan.kiszka, kbingham; +Cc: linux-kernel, Peng Liu

ping

On 2022/7/20 20:27, pngliu@hotmail.com wrote:
> From: Peng Liu <liupeng17@lenovo.com>
>
> Below incompatibilities between Python2 and Python3 made lx-timerlist
> fail to run under Python3.
>
> o xrange() is replaced by range() in Python3
> o bytes and str are different types in Python3
> o the return value of Inferior.read_memory() is memoryview object in
>    Python3
>
> Signed-off-by: Peng Liu <liupeng17@lenovo.com>
> ---
>   scripts/gdb/linux/timerlist.py | 4 +++-
>   scripts/gdb/linux/utils.py     | 5 ++++-
>   2 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/gdb/linux/timerlist.py b/scripts/gdb/linux/timerlist.py
> index 44e39dc3eb64..8281da068c5b 100644
> --- a/scripts/gdb/linux/timerlist.py
> +++ b/scripts/gdb/linux/timerlist.py
> @@ -72,7 +72,7 @@ def print_cpu(hrtimer_bases, cpu, max_clock_bases):
>       ts = cpus.per_cpu(tick_sched_ptr, cpu)
>   
>       text = "cpu: {}\n".format(cpu)
> -    for i in xrange(max_clock_bases):
> +    for i in range(max_clock_bases):
>           text += " clock {}:\n".format(i)
>           text += print_base(cpu_base['clock_base'][i])
>   
> @@ -157,6 +157,8 @@ def pr_cpumask(mask):
>       num_bytes = (nr_cpu_ids + 7) / 8
>       buf = utils.read_memoryview(inf, bits, num_bytes).tobytes()
>       buf = binascii.b2a_hex(buf)
> +    if type(buf) is not str:
> +        buf=buf.decode()
>   
>       chunks = []
>       i = num_bytes
> diff --git a/scripts/gdb/linux/utils.py b/scripts/gdb/linux/utils.py
> index ff7c1799d588..db59f986c7fd 100644
> --- a/scripts/gdb/linux/utils.py
> +++ b/scripts/gdb/linux/utils.py
> @@ -89,7 +89,10 @@ def get_target_endianness():
>   
>   
>   def read_memoryview(inf, start, length):
> -    return memoryview(inf.read_memory(start, length))
> +    m = inf.read_memory(start, length)
> +    if type(m) is memoryview:
> +        return m
> +    return memoryview(m)
>   
>   
>   def read_u16(buffer, offset):

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing
  2022-07-20 12:27 ` [PATCH 3/3] scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing pngliu
@ 2022-08-04  8:50   ` Peng Liu
  2022-08-22  9:30     ` Peng Liu
  2022-08-31 15:03   ` Jan Kiszka
  1 sibling, 1 reply; 12+ messages in thread
From: Peng Liu @ 2022-08-04  8:50 UTC (permalink / raw)
  To: jan.kiszka, kbingham; +Cc: linux-kernel, Peng Liu


On 2022/7/20 20:27, pngliu@hotmail.com wrote:
> From: Peng Liu <liupeng17@lenovo.com>
>
> HRTIMER_MAX_CLOCK_BASES is of enum type hrtimer_base_type. To print
> it as an integer, HRTIMER_MAX_CLOCK_BASES should be converted first.
>
> Signed-off-by: Peng Liu <liupeng17@lenovo.com>
> ---
>   scripts/gdb/linux/timerlist.py | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/gdb/linux/timerlist.py b/scripts/gdb/linux/timerlist.py
> index 8281da068c5b..249f0e804b24 100644
> --- a/scripts/gdb/linux/timerlist.py
> +++ b/scripts/gdb/linux/timerlist.py
> @@ -188,7 +188,8 @@ class LxTimerList(gdb.Command):
>           max_clock_bases = gdb.parse_and_eval("HRTIMER_MAX_CLOCK_BASES")
>   
>           text = "Timer List Version: gdb scripts\n"
> -        text += "HRTIMER_MAX_CLOCK_BASES: {}\n".format(max_clock_bases)
> +        text += "HRTIMER_MAX_CLOCK_BASES: {}\n".format(
> +            max_clock_bases.type.fields()[max_clock_bases].enumval)
>           text += "now at {} nsecs\n".format(ktime_get())
>   
>           for cpu in cpus.each_online_cpu():

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3
  2022-08-04  8:50   ` Peng Liu
@ 2022-08-22  9:30     ` Peng Liu
  2022-08-31  2:02       ` Peng Liu
  0 siblings, 1 reply; 12+ messages in thread
From: Peng Liu @ 2022-08-22  9:30 UTC (permalink / raw)
  To: jan.kiszka; +Cc: kbingham, linux-kernel, Peng Liu

ping

On 2022/8/4 16:50, Peng Liu wrote:
> ping
>
> On 2022/7/20 20:27, pngliu@hotmail.com wrote:
>> From: Peng Liu <liupeng17@lenovo.com>
>>
>> Below incompatibilities between Python2 and Python3 made lx-timerlist
>> fail to run under Python3.
>>
>> o xrange() is replaced by range() in Python3
>> o bytes and str are different types in Python3
>> o the return value of Inferior.read_memory() is memoryview object in
>>    Python3
>>
>> Signed-off-by: Peng Liu <liupeng17@lenovo.com>
>> ---
>>   scripts/gdb/linux/timerlist.py | 4 +++-
>>   scripts/gdb/linux/utils.py     | 5 ++++-
>>   2 files changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/scripts/gdb/linux/timerlist.py 
>> b/scripts/gdb/linux/timerlist.py
>> index 44e39dc3eb64..8281da068c5b 100644
>> --- a/scripts/gdb/linux/timerlist.py
>> +++ b/scripts/gdb/linux/timerlist.py
>> @@ -72,7 +72,7 @@ def print_cpu(hrtimer_bases, cpu, max_clock_bases):
>>       ts = cpus.per_cpu(tick_sched_ptr, cpu)
>>         text = "cpu: {}\n".format(cpu)
>> -    for i in xrange(max_clock_bases):
>> +    for i in range(max_clock_bases):
>>           text += " clock {}:\n".format(i)
>>           text += print_base(cpu_base['clock_base'][i])
>>   @@ -157,6 +157,8 @@ def pr_cpumask(mask):
>>       num_bytes = (nr_cpu_ids + 7) / 8
>>       buf = utils.read_memoryview(inf, bits, num_bytes).tobytes()
>>       buf = binascii.b2a_hex(buf)
>> +    if type(buf) is not str:
>> +        buf=buf.decode()
>>         chunks = []
>>       i = num_bytes
>> diff --git a/scripts/gdb/linux/utils.py b/scripts/gdb/linux/utils.py
>> index ff7c1799d588..db59f986c7fd 100644
>> --- a/scripts/gdb/linux/utils.py
>> +++ b/scripts/gdb/linux/utils.py
>> @@ -89,7 +89,10 @@ def get_target_endianness():
>>       def read_memoryview(inf, start, length):
>> -    return memoryview(inf.read_memory(start, length))
>> +    m = inf.read_memory(start, length)
>> +    if type(m) is memoryview:
>> +        return m
>> +    return memoryview(m)
>>       def read_u16(buffer, offset):

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing
  2022-08-04  8:50   ` Peng Liu
@ 2022-08-22  9:30     ` Peng Liu
  2022-08-31  2:02       ` Peng Liu
  0 siblings, 1 reply; 12+ messages in thread
From: Peng Liu @ 2022-08-22  9:30 UTC (permalink / raw)
  To: jan.kiszka; +Cc: kbingham, linux-kernel, Peng Liu

ping

On 2022/8/4 16:50, Peng Liu wrote:
>
> On 2022/7/20 20:27, pngliu@hotmail.com wrote:
>> From: Peng Liu <liupeng17@lenovo.com>
>>
>> HRTIMER_MAX_CLOCK_BASES is of enum type hrtimer_base_type. To print
>> it as an integer, HRTIMER_MAX_CLOCK_BASES should be converted first.
>>
>> Signed-off-by: Peng Liu <liupeng17@lenovo.com>
>> ---
>>   scripts/gdb/linux/timerlist.py | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/scripts/gdb/linux/timerlist.py 
>> b/scripts/gdb/linux/timerlist.py
>> index 8281da068c5b..249f0e804b24 100644
>> --- a/scripts/gdb/linux/timerlist.py
>> +++ b/scripts/gdb/linux/timerlist.py
>> @@ -188,7 +188,8 @@ class LxTimerList(gdb.Command):
>>           max_clock_bases = 
>> gdb.parse_and_eval("HRTIMER_MAX_CLOCK_BASES")
>>             text = "Timer List Version: gdb scripts\n"
>> -        text += "HRTIMER_MAX_CLOCK_BASES: {}\n".format(max_clock_bases)
>> +        text += "HRTIMER_MAX_CLOCK_BASES: {}\n".format(
>> + max_clock_bases.type.fields()[max_clock_bases].enumval)
>>           text += "now at {} nsecs\n".format(ktime_get())
>>             for cpu in cpus.each_online_cpu():

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3
  2022-08-22  9:30     ` Peng Liu
@ 2022-08-31  2:02       ` Peng Liu
  0 siblings, 0 replies; 12+ messages in thread
From: Peng Liu @ 2022-08-31  2:02 UTC (permalink / raw)
  To: kbingham; +Cc: jan.kiszka, linux-kernel, Peng Liu

ping

On 2022/8/22 17:30, Peng Liu wrote:
> ping
>
> On 2022/8/4 16:50, Peng Liu wrote:
>> ping
>>
>> On 2022/7/20 20:27, pngliu@hotmail.com wrote:
>>> From: Peng Liu <liupeng17@lenovo.com>
>>>
>>> Below incompatibilities between Python2 and Python3 made lx-timerlist
>>> fail to run under Python3.
>>>
>>> o xrange() is replaced by range() in Python3
>>> o bytes and str are different types in Python3
>>> o the return value of Inferior.read_memory() is memoryview object in
>>>    Python3
>>>
>>> Signed-off-by: Peng Liu <liupeng17@lenovo.com>
>>> ---
>>>   scripts/gdb/linux/timerlist.py | 4 +++-
>>>   scripts/gdb/linux/utils.py     | 5 ++++-
>>>   2 files changed, 7 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/scripts/gdb/linux/timerlist.py 
>>> b/scripts/gdb/linux/timerlist.py
>>> index 44e39dc3eb64..8281da068c5b 100644
>>> --- a/scripts/gdb/linux/timerlist.py
>>> +++ b/scripts/gdb/linux/timerlist.py
>>> @@ -72,7 +72,7 @@ def print_cpu(hrtimer_bases, cpu, max_clock_bases):
>>>       ts = cpus.per_cpu(tick_sched_ptr, cpu)
>>>         text = "cpu: {}\n".format(cpu)
>>> -    for i in xrange(max_clock_bases):
>>> +    for i in range(max_clock_bases):
>>>           text += " clock {}:\n".format(i)
>>>           text += print_base(cpu_base['clock_base'][i])
>>>   @@ -157,6 +157,8 @@ def pr_cpumask(mask):
>>>       num_bytes = (nr_cpu_ids + 7) / 8
>>>       buf = utils.read_memoryview(inf, bits, num_bytes).tobytes()
>>>       buf = binascii.b2a_hex(buf)
>>> +    if type(buf) is not str:
>>> +        buf=buf.decode()
>>>         chunks = []
>>>       i = num_bytes
>>> diff --git a/scripts/gdb/linux/utils.py b/scripts/gdb/linux/utils.py
>>> index ff7c1799d588..db59f986c7fd 100644
>>> --- a/scripts/gdb/linux/utils.py
>>> +++ b/scripts/gdb/linux/utils.py
>>> @@ -89,7 +89,10 @@ def get_target_endianness():
>>>       def read_memoryview(inf, start, length):
>>> -    return memoryview(inf.read_memory(start, length))
>>> +    m = inf.read_memory(start, length)
>>> +    if type(m) is memoryview:
>>> +        return m
>>> +    return memoryview(m)
>>>       def read_u16(buffer, offset):

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing
  2022-08-22  9:30     ` Peng Liu
@ 2022-08-31  2:02       ` Peng Liu
  0 siblings, 0 replies; 12+ messages in thread
From: Peng Liu @ 2022-08-31  2:02 UTC (permalink / raw)
  To: kbingham; +Cc: jan.kiszka, linux-kernel, Peng Liu

ping

On 2022/8/22 17:30, Peng Liu wrote:
> ping
>
> On 2022/8/4 16:50, Peng Liu wrote:
>>
>> On 2022/7/20 20:27, pngliu@hotmail.com wrote:
>>> From: Peng Liu <liupeng17@lenovo.com>
>>>
>>> HRTIMER_MAX_CLOCK_BASES is of enum type hrtimer_base_type. To print
>>> it as an integer, HRTIMER_MAX_CLOCK_BASES should be converted first.
>>>
>>> Signed-off-by: Peng Liu <liupeng17@lenovo.com>
>>> ---
>>>   scripts/gdb/linux/timerlist.py | 3 ++-
>>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/scripts/gdb/linux/timerlist.py 
>>> b/scripts/gdb/linux/timerlist.py
>>> index 8281da068c5b..249f0e804b24 100644
>>> --- a/scripts/gdb/linux/timerlist.py
>>> +++ b/scripts/gdb/linux/timerlist.py
>>> @@ -188,7 +188,8 @@ class LxTimerList(gdb.Command):
>>>           max_clock_bases = 
>>> gdb.parse_and_eval("HRTIMER_MAX_CLOCK_BASES")
>>>             text = "Timer List Version: gdb scripts\n"
>>> -        text += "HRTIMER_MAX_CLOCK_BASES: 
>>> {}\n".format(max_clock_bases)
>>> +        text += "HRTIMER_MAX_CLOCK_BASES: {}\n".format(
>>> + max_clock_bases.type.fields()[max_clock_bases].enumval)
>>>           text += "now at {} nsecs\n".format(ktime_get())
>>>             for cpu in cpus.each_online_cpu():

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3
  2022-07-20 12:27 ` [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3 pngliu
  2022-08-04  8:50   ` Peng Liu
@ 2022-08-31 15:01   ` Jan Kiszka
  2022-09-01  2:29     ` Peng Liu
  1 sibling, 1 reply; 12+ messages in thread
From: Jan Kiszka @ 2022-08-31 15:01 UTC (permalink / raw)
  To: pngliu, kbingham, Stephen Boyd; +Cc: linux-kernel, Peng Liu

On 20.07.22 14:27, pngliu@hotmail.com wrote:
> From: Peng Liu <liupeng17@lenovo.com>
> 
> Below incompatibilities between Python2 and Python3 made lx-timerlist
> fail to run under Python3.
> 
> o xrange() is replaced by range() in Python3
> o bytes and str are different types in Python3
> o the return value of Inferior.read_memory() is memoryview object in
>   Python3

Means this only ever worked with Python2? And we now hard-switch it to
Python3? Not voting against this, just confused if it was like this so far.

Jan

> 
> Signed-off-by: Peng Liu <liupeng17@lenovo.com>
> ---
>  scripts/gdb/linux/timerlist.py | 4 +++-
>  scripts/gdb/linux/utils.py     | 5 ++++-
>  2 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/gdb/linux/timerlist.py b/scripts/gdb/linux/timerlist.py
> index 44e39dc3eb64..8281da068c5b 100644
> --- a/scripts/gdb/linux/timerlist.py
> +++ b/scripts/gdb/linux/timerlist.py
> @@ -72,7 +72,7 @@ def print_cpu(hrtimer_bases, cpu, max_clock_bases):
>      ts = cpus.per_cpu(tick_sched_ptr, cpu)
>  
>      text = "cpu: {}\n".format(cpu)
> -    for i in xrange(max_clock_bases):
> +    for i in range(max_clock_bases):
>          text += " clock {}:\n".format(i)
>          text += print_base(cpu_base['clock_base'][i])
>  
> @@ -157,6 +157,8 @@ def pr_cpumask(mask):
>      num_bytes = (nr_cpu_ids + 7) / 8
>      buf = utils.read_memoryview(inf, bits, num_bytes).tobytes()
>      buf = binascii.b2a_hex(buf)
> +    if type(buf) is not str:
> +        buf=buf.decode()
>  
>      chunks = []
>      i = num_bytes
> diff --git a/scripts/gdb/linux/utils.py b/scripts/gdb/linux/utils.py
> index ff7c1799d588..db59f986c7fd 100644
> --- a/scripts/gdb/linux/utils.py
> +++ b/scripts/gdb/linux/utils.py
> @@ -89,7 +89,10 @@ def get_target_endianness():
>  
>  
>  def read_memoryview(inf, start, length):
> -    return memoryview(inf.read_memory(start, length))
> +    m = inf.read_memory(start, length)
> +    if type(m) is memoryview:
> +        return m
> +    return memoryview(m)
>  
>  
>  def read_u16(buffer, offset):

-- 
Siemens AG, Technology
Competence Center Embedded Linux

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing
  2022-07-20 12:27 ` [PATCH 3/3] scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing pngliu
  2022-08-04  8:50   ` Peng Liu
@ 2022-08-31 15:03   ` Jan Kiszka
  1 sibling, 0 replies; 12+ messages in thread
From: Jan Kiszka @ 2022-08-31 15:03 UTC (permalink / raw)
  To: pngliu, kbingham, Andrew Morton; +Cc: linux-kernel, Peng Liu, Stephen Boyd

On 20.07.22 14:27, pngliu@hotmail.com wrote:
> From: Peng Liu <liupeng17@lenovo.com>
> 
> HRTIMER_MAX_CLOCK_BASES is of enum type hrtimer_base_type. To print
> it as an integer, HRTIMER_MAX_CLOCK_BASES should be converted first.
> 
> Signed-off-by: Peng Liu <liupeng17@lenovo.com>
> ---
>  scripts/gdb/linux/timerlist.py | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/gdb/linux/timerlist.py b/scripts/gdb/linux/timerlist.py
> index 8281da068c5b..249f0e804b24 100644
> --- a/scripts/gdb/linux/timerlist.py
> +++ b/scripts/gdb/linux/timerlist.py
> @@ -188,7 +188,8 @@ class LxTimerList(gdb.Command):
>          max_clock_bases = gdb.parse_and_eval("HRTIMER_MAX_CLOCK_BASES")
>  
>          text = "Timer List Version: gdb scripts\n"
> -        text += "HRTIMER_MAX_CLOCK_BASES: {}\n".format(max_clock_bases)
> +        text += "HRTIMER_MAX_CLOCK_BASES: {}\n".format(
> +            max_clock_bases.type.fields()[max_clock_bases].enumval)
>          text += "now at {} nsecs\n".format(ktime_get())
>  
>          for cpu in cpus.each_online_cpu():

Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>

Jan

-- 
Siemens AG, Technology
Competence Center Embedded Linux

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3
  2022-08-31 15:01   ` Jan Kiszka
@ 2022-09-01  2:29     ` Peng Liu
  0 siblings, 0 replies; 12+ messages in thread
From: Peng Liu @ 2022-09-01  2:29 UTC (permalink / raw)
  To: Jan Kiszka, kbingham, Stephen Boyd; +Cc: linux-kernel, Peng Liu


On 2022/8/31 23:01, Jan Kiszka wrote:
> On 20.07.22 14:27, pngliu@hotmail.com wrote:
>> From: Peng Liu <liupeng17@lenovo.com>
>>
>> Below incompatibilities between Python2 and Python3 made lx-timerlist
>> fail to run under Python3.
>>
>> o xrange() is replaced by range() in Python3
>> o bytes and str are different types in Python3
>> o the return value of Inferior.read_memory() is memoryview object in
>>    Python3
> Means this only ever worked with Python2? And we now hard-switch it to
> Python3? Not voting against this, just confused if it was like this so far.
>
> Jan
I think so. I tried the other gdb scripts and they worked for both python2
and python3. I guess timerlist.py was initially tested only with a gdb
with python2 support built in but not one with python3 support built in.
>> Signed-off-by: Peng Liu <liupeng17@lenovo.com>
>> ---
>>   scripts/gdb/linux/timerlist.py | 4 +++-
>>   scripts/gdb/linux/utils.py     | 5 ++++-
>>   2 files changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/scripts/gdb/linux/timerlist.py b/scripts/gdb/linux/timerlist.py
>> index 44e39dc3eb64..8281da068c5b 100644
>> --- a/scripts/gdb/linux/timerlist.py
>> +++ b/scripts/gdb/linux/timerlist.py
>> @@ -72,7 +72,7 @@ def print_cpu(hrtimer_bases, cpu, max_clock_bases):
>>       ts = cpus.per_cpu(tick_sched_ptr, cpu)
>>   
>>       text = "cpu: {}\n".format(cpu)
>> -    for i in xrange(max_clock_bases):
>> +    for i in range(max_clock_bases):
>>           text += " clock {}:\n".format(i)
>>           text += print_base(cpu_base['clock_base'][i])
>>   
>> @@ -157,6 +157,8 @@ def pr_cpumask(mask):
>>       num_bytes = (nr_cpu_ids + 7) / 8
>>       buf = utils.read_memoryview(inf, bits, num_bytes).tobytes()
>>       buf = binascii.b2a_hex(buf)
>> +    if type(buf) is not str:
>> +        buf=buf.decode()
>>   
>>       chunks = []
>>       i = num_bytes
>> diff --git a/scripts/gdb/linux/utils.py b/scripts/gdb/linux/utils.py
>> index ff7c1799d588..db59f986c7fd 100644
>> --- a/scripts/gdb/linux/utils.py
>> +++ b/scripts/gdb/linux/utils.py
>> @@ -89,7 +89,10 @@ def get_target_endianness():
>>   
>>   
>>   def read_memoryview(inf, start, length):
>> -    return memoryview(inf.read_memory(start, length))
>> +    m = inf.read_memory(start, length)
>> +    if type(m) is memoryview:
>> +        return m
>> +    return memoryview(m)
>>   
>>   
>>   def read_u16(buffer, offset):

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3
@ 2023-03-21  6:19 Peng Liu
  0 siblings, 0 replies; 12+ messages in thread
From: Peng Liu @ 2023-03-21  6:19 UTC (permalink / raw)
  Cc: jan.kiszka, kbingham, akpm, linux-kernel, liupeng17

From: Peng Liu <liupeng17@lenovo.com>

Below incompatibilities between Python2 and Python3 made lx-timerlist
fail to run under Python3.

o xrange() is replaced by range() in Python3
o bytes and str are different types in Python3
o the return value of Inferior.read_memory() is memoryview object in
  Python3

Signed-off-by: Peng Liu <liupeng17@lenovo.com>
Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 scripts/gdb/linux/timerlist.py | 4 +++-
 scripts/gdb/linux/utils.py     | 5 ++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/scripts/gdb/linux/timerlist.py b/scripts/gdb/linux/timerlist.py
index 44e39dc3eb64..8281da068c5b 100644
--- a/scripts/gdb/linux/timerlist.py
+++ b/scripts/gdb/linux/timerlist.py
@@ -72,7 +72,7 @@ def print_cpu(hrtimer_bases, cpu, max_clock_bases):
     ts = cpus.per_cpu(tick_sched_ptr, cpu)
 
     text = "cpu: {}\n".format(cpu)
-    for i in xrange(max_clock_bases):
+    for i in range(max_clock_bases):
         text += " clock {}:\n".format(i)
         text += print_base(cpu_base['clock_base'][i])
 
@@ -157,6 +157,8 @@ def pr_cpumask(mask):
     num_bytes = (nr_cpu_ids + 7) / 8
     buf = utils.read_memoryview(inf, bits, num_bytes).tobytes()
     buf = binascii.b2a_hex(buf)
+    if type(buf) is not str:
+        buf=buf.decode()
 
     chunks = []
     i = num_bytes
diff --git a/scripts/gdb/linux/utils.py b/scripts/gdb/linux/utils.py
index 1553f68716cc..7f36aee32ac6 100644
--- a/scripts/gdb/linux/utils.py
+++ b/scripts/gdb/linux/utils.py
@@ -88,7 +88,10 @@ def get_target_endianness():
 
 
 def read_memoryview(inf, start, length):
-    return memoryview(inf.read_memory(start, length))
+    m = inf.read_memory(start, length)
+    if type(m) is memoryview:
+        return m
+    return memoryview(m)
 
 
 def read_u16(buffer, offset):
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-03-21  6:19 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20220720122711.6174-1-pngliu@hotmail.com>
2022-07-20 12:27 ` [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3 pngliu
2022-08-04  8:50   ` Peng Liu
2022-08-22  9:30     ` Peng Liu
2022-08-31  2:02       ` Peng Liu
2022-08-31 15:01   ` Jan Kiszka
2022-09-01  2:29     ` Peng Liu
2022-07-20 12:27 ` [PATCH 3/3] scripts/gdb: fix lx-timerlist for HRTIMER_MAX_CLOCK_BASES printing pngliu
2022-08-04  8:50   ` Peng Liu
2022-08-22  9:30     ` Peng Liu
2022-08-31  2:02       ` Peng Liu
2022-08-31 15:03   ` Jan Kiszka
2023-03-21  6:19 [PATCH 2/3] scripts/gdb: fix lx-timerlist for Python3 Peng Liu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.