1 #ifndef __PERF_TOP_H 2 #define __PERF_TOP_H 1 3 4 #include "types.h" 5 #include "../perf.h" 6 #include <stddef.h> 7 #include <pthread.h> 8 #include <linux/list.h> 9 #include <linux/rbtree.h> 10 11 struct perf_evlist; 12 struct perf_evsel; 13 14 struct sym_entry { 15 struct rb_node rb_node; 16 struct list_head node; 17 unsigned long snap_count; 18 double weight; 19 struct map *map; 20 unsigned long count[0]; 21 }; 22 23 static inline struct symbol *sym_entry__symbol(struct sym_entry *self) 24 { 25 return ((void *)self) + symbol_conf.priv_size; 26 } 27 28 struct perf_top { 29 struct perf_evlist *evlist; 30 /* 31 * Symbols will be added here in perf_event__process_sample and will 32 * get out after decayed. 33 */ 34 struct list_head active_symbols; 35 pthread_mutex_t active_symbols_lock; 36 pthread_cond_t active_symbols_cond; 37 u64 samples; 38 u64 kernel_samples, us_samples; 39 u64 exact_samples; 40 u64 guest_us_samples, guest_kernel_samples; 41 int print_entries, count_filter, delay_secs; 42 int display_weighted, freq, rb_entries; 43 pid_t target_pid, target_tid; 44 bool hide_kernel_symbols, hide_user_symbols, zero; 45 const char *cpu_list; 46 struct sym_entry *sym_filter_entry; 47 struct perf_evsel *sym_evsel; 48 }; 49 50 size_t perf_top__header_snprintf(struct perf_top *top, char *bf, size_t size); 51 void perf_top__reset_sample_counters(struct perf_top *top); 52 float perf_top__decay_samples(struct perf_top *top, struct rb_root *root); 53 void perf_top__find_widths(struct perf_top *top, struct rb_root *root, 54 int *dso_width, int *dso_short_width, int *sym_width); 55 56 #ifdef NO_NEWT_SUPPORT 57 static inline int perf_top__tui_browser(struct perf_top *top __used) 58 { 59 return 0; 60 } 61 #else 62 int perf_top__tui_browser(struct perf_top *top); 63 #endif 64 #endif /* __PERF_TOP_H */ 65