xref: /openbmc/linux/tools/perf/python/tracepoint.py (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1c25ce589SFinn Behrens#! /usr/bin/env python
2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
39881d7dfSJiri Olsa# -*- python -*-
49881d7dfSJiri Olsa# -*- coding: utf-8 -*-
59881d7dfSJiri Olsa
69881d7dfSJiri Olsaimport perf
79881d7dfSJiri Olsa
89881d7dfSJiri Olsaclass tracepoint(perf.evsel):
99881d7dfSJiri Olsa    def __init__(self, sys, name):
109881d7dfSJiri Olsa        config = perf.tracepoint(sys, name)
119881d7dfSJiri Olsa        perf.evsel.__init__(self,
129881d7dfSJiri Olsa                            type   = perf.TYPE_TRACEPOINT,
139881d7dfSJiri Olsa                            config = config,
149881d7dfSJiri Olsa                            freq = 0, sample_period = 1, wakeup_events = 1,
159881d7dfSJiri Olsa                            sample_type = perf.SAMPLE_PERIOD | perf.SAMPLE_TID | perf.SAMPLE_CPU | perf.SAMPLE_RAW | perf.SAMPLE_TIME)
169881d7dfSJiri Olsa
179881d7dfSJiri Olsadef main():
189881d7dfSJiri Olsa    tp      = tracepoint("sched", "sched_switch")
199881d7dfSJiri Olsa    cpus    = perf.cpu_map()
209881d7dfSJiri Olsa    threads = perf.thread_map(-1)
219881d7dfSJiri Olsa
229881d7dfSJiri Olsa    evlist = perf.evlist(cpus, threads)
239881d7dfSJiri Olsa    evlist.add(tp)
249881d7dfSJiri Olsa    evlist.open()
259881d7dfSJiri Olsa    evlist.mmap()
269881d7dfSJiri Olsa
279881d7dfSJiri Olsa    while True:
289881d7dfSJiri Olsa        evlist.poll(timeout = -1)
299881d7dfSJiri Olsa        for cpu in cpus:
309881d7dfSJiri Olsa            event = evlist.read_on_cpu(cpu)
319881d7dfSJiri Olsa            if not event:
329881d7dfSJiri Olsa                continue
339881d7dfSJiri Olsa
349881d7dfSJiri Olsa            if not isinstance(event, perf.sample_event):
359881d7dfSJiri Olsa                continue
369881d7dfSJiri Olsa
37*7e2022afSTanu M            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" % (
389881d7dfSJiri Olsa                   event.sample_time,
399881d7dfSJiri Olsa                   event.prev_comm,
409881d7dfSJiri Olsa                   event.prev_pid,
419881d7dfSJiri Olsa                   event.prev_prio,
429881d7dfSJiri Olsa                   event.prev_state,
439881d7dfSJiri Olsa                   event.next_comm,
449881d7dfSJiri Olsa                   event.next_pid,
45*7e2022afSTanu M                   event.next_prio))
469881d7dfSJiri Olsa
479881d7dfSJiri Olsaif __name__ == '__main__':
489881d7dfSJiri Olsa    main()
49