|  | #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__ */ |