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