/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PERF_BPF_EVENT_H
#define __PERF_BPF_EVENT_H

#include <linux/compiler.h>
#include <linux/rbtree.h>
#include <pthread.h>
#include <api/fd/array.h>
#include <stdio.h>

struct bpf_prog_info;
struct machine;
union perf_event;
struct perf_env;
struct perf_sample;
struct perf_session;
struct record_opts;
struct evlist;
struct target;

struct bpf_prog_info_node {
	struct perf_bpil		*info_linear;
	struct rb_node			rb_node;
};

struct btf_node {
	struct rb_node	rb_node;
	u32		id;
	u32		data_size;
	char		data[];
};

#ifdef HAVE_LIBBPF_SUPPORT
int machine__process_bpf(struct machine *machine, union perf_event *event,
			 struct perf_sample *sample);
int evlist__add_bpf_sb_event(struct evlist *evlist, struct perf_env *env);
void bpf_event__print_bpf_prog_info(struct bpf_prog_info *info,
				    struct perf_env *env,
				    FILE *fp);
#else
static inline int machine__process_bpf(struct machine *machine __maybe_unused,
				       union perf_event *event __maybe_unused,
				       struct perf_sample *sample __maybe_unused)
{
	return 0;
}

static inline int evlist__add_bpf_sb_event(struct evlist *evlist __maybe_unused,
					   struct perf_env *env __maybe_unused)
{
	return 0;
}

static inline void bpf_event__print_bpf_prog_info(struct bpf_prog_info *info __maybe_unused,
						  struct perf_env *env __maybe_unused,
						  FILE *fp __maybe_unused)
{

}
#endif // HAVE_LIBBPF_SUPPORT
#endif
