xref: /openbmc/linux/tools/perf/util/top.h (revision 8c3e10eb)
18c3e10ebSArnaldo Carvalho de Melo #ifndef __PERF_TOP_H
28c3e10ebSArnaldo Carvalho de Melo #define __PERF_TOP_H 1
38c3e10ebSArnaldo Carvalho de Melo 
48c3e10ebSArnaldo Carvalho de Melo #include "types.h"
58c3e10ebSArnaldo Carvalho de Melo #include "../perf.h"
68c3e10ebSArnaldo Carvalho de Melo #include <stddef.h>
78c3e10ebSArnaldo Carvalho de Melo #include <pthread.h>
88c3e10ebSArnaldo Carvalho de Melo #include <linux/list.h>
98c3e10ebSArnaldo Carvalho de Melo #include <linux/rbtree.h>
108c3e10ebSArnaldo Carvalho de Melo 
118c3e10ebSArnaldo Carvalho de Melo struct perf_evlist;
128c3e10ebSArnaldo Carvalho de Melo struct perf_evsel;
138c3e10ebSArnaldo Carvalho de Melo 
148c3e10ebSArnaldo Carvalho de Melo struct source_line {
158c3e10ebSArnaldo Carvalho de Melo 	u64			eip;
168c3e10ebSArnaldo Carvalho de Melo 	unsigned long		count[MAX_COUNTERS]; /* FIXME */
178c3e10ebSArnaldo Carvalho de Melo 	char			*line;
188c3e10ebSArnaldo Carvalho de Melo 	struct source_line	*next;
198c3e10ebSArnaldo Carvalho de Melo };
208c3e10ebSArnaldo Carvalho de Melo 
218c3e10ebSArnaldo Carvalho de Melo struct sym_entry_source {
228c3e10ebSArnaldo Carvalho de Melo 	struct source_line	*source;
238c3e10ebSArnaldo Carvalho de Melo 	struct source_line	*lines;
248c3e10ebSArnaldo Carvalho de Melo 	struct source_line	**lines_tail;
258c3e10ebSArnaldo Carvalho de Melo 	pthread_mutex_t		lock;
268c3e10ebSArnaldo Carvalho de Melo };
278c3e10ebSArnaldo Carvalho de Melo 
288c3e10ebSArnaldo Carvalho de Melo struct sym_entry {
298c3e10ebSArnaldo Carvalho de Melo 	struct rb_node		rb_node;
308c3e10ebSArnaldo Carvalho de Melo 	struct list_head	node;
318c3e10ebSArnaldo Carvalho de Melo 	unsigned long		snap_count;
328c3e10ebSArnaldo Carvalho de Melo 	double			weight;
338c3e10ebSArnaldo Carvalho de Melo 	int			skip;
348c3e10ebSArnaldo Carvalho de Melo 	u16			name_len;
358c3e10ebSArnaldo Carvalho de Melo 	u8			origin;
368c3e10ebSArnaldo Carvalho de Melo 	struct map		*map;
378c3e10ebSArnaldo Carvalho de Melo 	struct sym_entry_source	*src;
388c3e10ebSArnaldo Carvalho de Melo 	unsigned long		count[0];
398c3e10ebSArnaldo Carvalho de Melo };
408c3e10ebSArnaldo Carvalho de Melo 
418c3e10ebSArnaldo Carvalho de Melo struct perf_top {
428c3e10ebSArnaldo Carvalho de Melo 	struct perf_evlist *evlist;
438c3e10ebSArnaldo Carvalho de Melo 	/*
448c3e10ebSArnaldo Carvalho de Melo 	 * Symbols will be added here in perf_event__process_sample and will
458c3e10ebSArnaldo Carvalho de Melo 	 * get out after decayed.
468c3e10ebSArnaldo Carvalho de Melo 	 */
478c3e10ebSArnaldo Carvalho de Melo 	struct list_head   active_symbols;
488c3e10ebSArnaldo Carvalho de Melo 	pthread_mutex_t	   active_symbols_lock;
498c3e10ebSArnaldo Carvalho de Melo 	u64		   samples;
508c3e10ebSArnaldo Carvalho de Melo 	u64		   kernel_samples, us_samples;
518c3e10ebSArnaldo Carvalho de Melo 	u64		   exact_samples;
528c3e10ebSArnaldo Carvalho de Melo 	u64		   guest_us_samples, guest_kernel_samples;
538c3e10ebSArnaldo Carvalho de Melo 	int		   print_entries, count_filter, delay_secs;
548c3e10ebSArnaldo Carvalho de Melo 	int		   display_weighted, freq;
558c3e10ebSArnaldo Carvalho de Melo 	int		   sym_counter, target_pid, target_tid;
568c3e10ebSArnaldo Carvalho de Melo 	bool		   hide_kernel_symbols, hide_user_symbols, zero;
578c3e10ebSArnaldo Carvalho de Melo 	const char	   *cpu_list;
588c3e10ebSArnaldo Carvalho de Melo 	struct perf_evsel  *sym_evsel;
598c3e10ebSArnaldo Carvalho de Melo };
608c3e10ebSArnaldo Carvalho de Melo 
618c3e10ebSArnaldo Carvalho de Melo size_t perf_top__header_snprintf(struct perf_top *top, char *bf, size_t size);
628c3e10ebSArnaldo Carvalho de Melo void perf_top__reset_sample_counters(struct perf_top *top);
638c3e10ebSArnaldo Carvalho de Melo float perf_top__decay_samples(struct perf_top *top, struct rb_root *root);
648c3e10ebSArnaldo Carvalho de Melo void perf_top__find_widths(struct perf_top *top, struct rb_root *root,
658c3e10ebSArnaldo Carvalho de Melo 			   int *dso_width, int *dso_short_width, int *sym_width);
668c3e10ebSArnaldo Carvalho de Melo 
678c3e10ebSArnaldo Carvalho de Melo #endif /* __PERF_TOP_H */
68