All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
To: Adrian Hunter <adrian.hunter@intel.com>, Tony Jones <tonyj@suse.de>
Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
Subject: Re: [PATCH 06/15] perf script python: add Python3 support to intel-pt-events.py
Date: Mon, 25 Feb 2019 11:03:12 -0300	[thread overview]
Message-ID: <20190225140312.GD31136@kernel.org> (raw)
In-Reply-To: <1cc3561f-604f-6f01-147c-89deb07d3410@intel.com>

Em Mon, Feb 25, 2019 at 09:07:03AM +0200, Adrian Hunter escreveu:
> On 23/02/19 1:06 AM, Tony Jones wrote:
> > Support both Python2 and Python3 in the intel-pt-events.py script
> > 
> > There may be differences in the ordering of output lines due to
> > differences in dictionary ordering etc.  However the format within lines
> > should be unchanged.
> > 
> > Fix space/tab inconsistency as python3 enforces consistency.
> 
> It would be better for the white space changes to be a separate patch.
> 
> But I am not in favour of using spaces instead of tabs because it is the
> opposite of what we tend to do with C.
> 
> Arnaldo, can you provide a guideline on this?

Yeah, please separate things, this would help me now to pick the
uncontroversial part while we discuss the other.

And I'm in favour of being consistent with what we do for C code, i.e.
use TABs.

I'm now processing the other patches.

- Arnaldo
 
