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