| #ifndef __PERF_FTRACE_H__ | 
 | #define __PERF_FTRACE_H__ | 
 |  | 
 | #include <linux/list.h> | 
 |  | 
 | #include "target.h" | 
 |  | 
 | struct evlist; | 
 | struct hashamp; | 
 | struct stats; | 
 |  | 
 | struct perf_ftrace { | 
 | 	struct evlist		*evlist; | 
 | 	struct target		target; | 
 | 	const char		*tracer; | 
 | 	struct list_head	filters; | 
 | 	struct list_head	notrace; | 
 | 	struct list_head	graph_funcs; | 
 | 	struct list_head	nograph_funcs; | 
 | 	struct list_head	event_pair; | 
 | 	struct hashmap		*profile_hash; | 
 | 	unsigned long		percpu_buffer_size; | 
 | 	bool			inherit; | 
 | 	bool			use_nsec; | 
 | 	unsigned int		bucket_range; | 
 | 	unsigned int		min_latency; | 
 | 	unsigned int		max_latency; | 
 | 	unsigned int		bucket_num; | 
 | 	bool			hide_empty; | 
 | 	int			graph_depth; | 
 | 	int			func_stack_trace; | 
 | 	int			func_irq_info; | 
 | 	int			graph_args; | 
 | 	int			graph_retval; | 
 | 	int			graph_retval_hex; | 
 | 	int			graph_retaddr; | 
 | 	int			graph_nosleep_time; | 
 | 	int			graph_noirqs; | 
 | 	int			graph_verbose; | 
 | 	int			graph_thresh; | 
 | 	int			graph_tail; | 
 | }; | 
 |  | 
 | struct filter_entry { | 
 | 	struct list_head	list; | 
 | 	char			name[]; | 
 | }; | 
 |  | 
 | #define NUM_BUCKET  22  /* 20 + 2 (for outliers in both direction) */ | 
 |  | 
 | #ifdef HAVE_BPF_SKEL | 
 |  | 
 | int perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace); | 
 | int perf_ftrace__latency_start_bpf(struct perf_ftrace *ftrace); | 
 | int perf_ftrace__latency_stop_bpf(struct perf_ftrace *ftrace); | 
 | int perf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace, | 
 | 				  int buckets[], struct stats *stats); | 
 | int perf_ftrace__latency_cleanup_bpf(struct perf_ftrace *ftrace); | 
 |  | 
 | #else  /* !HAVE_BPF_SKEL */ | 
 |  | 
 | static inline int | 
 | perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace __maybe_unused) | 
 | { | 
 | 	return -1; | 
 | } | 
 |  | 
 | static inline int | 
 | perf_ftrace__latency_start_bpf(struct perf_ftrace *ftrace __maybe_unused) | 
 | { | 
 | 	return -1; | 
 | } | 
 |  | 
 | static inline int | 
 | perf_ftrace__latency_stop_bpf(struct perf_ftrace *ftrace __maybe_unused) | 
 | { | 
 | 	return -1; | 
 | } | 
 |  | 
 | static inline int | 
 | perf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace __maybe_unused, | 
 | 			      int buckets[] __maybe_unused, | 
 | 			      struct stats *stats __maybe_unused) | 
 | { | 
 | 	return -1; | 
 | } | 
 |  | 
 | static inline int | 
 | perf_ftrace__latency_cleanup_bpf(struct perf_ftrace *ftrace __maybe_unused) | 
 | { | 
 | 	return -1; | 
 | } | 
 |  | 
 | #endif  /* HAVE_BPF_SKEL */ | 
 |  | 
 | #endif  /* __PERF_FTRACE_H__ */ |