mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00: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>
19 lines
754 B
C
19 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 */
|