• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
sym_entry__symbol(struct sym_entry * self)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
perf_top__tui_browser(struct perf_top * top __used)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