Linux Perf
check-perf-trace.py
Go to the documentation of this file.
1 # perf script event handlers, generated by perf script -g python
2 # (c) 2010, Tom Zanussi <tzanussi@gmail.com>
3 # Licensed under the terms of the GNU GPL License version 2
4 #
5 # This script tests basic functionality such as flag and symbol
6 # strings, common_xxx() calls back into perf, begin, end, unhandled
7 # events, etc. Basically, if this script runs successfully and
8 # displays expected results, Python scripting support should be ok.
9 
10 import os
11 import sys
12 
13 sys.path.append(os.environ['PERF_EXEC_PATH'] + \
14  '/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
15 
16 from Core import *
17 from perf_trace_context import *
18 
19 unhandled = autodict()
20 
22  print "trace_begin"
23  pass
24 
25 def trace_end():
27 
28 def irq__softirq_entry(event_name, context, common_cpu,
29  common_secs, common_nsecs, common_pid, common_comm,
30  common_callchain, vec):
31  print_header(event_name, common_cpu, common_secs, common_nsecs,
32  common_pid, common_comm)
33 
34  print_uncommon(context)
35 
36  print "vec=%s\n" % \
37  (symbol_str("irq__softirq_entry", "vec", vec)),
38 
39 def kmem__kmalloc(event_name, context, common_cpu,
40  common_secs, common_nsecs, common_pid, common_comm,
41  common_callchain, call_site, ptr, bytes_req, bytes_alloc,
42  gfp_flags):
43  print_header(event_name, common_cpu, common_secs, common_nsecs,
44  common_pid, common_comm)
45 
46  print_uncommon(context)
47 
48  print "call_site=%u, ptr=%u, bytes_req=%u, " \
49  "bytes_alloc=%u, gfp_flags=%s\n" % \
50  (call_site, ptr, bytes_req, bytes_alloc,
51 
52  flag_str("kmem__kmalloc", "gfp_flags", gfp_flags)),
53 
54 def trace_unhandled(event_name, context, event_fields_dict):
55  try:
56  unhandled[event_name] += 1
57  except TypeError:
58  unhandled[event_name] = 1
59 
60 def print_header(event_name, cpu, secs, nsecs, pid, comm):
61  print "%-20s %5u %05u.%09u %8u %-20s " % \
62  (event_name, cpu, secs, nsecs, pid, comm),
63 
64 # print trace fields not included in handler args
65 def print_uncommon(context):
66  print "common_preempt_count=%d, common_flags=%s, common_lock_depth=%d, " \
67  % (common_pc(context), trace_flag_str(common_flags(context)), \
68  common_lock_depth(context))
69 
71  keys = unhandled.keys()
72  if not keys:
73  return
74 
75  print "\nunhandled events:\n\n",
76 
77  print "%-40s %10s\n" % ("event", "count"),
78  print "%-40s %10s\n" % ("----------------------------------------", \
79  "-----------"),
80 
81  for event_name in keys:
82  print "%-40s %10d\n" % (event_name, unhandled[event_name])
int common_flags(struct scripting_context *context)
int common_pc(struct scripting_context *context)
def print_header(event_name, cpu, secs, nsecs, pid, comm)
def flag_str(event_name, field_name, value)
Definition: Core.py:30
def trace_flag_str(value)
Definition: Core.py:73
def trace_unhandled(event_name, context, event_fields_dict)
int common_lock_depth(struct scripting_context *context)
def print_uncommon(context)
def symbol_str(event_name, field_name, value)
Definition: Core.py:50
def autodict()
Definition: Core.py:11
def kmem__kmalloc(event_name, context, common_cpu, common_secs, common_nsecs, common_pid, common_comm, common_callchain, call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
def irq__softirq_entry(event_name, context, common_cpu, common_secs, common_nsecs, common_pid, common_comm, common_callchain, vec)