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