162306a36Sopenharmony_ci#ifndef PERF_UTIL_OFF_CPU_H
262306a36Sopenharmony_ci#define PERF_UTIL_OFF_CPU_H
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#include <linux/perf_event.h>
562306a36Sopenharmony_ci
662306a36Sopenharmony_cistruct evlist;
762306a36Sopenharmony_cistruct target;
862306a36Sopenharmony_cistruct perf_session;
962306a36Sopenharmony_cistruct record_opts;
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define OFFCPU_EVENT  "offcpu-time"
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define OFFCPU_SAMPLE_TYPES  (PERF_SAMPLE_IDENTIFIER | PERF_SAMPLE_IP | \
1462306a36Sopenharmony_ci			      PERF_SAMPLE_TID | PERF_SAMPLE_TIME | \
1562306a36Sopenharmony_ci			      PERF_SAMPLE_ID | PERF_SAMPLE_CPU | \
1662306a36Sopenharmony_ci			      PERF_SAMPLE_PERIOD | PERF_SAMPLE_CALLCHAIN | \
1762306a36Sopenharmony_ci			      PERF_SAMPLE_CGROUP)
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#ifdef HAVE_BPF_SKEL
2162306a36Sopenharmony_ciint off_cpu_prepare(struct evlist *evlist, struct target *target,
2262306a36Sopenharmony_ci		    struct record_opts *opts);
2362306a36Sopenharmony_ciint off_cpu_write(struct perf_session *session);
2462306a36Sopenharmony_ci#else
2562306a36Sopenharmony_cistatic inline int off_cpu_prepare(struct evlist *evlist __maybe_unused,
2662306a36Sopenharmony_ci				  struct target *target __maybe_unused,
2762306a36Sopenharmony_ci				  struct record_opts *opts __maybe_unused)
2862306a36Sopenharmony_ci{
2962306a36Sopenharmony_ci	return -1;
3062306a36Sopenharmony_ci}
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_cistatic inline int off_cpu_write(struct perf_session *session __maybe_unused)
3362306a36Sopenharmony_ci{
3462306a36Sopenharmony_ci	return -1;
3562306a36Sopenharmony_ci}
3662306a36Sopenharmony_ci#endif
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci#endif  /* PERF_UTIL_OFF_CPU_H */
39