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; 9177f4eacSNamhyung Kim 10177f4eacSNamhyung Kim struct perf_ftrace { 11177f4eacSNamhyung Kim struct evlist *evlist; 12177f4eacSNamhyung Kim struct target target; 13177f4eacSNamhyung Kim const char *tracer; 14177f4eacSNamhyung Kim struct list_head filters; 15177f4eacSNamhyung Kim struct list_head notrace; 16177f4eacSNamhyung Kim struct list_head graph_funcs; 17177f4eacSNamhyung Kim struct list_head nograph_funcs; 18177f4eacSNamhyung Kim unsigned long percpu_buffer_size; 19177f4eacSNamhyung Kim bool inherit; 20*84005bb6SNamhyung Kim bool use_nsec; 21177f4eacSNamhyung Kim int graph_depth; 22177f4eacSNamhyung Kim int func_stack_trace; 23177f4eacSNamhyung Kim int func_irq_info; 24177f4eacSNamhyung Kim int graph_nosleep_time; 25177f4eacSNamhyung Kim int graph_noirqs; 26177f4eacSNamhyung Kim int graph_verbose; 27177f4eacSNamhyung Kim int graph_thresh; 28177f4eacSNamhyung Kim }; 29177f4eacSNamhyung Kim 30177f4eacSNamhyung Kim struct filter_entry { 31177f4eacSNamhyung Kim struct list_head list; 32177f4eacSNamhyung Kim char name[]; 33177f4eacSNamhyung Kim }; 34177f4eacSNamhyung Kim 35177f4eacSNamhyung Kim #define NUM_BUCKET 22 /* 20 + 2 (for outliers in both direction) */ 36177f4eacSNamhyung Kim 37177f4eacSNamhyung Kim #ifdef HAVE_BPF_SKEL 38177f4eacSNamhyung Kim 39177f4eacSNamhyung Kim int perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace); 40177f4eacSNamhyung Kim int perf_ftrace__latency_start_bpf(struct perf_ftrace *ftrace); 41177f4eacSNamhyung Kim int perf_ftrace__latency_stop_bpf(struct perf_ftrace *ftrace); 42177f4eacSNamhyung Kim int perf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace, 43177f4eacSNamhyung Kim int buckets[]); 44177f4eacSNamhyung Kim int perf_ftrace__latency_cleanup_bpf(struct perf_ftrace *ftrace); 45177f4eacSNamhyung Kim 46177f4eacSNamhyung Kim #else /* !HAVE_BPF_SKEL */ 47177f4eacSNamhyung Kim 48177f4eacSNamhyung Kim static inline int perf_ftrace__latency_prepare_bpf(struct perf_ftrace * ftrace __maybe_unused)49177f4eacSNamhyung Kimperf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace __maybe_unused) 50177f4eacSNamhyung Kim { 51177f4eacSNamhyung Kim return -1; 52177f4eacSNamhyung Kim } 53177f4eacSNamhyung Kim 54177f4eacSNamhyung Kim static inline int perf_ftrace__latency_start_bpf(struct perf_ftrace * ftrace __maybe_unused)55177f4eacSNamhyung Kimperf_ftrace__latency_start_bpf(struct perf_ftrace *ftrace __maybe_unused) 56177f4eacSNamhyung Kim { 57177f4eacSNamhyung Kim return -1; 58177f4eacSNamhyung Kim } 59177f4eacSNamhyung Kim 60177f4eacSNamhyung Kim static inline int perf_ftrace__latency_stop_bpf(struct perf_ftrace * ftrace __maybe_unused)61177f4eacSNamhyung Kimperf_ftrace__latency_stop_bpf(struct perf_ftrace *ftrace __maybe_unused) 62177f4eacSNamhyung Kim { 63177f4eacSNamhyung Kim return -1; 64177f4eacSNamhyung Kim } 65177f4eacSNamhyung Kim 66177f4eacSNamhyung Kim static inline int perf_ftrace__latency_read_bpf(struct perf_ftrace * ftrace __maybe_unused,int buckets[]__maybe_unused)67177f4eacSNamhyung Kimperf_ftrace__latency_read_bpf(struct perf_ftrace *ftrace __maybe_unused, 68177f4eacSNamhyung Kim int buckets[] __maybe_unused) 69177f4eacSNamhyung Kim { 70177f4eacSNamhyung Kim return -1; 71177f4eacSNamhyung Kim } 72177f4eacSNamhyung Kim 73177f4eacSNamhyung Kim static inline int perf_ftrace__latency_cleanup_bpf(struct perf_ftrace * ftrace __maybe_unused)74177f4eacSNamhyung Kimperf_ftrace__latency_cleanup_bpf(struct perf_ftrace *ftrace __maybe_unused) 75177f4eacSNamhyung Kim { 76177f4eacSNamhyung Kim return -1; 77177f4eacSNamhyung Kim } 78177f4eacSNamhyung Kim 79177f4eacSNamhyung Kim #endif /* HAVE_BPF_SKEL */ 80177f4eacSNamhyung Kim 81177f4eacSNamhyung Kim #endif /* __PERF_FTRACE_H__ */ 82