1 #! /usr/bin/env python !! 1 #! /usr/bin/python 2 # SPDX-License-Identifier: GPL-2.0 << 3 # -*- python -*- 2 # -*- python -*- 4 # -*- coding: utf-8 -*- 3 # -*- coding: utf-8 -*- 5 4 6 import perf 5 import perf 7 6 8 class tracepoint(perf.evsel): 7 class tracepoint(perf.evsel): 9 def __init__(self, sys, name): 8 def __init__(self, sys, name): 10 config = perf.tracepoint(sys, name) 9 config = perf.tracepoint(sys, name) 11 perf.evsel.__init__(self, 10 perf.evsel.__init__(self, 12 type = perf.TYPE 11 type = perf.TYPE_TRACEPOINT, 13 config = config, 12 config = config, 14 freq = 0, sample_p 13 freq = 0, sample_period = 1, wakeup_events = 1, 15 sample_type = perf 14 sample_type = perf.SAMPLE_PERIOD | perf.SAMPLE_TID | perf.SAMPLE_CPU | perf.SAMPLE_RAW | perf.SAMPLE_TIME) 16 15 17 def main(): 16 def main(): 18 tp = tracepoint("sched", "sched_switc 17 tp = tracepoint("sched", "sched_switch") 19 cpus = perf.cpu_map() 18 cpus = perf.cpu_map() 20 threads = perf.thread_map(-1) 19 threads = perf.thread_map(-1) 21 20 22 evlist = perf.evlist(cpus, threads) 21 evlist = perf.evlist(cpus, threads) 23 evlist.add(tp) 22 evlist.add(tp) 24 evlist.open() 23 evlist.open() 25 evlist.mmap() 24 evlist.mmap() 26 25 27 while True: 26 while True: 28 evlist.poll(timeout = -1) 27 evlist.poll(timeout = -1) 29 for cpu in cpus: 28 for cpu in cpus: 30 event = evlist.read_on_cpu(cpu) 29 event = evlist.read_on_cpu(cpu) 31 if not event: 30 if not event: 32 continue 31 continue 33 32 34 if not isinstance(event, perf.samp 33 if not isinstance(event, perf.sample_event): 35 continue 34 continue 36 35 37 print("time %u prev_comm=%s prev_p !! 36 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" % ( 38 event.sample_time, 37 event.sample_time, 39 event.prev_comm, 38 event.prev_comm, 40 event.prev_pid, 39 event.prev_pid, 41 event.prev_prio, 40 event.prev_prio, 42 event.prev_state, 41 event.prev_state, 43 event.next_comm, 42 event.next_comm, 44 event.next_pid, 43 event.next_pid, 45 event.next_prio)) !! 44 event.next_prio) 46 45 47 if __name__ == '__main__': 46 if __name__ == '__main__': 48 main() 47 main()
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.