xref: /linux/tools/perf/util/ftrace.h (revision 7685b334d1e4927cc73b62c65293ba65748d9c52)
1 #ifndef __PERF_FTRACE_H__
2 #define __PERF_FTRACE_H__
3 
4 #include <linux/list.h>
5 
6 #include "target.h"
7 
8 struct evlist;
9 struct hashamp;
10 struct stats;
11 
12 struct perf_ftrace {
13 	struct evlist		*evlist;
14 	struct target		target;
15 	const char		*tracer;
16 	struct list_head	filters;
17 	struct list_head	notrace;
18 	struct list_head	graph_funcs;
19 	struct list_head	nograph_funcs;
20 	struct hashmap		*profile_hash;
21 	unsigned long		percpu_buffer_size;
22 	bool			inherit;
23 	bool			use_nsec;
24 	unsigned int		bucket_range;
25 	unsigned int		min_latency;
26 	unsigned int		max_latency;
27 	int			graph_depth;
28 	int			func_stack_trace;
29 	int			func_irq_info;
30 	int			graph_nosleep_time;
31 	int			graph_noirqs;
32 	int			graph_verbose;
33 	int			graph_thresh;
34 	int			graph_tail;
35 };
36 
37 struct filter_entry {
38 	struct list_head	list;
39 	char			name[];
40 };
41 
42 #define NUM_BUCKET  22  /* 20 + 2 (for outliers in both direction) */
43 
44 #ifdef HAVE_BPF_SKEL
45 
46 int perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace);
47 int perf_ftrace__latency_start_bpf(struct perf_ftrace *ftrace);
48 int perf_ftrace__latency_stop_bpf(struct perf_ftrace *ftrace);
49 int perf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace,
50 				  int buckets[], struct stats *stats);
51 int perf_ftrace__latency_cleanup_bpf(struct perf_ftrace *ftrace);
52 
53 #else  /* !HAVE_BPF_SKEL */
54 
55 static inline int
56 perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace __maybe_unused)
57 {
58 	return -1;
59 }
60 
61 static inline int
62 perf_ftrace__latency_start_bpf(struct perf_ftrace *ftrace __maybe_unused)
63 {
64 	return -1;
65 }
66 
67 static inline int
68 perf_ftrace__latency_stop_bpf(struct perf_ftrace *ftrace __maybe_unused)
69 {
70 	return -1;
71 }
72 
73 static inline int
74 perf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace __maybe_unused,
75 			      int buckets[] __maybe_unused,
76 			      struct stats *stats __maybe_unused)
77 {
78 	return -1;
79 }
80 
81 static inline int
82 perf_ftrace__latency_cleanup_bpf(struct perf_ftrace *ftrace __maybe_unused)
83 {
84 	return -1;
85 }
86 
87 #endif  /* HAVE_BPF_SKEL */
88 
89 #endif  /* __PERF_FTRACE_H__ */
90