1e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#ifndef __PERF_TOP_H
2e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#define __PERF_TOP_H 1
3e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
4e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "tool.h"
5e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "types.h"
6e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <stddef.h>
7e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <stdbool.h>
8e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <termios.h>
9e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
10e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_evlist;
11e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_evsel;
12e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_session;
13e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
14e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_top {
15e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	struct perf_tool   tool;
16e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	struct perf_evlist *evlist;
17e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	struct perf_record_opts record_opts;
18e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	/*
19e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	 * Symbols will be added here in perf_event__process_sample and will
20e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	 * get out after decayed.
21e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	 */
22e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	u64		   samples;
23e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	u64		   kernel_samples, us_samples;
24e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	u64		   exact_samples;
25e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	u64		   guest_us_samples, guest_kernel_samples;
26e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	int		   print_entries, count_filter, delay_secs;
27e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	bool		   hide_kernel_symbols, hide_user_symbols, zero;
28e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	bool		   use_tui, use_stdio;
29e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	bool		   kptr_restrict_warned;
30e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	bool		   vmlinux_warned;
31e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	bool		   dump_symtab;
32e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	struct hist_entry  *sym_filter_entry;
33e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	struct perf_evsel  *sym_evsel;
34e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	struct perf_session *session;
35e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	struct winsize	   winsize;
36e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	int		   realtime_prio;
37e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	int		   sym_pcnt_filter;
38e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	const char	   *sym_filter;
39e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	float		   min_percent;
40e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng};
41e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
42e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#define CONSOLE_CLEAR "[H[2J"
43e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
44e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsize_t perf_top__header_snprintf(struct perf_top *top, char *bf, size_t size);
45e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengvoid perf_top__reset_sample_counters(struct perf_top *top);
46e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#endif /* __PERF_TOP_H */
47