xref: /linux/tools/perf/util/ftrace.h (revision 891e8abed532423d3b918b0c445dc8919bc445b5)
1177f4eacSNamhyung Kim #ifndef __PERF_FTRACE_H__
2177f4eacSNamhyung Kim #define __PERF_FTRACE_H__
3177f4eacSNamhyung Kim 
4177f4eacSNamhyung Kim #include <linux/list.h>
5177f4eacSNamhyung Kim 
6177f4eacSNamhyung Kim #include "target.h"
7177f4eacSNamhyung Kim 
8177f4eacSNamhyung Kim struct evlist;
9*0f223813SNamhyung Kim struct hashamp;
10177f4eacSNamhyung Kim 
11177f4eacSNamhyung Kim struct perf_ftrace {
12177f4eacSNamhyung Kim 	struct evlist		*evlist;
13177f4eacSNamhyung Kim 	struct target		target;
14177f4eacSNamhyung Kim 	const char		*tracer;
15177f4eacSNamhyung Kim 	struct list_head	filters;
16177f4eacSNamhyung Kim 	struct list_head	notrace;
17177f4eacSNamhyung Kim 	struct list_head	graph_funcs;
18177f4eacSNamhyung Kim 	struct list_head	nograph_funcs;
19*0f223813SNamhyung Kim 	struct hashmap		*profile_hash;
20177f4eacSNamhyung Kim 	unsigned long		percpu_buffer_size;
21177f4eacSNamhyung Kim 	bool			inherit;
2284005bb6SNamhyung Kim 	bool			use_nsec;
23177f4eacSNamhyung Kim 	int			graph_depth;
24177f4eacSNamhyung Kim 	int			func_stack_trace;
25177f4eacSNamhyung Kim 	int			func_irq_info;
26177f4eacSNamhyung Kim 	int			graph_nosleep_time;
27177f4eacSNamhyung Kim 	int			graph_noirqs;
28177f4eacSNamhyung Kim 	int			graph_verbose;
29177f4eacSNamhyung Kim 	int			graph_thresh;
30c7780089SNamhyung Kim 	int			graph_tail;
31177f4eacSNamhyung Kim };
32177f4eacSNamhyung Kim 
33177f4eacSNamhyung Kim struct filter_entry {
34177f4eacSNamhyung Kim 	struct list_head	list;
35177f4eacSNamhyung Kim 	char			name[];
36177f4eacSNamhyung Kim };
37177f4eacSNamhyung Kim 
38177f4eacSNamhyung Kim #define NUM_BUCKET  22  /* 20 + 2 (for outliers in both direction) */
39177f4eacSNamhyung Kim 
40177f4eacSNamhyung Kim #ifdef HAVE_BPF_SKEL
41177f4eacSNamhyung Kim 
42177f4eacSNamhyung Kim int perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace);
43177f4eacSNamhyung Kim int perf_ftrace__latency_start_bpf(struct perf_ftrace *ftrace);
44177f4eacSNamhyung Kim int perf_ftrace__latency_stop_bpf(struct perf_ftrace *ftrace);
45177f4eacSNamhyung Kim int perf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace,
46177f4eacSNamhyung Kim 				  int buckets[]);
47177f4eacSNamhyung Kim int perf_ftrace__latency_cleanup_bpf(struct perf_ftrace *ftrace);
48177f4eacSNamhyung Kim 
49177f4eacSNamhyung Kim #else  /* !HAVE_BPF_SKEL */
50177f4eacSNamhyung Kim 
51177f4eacSNamhyung Kim static inline int
52177f4eacSNamhyung Kim perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace __maybe_unused)
53177f4eacSNamhyung Kim {
54177f4eacSNamhyung Kim 	return -1;
55177f4eacSNamhyung Kim }
56177f4eacSNamhyung Kim 
57177f4eacSNamhyung Kim static inline int
58177f4eacSNamhyung Kim perf_ftrace__latency_start_bpf(struct perf_ftrace *ftrace __maybe_unused)
59177f4eacSNamhyung Kim {
60177f4eacSNamhyung Kim 	return -1;
61177f4eacSNamhyung Kim }
62177f4eacSNamhyung Kim 
63177f4eacSNamhyung Kim static inline int
64177f4eacSNamhyung Kim perf_ftrace__latency_stop_bpf(struct perf_ftrace *ftrace __maybe_unused)
65177f4eacSNamhyung Kim {
66177f4eacSNamhyung Kim 	return -1;
67177f4eacSNamhyung Kim }
68177f4eacSNamhyung Kim 
69177f4eacSNamhyung Kim static inline int
70177f4eacSNamhyung Kim perf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace __maybe_unused,
71177f4eacSNamhyung Kim 			      int buckets[] __maybe_unused)
72177f4eacSNamhyung Kim {
73177f4eacSNamhyung Kim 	return -1;
74177f4eacSNamhyung Kim }
75177f4eacSNamhyung Kim 
76177f4eacSNamhyung Kim static inline int
77177f4eacSNamhyung Kim perf_ftrace__latency_cleanup_bpf(struct perf_ftrace *ftrace __maybe_unused)
78177f4eacSNamhyung Kim {
79177f4eacSNamhyung Kim 	return -1;
80177f4eacSNamhyung Kim }
81177f4eacSNamhyung Kim 
82177f4eacSNamhyung Kim #endif  /* HAVE_BPF_SKEL */
83177f4eacSNamhyung Kim 
84177f4eacSNamhyung Kim #endif  /* __PERF_FTRACE_H__ */
85