18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __PERF_BPF_EVENT_H
38c2ecf20Sopenharmony_ci#define __PERF_BPF_EVENT_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#include <linux/compiler.h>
68c2ecf20Sopenharmony_ci#include <linux/rbtree.h>
78c2ecf20Sopenharmony_ci#include <pthread.h>
88c2ecf20Sopenharmony_ci#include <api/fd/array.h>
98c2ecf20Sopenharmony_ci#include <stdio.h>
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_cistruct bpf_prog_info;
128c2ecf20Sopenharmony_cistruct machine;
138c2ecf20Sopenharmony_ciunion perf_event;
148c2ecf20Sopenharmony_cistruct perf_env;
158c2ecf20Sopenharmony_cistruct perf_sample;
168c2ecf20Sopenharmony_cistruct perf_session;
178c2ecf20Sopenharmony_cistruct record_opts;
188c2ecf20Sopenharmony_cistruct evlist;
198c2ecf20Sopenharmony_cistruct target;
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_cistruct bpf_prog_info_node {
228c2ecf20Sopenharmony_ci	struct bpf_prog_info_linear	*info_linear;
238c2ecf20Sopenharmony_ci	struct rb_node			rb_node;
248c2ecf20Sopenharmony_ci};
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_cistruct btf_node {
278c2ecf20Sopenharmony_ci	struct rb_node	rb_node;
288c2ecf20Sopenharmony_ci	u32		id;
298c2ecf20Sopenharmony_ci	u32		data_size;
308c2ecf20Sopenharmony_ci	char		data[];
318c2ecf20Sopenharmony_ci};
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci#ifdef HAVE_LIBBPF_SUPPORT
348c2ecf20Sopenharmony_ciint machine__process_bpf(struct machine *machine, union perf_event *event,
358c2ecf20Sopenharmony_ci			 struct perf_sample *sample);
368c2ecf20Sopenharmony_ciint evlist__add_bpf_sb_event(struct evlist *evlist, struct perf_env *env);
378c2ecf20Sopenharmony_civoid __bpf_event__print_bpf_prog_info(struct bpf_prog_info *info,
388c2ecf20Sopenharmony_ci				      struct perf_env *env,
398c2ecf20Sopenharmony_ci				      FILE *fp);
408c2ecf20Sopenharmony_ci#else
418c2ecf20Sopenharmony_cistatic inline int machine__process_bpf(struct machine *machine __maybe_unused,
428c2ecf20Sopenharmony_ci				       union perf_event *event __maybe_unused,
438c2ecf20Sopenharmony_ci				       struct perf_sample *sample __maybe_unused)
448c2ecf20Sopenharmony_ci{
458c2ecf20Sopenharmony_ci	return 0;
468c2ecf20Sopenharmony_ci}
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_cistatic inline int evlist__add_bpf_sb_event(struct evlist *evlist __maybe_unused,
498c2ecf20Sopenharmony_ci					   struct perf_env *env __maybe_unused)
508c2ecf20Sopenharmony_ci{
518c2ecf20Sopenharmony_ci	return 0;
528c2ecf20Sopenharmony_ci}
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_cistatic inline void __bpf_event__print_bpf_prog_info(struct bpf_prog_info *info __maybe_unused,
558c2ecf20Sopenharmony_ci						    struct perf_env *env __maybe_unused,
568c2ecf20Sopenharmony_ci						    FILE *fp __maybe_unused)
578c2ecf20Sopenharmony_ci{
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci}
608c2ecf20Sopenharmony_ci#endif // HAVE_LIBBPF_SUPPORT
618c2ecf20Sopenharmony_ci#endif
62