[PATCH 09/10] perf python: Add tracepoint example

2016-07-10 Thread Jiri Olsa
To show how to open tracepoint and access its fields.

Reported-and-tested-by: Jiri Pirko 
Link: http://lkml.kernel.org/n/tip-7xt9nvyl45qwbg9237f46...@git.kernel.org
Signed-off-by: Jiri Olsa 
---
 tools/perf/python/tracepoint.py | 47 +
 1 file changed, 47 insertions(+)
 create mode 100755 tools/perf/python/tracepoint.py

diff --git a/tools/perf/python/tracepoint.py b/tools/perf/python/tracepoint.py
new file mode 100755
index ..eb4dbed57de7
--- /dev/null
+++ b/tools/perf/python/tracepoint.py
@@ -0,0 +1,47 @@
+#! /usr/bin/python
+# -*- python -*-
+# -*- coding: utf-8 -*-
+
+import perf
+
+class tracepoint(perf.evsel):
+def __init__(self, sys, name):
+config = perf.tracepoint(sys, name)
+perf.evsel.__init__(self,
+type   = perf.TYPE_TRACEPOINT,
+config = config,
+freq = 0, sample_period = 1, wakeup_events = 1,
+sample_type = perf.SAMPLE_PERIOD | perf.SAMPLE_TID 
| perf.SAMPLE_CPU | perf.SAMPLE_RAW | perf.SAMPLE_TIME)
+
+def main():
+tp  = tracepoint("sched", "sched_switch")
+cpus= perf.cpu_map()
+threads = perf.thread_map(-1)
+
+evlist = perf.evlist(cpus, threads)
+evlist.add(tp)
+evlist.open()
+evlist.mmap()
+
+while True:
+evlist.poll(timeout = -1)
+for cpu in cpus:
+event = evlist.read_on_cpu(cpu)
+if not event:
+continue
+
+if not isinstance(event, perf.sample_event):
+continue
+
+print "time %u prev_comm=%s prev_pid=%d prev_prio=%d 
prev_state=0x%x ==> next_comm=%s next_pid=%d next_prio=%d" % (
+   event.sample_time,
+   event.prev_comm,
+   event.prev_pid,
+   event.prev_prio,
+   event.prev_state,
+   event.next_comm,
+   event.next_pid,
+   event.next_prio)
+
+if __name__ == '__main__':
+main()
-- 
2.4.11



[PATCH 09/10] perf python: Add tracepoint example

2016-07-10 Thread Jiri Olsa
To show how to open tracepoint and access its fields.

Reported-and-tested-by: Jiri Pirko 
Link: http://lkml.kernel.org/n/tip-7xt9nvyl45qwbg9237f46...@git.kernel.org
Signed-off-by: Jiri Olsa 
---
 tools/perf/python/tracepoint.py | 47 +
 1 file changed, 47 insertions(+)
 create mode 100755 tools/perf/python/tracepoint.py

diff --git a/tools/perf/python/tracepoint.py b/tools/perf/python/tracepoint.py
new file mode 100755
index ..eb4dbed57de7
--- /dev/null
+++ b/tools/perf/python/tracepoint.py
@@ -0,0 +1,47 @@
+#! /usr/bin/python
+# -*- python -*-
+# -*- coding: utf-8 -*-
+
+import perf
+
+class tracepoint(perf.evsel):
+def __init__(self, sys, name):
+config = perf.tracepoint(sys, name)
+perf.evsel.__init__(self,
+type   = perf.TYPE_TRACEPOINT,
+config = config,
+freq = 0, sample_period = 1, wakeup_events = 1,
+sample_type = perf.SAMPLE_PERIOD | perf.SAMPLE_TID 
| perf.SAMPLE_CPU | perf.SAMPLE_RAW | perf.SAMPLE_TIME)
+
+def main():
+tp  = tracepoint("sched", "sched_switch")
+cpus= perf.cpu_map()
+threads = perf.thread_map(-1)
+
+evlist = perf.evlist(cpus, threads)
+evlist.add(tp)
+evlist.open()
+evlist.mmap()
+
+while True:
+evlist.poll(timeout = -1)
+for cpu in cpus:
+event = evlist.read_on_cpu(cpu)
+if not event:
+continue
+
+if not isinstance(event, perf.sample_event):
+continue
+
+print "time %u prev_comm=%s prev_pid=%d prev_prio=%d 
prev_state=0x%x ==> next_comm=%s next_pid=%d next_prio=%d" % (
+   event.sample_time,
+   event.prev_comm,
+   event.prev_pid,
+   event.prev_prio,
+   event.prev_state,
+   event.next_comm,
+   event.next_pid,
+   event.next_prio)
+
+if __name__ == '__main__':
+main()
-- 
2.4.11