1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef __PERF_BPF_EVENT_H
3*4882a593Smuzhiyun #define __PERF_BPF_EVENT_H
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun #include <linux/compiler.h>
6*4882a593Smuzhiyun #include <linux/rbtree.h>
7*4882a593Smuzhiyun #include <pthread.h>
8*4882a593Smuzhiyun #include <api/fd/array.h>
9*4882a593Smuzhiyun #include <stdio.h>
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun struct bpf_prog_info;
12*4882a593Smuzhiyun struct machine;
13*4882a593Smuzhiyun union perf_event;
14*4882a593Smuzhiyun struct perf_env;
15*4882a593Smuzhiyun struct perf_sample;
16*4882a593Smuzhiyun struct perf_session;
17*4882a593Smuzhiyun struct record_opts;
18*4882a593Smuzhiyun struct evlist;
19*4882a593Smuzhiyun struct target;
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun struct bpf_prog_info_node {
22*4882a593Smuzhiyun struct bpf_prog_info_linear *info_linear;
23*4882a593Smuzhiyun struct rb_node rb_node;
24*4882a593Smuzhiyun };
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun struct btf_node {
27*4882a593Smuzhiyun struct rb_node rb_node;
28*4882a593Smuzhiyun u32 id;
29*4882a593Smuzhiyun u32 data_size;
30*4882a593Smuzhiyun char data[];
31*4882a593Smuzhiyun };
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun #ifdef HAVE_LIBBPF_SUPPORT
34*4882a593Smuzhiyun int machine__process_bpf(struct machine *machine, union perf_event *event,
35*4882a593Smuzhiyun struct perf_sample *sample);
36*4882a593Smuzhiyun int evlist__add_bpf_sb_event(struct evlist *evlist, struct perf_env *env);
37*4882a593Smuzhiyun void bpf_event__print_bpf_prog_info(struct bpf_prog_info *info,
38*4882a593Smuzhiyun struct perf_env *env,
39*4882a593Smuzhiyun FILE *fp);
40*4882a593Smuzhiyun #else
machine__process_bpf(struct machine * machine __maybe_unused,union perf_event * event __maybe_unused,struct perf_sample * sample __maybe_unused)41*4882a593Smuzhiyun static inline int machine__process_bpf(struct machine *machine __maybe_unused,
42*4882a593Smuzhiyun union perf_event *event __maybe_unused,
43*4882a593Smuzhiyun struct perf_sample *sample __maybe_unused)
44*4882a593Smuzhiyun {
45*4882a593Smuzhiyun return 0;
46*4882a593Smuzhiyun }
47*4882a593Smuzhiyun
evlist__add_bpf_sb_event(struct evlist * evlist __maybe_unused,struct perf_env * env __maybe_unused)48*4882a593Smuzhiyun static inline int evlist__add_bpf_sb_event(struct evlist *evlist __maybe_unused,
49*4882a593Smuzhiyun struct perf_env *env __maybe_unused)
50*4882a593Smuzhiyun {
51*4882a593Smuzhiyun return 0;
52*4882a593Smuzhiyun }
53*4882a593Smuzhiyun
bpf_event__print_bpf_prog_info(struct bpf_prog_info * info __maybe_unused,struct perf_env * env __maybe_unused,FILE * fp __maybe_unused)54*4882a593Smuzhiyun static inline void bpf_event__print_bpf_prog_info(struct bpf_prog_info *info __maybe_unused,
55*4882a593Smuzhiyun struct perf_env *env __maybe_unused,
56*4882a593Smuzhiyun FILE *fp __maybe_unused)
57*4882a593Smuzhiyun {
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun }
60*4882a593Smuzhiyun #endif // HAVE_LIBBPF_SUPPORT
61*4882a593Smuzhiyun #endif
62