> > 
> > The use of 'from __future__' implies the minimum supported Python2 version
> > is now v2.6
> > 
> > Signed-off-by: Tony Jones <tonyj@suse.de>
> > Signed-off-by: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
> > Cc: Adrian Hunter <adrian.hunter@intel.com>
> > ---
> >  tools/perf/scripts/python/intel-pt-events.py | 138 ++++++++++---------
> >  1 file changed, 70 insertions(+), 68 deletions(-)
> > 
> > diff --git a/tools/perf/scripts/python/intel-pt-events.py b/tools/perf/scripts/python/intel-pt-events.py
> > index b19172d673af..aef54566af61 100644
> > --- a/tools/perf/scripts/python/intel-pt-events.py
> > +++ b/tools/perf/scripts/python/intel-pt-events.py
> > @@ -10,79 +10,81 @@
> >  # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> >  # more details.
> >  
> > +from __future__ import print_function
> > +
> >  import os
> >  import sys
> >  import struct
> >  
> >  sys.path.append(os.environ['PERF_EXEC_PATH'] + \
> > -	'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
> > +        '/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
> >  
> >  # These perf imports are not used at present
> >  #from perf_trace_context import *
> >  #from Core import *
> >  
> >  def trace_begin():
> > -	print "Intel PT Power Events and PTWRITE"
> > +        print("Intel PT Power Events and PTWRITE")
> >  
> >  def trace_end():
> > -	print "End"
> > +        print("End")
> >  
> >  def trace_unhandled(event_name, context, event_fields_dict):
> > -		print ' '.join(['%s=%s'%(k,str(v))for k,v in sorted(event_fields_dict.items())])
> > +        print(' '.join(['%s=%s'%(k,str(v))for k,v in sorted(event_fields_dict.items())]))
> >  
> >  def print_ptwrite(raw_buf):
> > -	data = struct.unpack_from("<IQ", raw_buf)
> > -	flags = data[0]
> > -	payload = data[1]
> > -	exact_ip = flags & 1
> > -	print "IP: %u payload: %#x" % (exact_ip, payload),
> > +        data = struct.unpack_from("<IQ", raw_buf)
> > +        flags = data[0]
> > +        payload = data[1]
> > +        exact_ip = flags & 1
> > +        print("IP: %u payload: %#x" % (exact_ip, payload), end='')
> >  
> >  def print_cbr(raw_buf):
> > -	data = struct.unpack_from("<BBBBII", raw_buf)
> > -	cbr = data[0]
> > -	f = (data[4] + 500) / 1000
> > -	p = ((cbr * 1000 / data[2]) + 5) / 10
> > -	print "%3u  freq: %4u MHz  (%3u%%)" % (cbr, f, p),
> > +        data = struct.unpack_from("<BBBBII", raw_buf)
> > +        cbr = data[0]
> > +        f = (data[4] + 500) / 1000
> > +        p = ((cbr * 1000 / data[2]) + 5) / 10
> > +        print("%3u  freq: %4u MHz  (%3u%%)" % (cbr, f, p), end='')
> >  
> >  def print_mwait(raw_buf):
> > -	data = struct.unpack_from("<IQ", raw_buf)
> > -	payload = data[1]
> > -	hints = payload & 0xff
> > -	extensions = (payload >> 32) & 0x3
> > -	print "hints: %#x extensions: %#x" % (hints, extensions),
> > +        data = struct.unpack_from("<IQ", raw_buf)
> > +        payload = data[1]
> > +        hints = payload & 0xff
> > +        extensions = (payload >> 32) & 0x3
> > +        print("hints: %#x extensions: %#x" % (hints, extensions), end='')
> >  
> >  def print_pwre(raw_buf):
> > -	data = struct.unpack_from("<IQ", raw_buf)
> > -	payload = data[1]
> > -	hw = (payload >> 7) & 1
> > -	cstate = (payload >> 12) & 0xf
> > -	subcstate = (payload >> 8) & 0xf
> > -	print "hw: %u cstate: %u sub-cstate: %u" % (hw, cstate, subcstate),
> > +        data = struct.unpack_from("<IQ", raw_buf)
> > +        payload = data[1]
> > +        hw = (payload >> 7) & 1
> > +        cstate = (payload >> 12) & 0xf
> > +        subcstate = (payload >> 8) & 0xf
> > +        print("hw: %u cstate: %u sub-cstate: %u" % (hw, cstate, subcstate), end='')
> >  
> >  def print_exstop(raw_buf):
> > -	data = struct.unpack_from("<I", raw_buf)
> > -	flags = data[0]
> > -	exact_ip = flags & 1
> > -	print "IP: %u" % (exact_ip),
> > +        data = struct.unpack_from("<I", raw_buf)
> > +        flags = data[0]
> > +        exact_ip = flags & 1
> > +        print("IP: %u" % (exact_ip), end='')
> >  
> >  def print_pwrx(raw_buf):
> > -	data = struct.unpack_from("<IQ", raw_buf)
> > -	payload = data[1]
> > -	deepest_cstate = payload & 0xf
> > -	last_cstate = (payload >> 4) & 0xf
> > -	wake_reason = (payload >> 8) & 0xf
> > -	print "deepest cstate: %u last cstate: %u wake reason: %#x" % (deepest_cstate, last_cstate, wake_reason),
> > +        data = struct.unpack_from("<IQ", raw_buf)
> > +        payload = data[1]
> > +        deepest_cstate = payload & 0xf
> > +        last_cstate = (payload >> 4) & 0xf
> > +        wake_reason = (payload >> 8) & 0xf
> > +        print("deepest cstate: %u last cstate: %u wake reason: %#x" % (deepest_cstate, last_cstate, wake_reason), end='')
> >  
> >  def print_common_start(comm, sample, name):
> > -	ts = sample["time"]
> > -	cpu = sample["cpu"]
> > -	pid = sample["pid"]
> > -	tid = sample["tid"]
> > -	print "%16s %5u/%-5u [%03u] %9u.%09u %7s:" % (comm, pid, tid, cpu, ts / 1000000000, ts %1000000000, name),
> > +        ts = sample["time"]
> > +        cpu = sample["cpu"]
> > +        pid = sample["pid"]
> > +        tid = sample["tid"]
> > +        print("%16s %5u/%-5u [%03u] %9u.%09u %7s:" % (comm, pid, tid, cpu, ts / 1000000000, ts %1000000000, name), end='')
> >  
> >  def print_common_ip(sample, symbol, dso):
> > -	ip = sample["ip"]
> > -	print "%16x %s (%s)" % (ip, symbol, dso)
> > +        ip = sample["ip"]
> > +        print("%16x %s (%s)" % (ip, symbol, dso))
> >  
> >  def process_event(param_dict):
> >          event_attr = param_dict["attr"]
> > @@ -92,37 +94,37 @@ def process_event(param_dict):
> >          name       = param_dict["ev_name"]
> >  
> >          # Symbol and dso info are not always resolved
> > -        if (param_dict.has_key("dso")):
> > +        if "dso" in param_dict:
> >                  dso = param_dict["dso"]
> >          else:
> >                  dso = "[unknown]"
> >  
> > -        if (param_dict.has_key("symbol")):
> > +        if "symbol" in param_dict:
> >                  symbol = param_dict["symbol"]
> >          else:
> >                  symbol = "[unknown]"
> >  
> > -	if name == "ptwrite":
> > -		print_common_start(comm, sample, name)
> > -		print_ptwrite(raw_buf)
> > -		print_common_ip(sample, symbol, dso)
> > -	elif name == "cbr":
> > -		print_common_start(comm, sample, name)
> > -		print_cbr(raw_buf)
> > -		print_common_ip(sample, symbol, dso)
> > -	elif name == "mwait":
> > -		print_common_start(comm, sample, name)
> > -		print_mwait(raw_buf)
> > -		print_common_ip(sample, symbol, dso)
> > -	elif name == "pwre":
> > -		print_common_start(comm, sample, name)
> > -		print_pwre(raw_buf)
> > -		print_common_ip(sample, symbol, dso)
> > -	elif name == "exstop":
> > -		print_common_start(comm, sample, name)
> > -		print_exstop(raw_buf)
> > -		print_common_ip(sample, symbol, dso)
> > -	elif name == "pwrx":
> > -		print_common_start(comm, sample, name)
> > -		print_pwrx(raw_buf)
> > -		print_common_ip(sample, symbol, dso)
> > +        if name == "ptwrite":
> > +                print_common_start(comm, sample, name)
> > +                print_ptwrite(raw_buf)
> > +                print_common_ip(sample, symbol, dso)
> > +        elif name == "cbr":
> > +                print_common_start(comm, sample, name)
> > +                print_cbr(raw_buf)
> > +                print_common_ip(sample, symbol, dso)
> > +        elif name == "mwait":
> > +                print_common_start(comm, sample, name)
> > +                print_mwait(raw_buf)
> > +                print_common_ip(sample, symbol, dso)
> > +        elif name == "pwre":
> > +                print_common_start(comm, sample, name)
> > +                print_pwre(raw_buf)
> > +                print_common_ip(sample, symbol, dso)
> > +        elif name == "exstop":
> > +                print_common_start(comm, sample, name)
> > +                print_exstop(raw_buf)
> > +                print_common_ip(sample, symbol, dso)
> > +        elif name == "pwrx":
> > +                print_common_start(comm, sample, name)
> > +                print_pwrx(raw_buf)
> > +                print_common_ip(sample, symbol, dso)
> > 

-- 

- Arnaldo

  reply	other threads:[~2019-02-25 14:03 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-22 23:06 [PATCH 00/15] perf script python: add Python3 support Tony Jones
2019-02-22 23:06 ` [PATCH 01/15] perf script python: add Python3 support to netdev-times.py Tony Jones
2019-02-28  8:06   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 02/15] perf script python: add Python3 support to check-perf-trace.py Tony Jones
2019-02-25 14:05   ` Arnaldo Carvalho de Melo
2019-02-25 18:05     ` Tony Jones
2019-02-22 23:06 ` [PATCH 03/15] perf script python: add Python3 support to event_analyzing_sample.py Tony Jones
2019-02-25 14:08   ` Arnaldo Carvalho de Melo
2019-02-22 23:06 ` [PATCH 04/15] perf script python: add Python3 support to failed-syscalls-by-pid.py Tony Jones
2019-02-25 14:09   ` Arnaldo Carvalho de Melo
2019-02-28  8:06   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 05/15] perf script python: add Python3 support to futex-contention.py Tony Jones
2019-02-22 23:06 ` [PATCH 06/15] perf script python: add Python3 support to intel-pt-events.py Tony Jones
2019-02-25  7:07   ` Adrian Hunter
2019-02-25 14:03     ` Arnaldo Carvalho de Melo [this message]
2019-02-25 17:18       ` Tony Jones
2019-02-22 23:06 ` [PATCH 07/15] perf script python: add Python3 support to mem-phys-addr.py Tony Jones
2019-02-28  8:07   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 08/15] perf script python: add Python3 support to net_dropmonitor.py Tony Jones
2019-02-25 12:37   ` Neil Horman
2019-02-25 14:43     ` Arnaldo Carvalho de Melo
2019-02-28  8:08   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 09/15] perf script python: add Python3 support to powerpc-hcalls.py Tony Jones
2019-02-25 14:44   ` Arnaldo Carvalho de Melo
2019-02-28  8:08   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 10/15] perf script python: add Python3 support to sctop.py Tony Jones
2019-02-25 14:44   ` Arnaldo Carvalho de Melo
2019-02-28  8:09   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 11/15] perf script python: add Python3 support to stackcollapse.py Tony Jones
2019-02-25 14:46   ` Arnaldo Carvalho de Melo
2019-02-28  8:09   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 12/15] perf script python: add Python3 support to stat-cpi.py Tony Jones
2019-02-25 14:46   ` Arnaldo Carvalho de Melo
2019-02-28  8:10   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 13/15] perf script python: add Python3 support to syscall-counts.py Tony Jones
2019-02-25 14:47   ` Arnaldo Carvalho de Melo
2019-02-28  8:11   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 14/15] perf script python: add Python3 support to syscall-counts-by-pid.py Tony Jones
2019-02-25 14:48   ` Arnaldo Carvalho de Melo
2019-02-28  8:11   ` [tip:perf/core] perf script python: Add " tip-bot for Tony Jones
2019-02-22 23:06 ` [PATCH 15/15] perf script python: add Python3 support to sql scripts Tony Jones
2019-02-25 14:51   ` Arnaldo Carvalho de Melo
2019-02-25 14:54     ` Arnaldo Carvalho de Melo
2019-02-25 17:20       ` Tony Jones
2019-02-23 21:06 ` [PATCH 00/15] perf script python: add Python3 support Tony Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190225140312.GD31136@kernel.org \
    --to=arnaldo.melo@gmail.com \
    --cc=adrian.hunter@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=s1seetee@linux.vnet.ibm.com \
    --cc=tonyj@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.