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