Home | History | Annotate | Download | only in util
      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