mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-02 08:11:32 -04:00
Add event APIs for the tracepoint PMU allowing things like perf list
to function using it. For perf list add the tracepoint format in the
long description (shown with -v).
$ sudo perf list -v tracepoint
List of pre-defined events (to be used in -e or -M):
alarmtimer:alarmtimer_cancel [Tracepoint event]
[name: alarmtimer_cancel
ID: 416
format:
field:unsigned short common_type; offset:0; size:2; signed:0;
field:unsigned char common_flags; offset:2; size:1; signed:0;
field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
field:int common_pid; offset:4; size:4; signed:1;
field:void * alarm; offset:8; size:8; signed:0;
field:unsigned char alarm_type; offset:16; size:1; signed:0;
field:s64 expires; offset:24; size:8; signed:1;
field:s64 now; offset:32; size:8; signed:1;
print fmt: "alarmtimer:%p type:%s expires:%llu now:%llu",REC->alarm,__print_flags((1 << REC->alarm_type)," | ",{ 1 << 0,
"REALTIME" },{ 1 << 1,"BOOTTIME" },{ 1 << 3,"REALTIME Freezer" },{ 1 << 4,"BOOTTIME Freezer" }),REC->expires,REC->now
. Unit: tracepoint]
alarmtimer:alarmtimer_fired [Tracepoint event]
[name: alarmtimer_fired
ID: 418
...
Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: https://lore.kernel.org/r/20250725185202.68671-6-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
20 lines
754 B
C
20 lines
754 B
C
/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
|
|
#ifndef __TP_PMU_H
|
|
#define __TP_PMU_H
|
|
|
|
#include "pmu.h"
|
|
|
|
typedef int (*tp_sys_callback)(void *state, const char *sys_name);
|
|
typedef int (*tp_event_callback)(void *state, const char *sys_name, const char *evt_name);
|
|
|
|
int tp_pmu__id(const char *sys, const char *name);
|
|
int tp_pmu__for_each_tp_event(const char *sys, void *state, tp_event_callback cb);
|
|
int tp_pmu__for_each_tp_sys(void *state, tp_sys_callback cb);
|
|
|
|
bool perf_pmu__is_tracepoint(const struct perf_pmu *pmu);
|
|
int tp_pmu__for_each_event(struct perf_pmu *pmu, void *state, pmu_event_callback cb);
|
|
size_t tp_pmu__num_events(struct perf_pmu *pmu);
|
|
bool tp_pmu__have_event(struct perf_pmu *pmu, const char *name);
|
|
|
|
#endif /* __TP_PMU_H */
|