forked from Minki/linux
49c692b7df
As offcpu-time event is synthesized at the end, it could not get the
all the sample info. Define OFFCPU_SAMPLE_TYPES for allowed ones and
mask out others in evsel__config() to prevent parse errors.
Because perf sample parsing assumes a specific ordering with the
sample types, setting unsupported one would make it fail to read
data like perf record -d/--data.
Fixes: edc41a1099
("perf record: Enable off-cpu analysis with BPF")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Blake Jones <blakejones@google.com>
Cc: Hao Luo <haoluo@google.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <songliubraving@fb.com>
Cc: bpf@vger.kernel.org
Link: http://lore.kernel.org/lkml/20220624231313.367909-3-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
39 lines
942 B
C
39 lines
942 B
C
#ifndef PERF_UTIL_OFF_CPU_H
|
|
#define PERF_UTIL_OFF_CPU_H
|
|
|
|
#include <linux/perf_event.h>
|
|
|
|
struct evlist;
|
|
struct target;
|
|
struct perf_session;
|
|
struct record_opts;
|
|
|
|
#define OFFCPU_EVENT "offcpu-time"
|
|
|
|
#define OFFCPU_SAMPLE_TYPES (PERF_SAMPLE_IDENTIFIER | PERF_SAMPLE_IP | \
|
|
PERF_SAMPLE_TID | PERF_SAMPLE_TIME | \
|
|
PERF_SAMPLE_ID | PERF_SAMPLE_CPU | \
|
|
PERF_SAMPLE_PERIOD | PERF_SAMPLE_CALLCHAIN | \
|
|
PERF_SAMPLE_CGROUP)
|
|
|
|
|
|
#ifdef HAVE_BPF_SKEL
|
|
int off_cpu_prepare(struct evlist *evlist, struct target *target,
|
|
struct record_opts *opts);
|
|
int off_cpu_write(struct perf_session *session);
|
|
#else
|
|
static inline int off_cpu_prepare(struct evlist *evlist __maybe_unused,
|
|
struct target *target __maybe_unused,
|
|
struct record_opts *opts __maybe_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
static inline int off_cpu_write(struct perf_session *session __maybe_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
#endif
|
|
|
|
#endif /* PERF_UTIL_OFF_CPU_H */
|