| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | #ifndef __PERF_TOP_H
 | 
					
						
							|  |  |  |  | #define __PERF_TOP_H 1
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-28 08:30:20 -02:00
										 |  |  |  | #include "tool.h"
 | 
					
						
							| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | #include "types.h"
 | 
					
						
							|  |  |  |  | #include <stddef.h>
 | 
					
						
							| 
									
										
										
										
											2011-11-28 08:30:20 -02:00
										 |  |  |  | #include <stdbool.h>
 | 
					
						
							| 
									
										
										
										
											2012-09-08 03:43:18 +03:00
										 |  |  |  | #include <termios.h>
 | 
					
						
							| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | struct perf_evlist; | 
					
						
							|  |  |  |  | struct perf_evsel; | 
					
						
							| 
									
										
										
										
											2011-11-28 08:30:20 -02:00
										 |  |  |  | struct perf_session; | 
					
						
							| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | struct perf_top { | 
					
						
							| 
									
										
										
										
											2011-11-28 08:30:20 -02:00
										 |  |  |  | 	struct perf_tool   tool; | 
					
						
							| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | 	struct perf_evlist *evlist; | 
					
						
							| 
									
										
										
										
											2012-12-11 16:48:41 -03:00
										 |  |  |  | 	struct perf_record_opts record_opts; | 
					
						
							| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | 	/*
 | 
					
						
							|  |  |  |  | 	 * Symbols will be added here in perf_event__process_sample and will | 
					
						
							|  |  |  |  | 	 * get out after decayed. | 
					
						
							|  |  |  |  | 	 */ | 
					
						
							|  |  |  |  | 	u64		   samples; | 
					
						
							|  |  |  |  | 	u64		   kernel_samples, us_samples; | 
					
						
							|  |  |  |  | 	u64		   exact_samples; | 
					
						
							|  |  |  |  | 	u64		   guest_us_samples, guest_kernel_samples; | 
					
						
							|  |  |  |  | 	int		   print_entries, count_filter, delay_secs; | 
					
						
							| 
									
										
										
										
											2013-10-18 10:38:49 -04:00
										 |  |  |  | 	int		   max_stack; | 
					
						
							| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | 	bool		   hide_kernel_symbols, hide_user_symbols, zero; | 
					
						
							| 
									
										
										
										
											2011-11-28 09:37:05 -02:00
										 |  |  |  | 	bool		   use_tui, use_stdio; | 
					
						
							|  |  |  |  | 	bool		   kptr_restrict_warned; | 
					
						
							|  |  |  |  | 	bool		   vmlinux_warned; | 
					
						
							|  |  |  |  | 	bool		   dump_symtab; | 
					
						
							| 
									
										
											  
											
												perf top: Reuse the 'report' hist_entry/hists classes
This actually fixes several problems we had in the old 'perf top':
1. Unresolved symbols not show, limitation that came from the old
   "KernelTop" codebase, to solve it we would need to do changes
   that would make sym_entry have most of the hist_entry fields.
2. It was using the number of samples, not the sum of sample->period.
And brings the --sort code that allows us to have all the views in
'perf report', for instance:
[root@emilia ~]# perf top --sort dso
PerfTop: 5903 irqs/sec kernel:77.5% exact: 0.0% [1000Hz cycles], (all, 8 CPUs)
------------------------------------------------------------------------------
    31.59%  libcrypto.so.1.0.0
    21.55%  [kernel]
    18.57%  libpython2.6.so.1.0
     7.04%  libc-2.12.so
     6.99%  _backend_agg.so
     4.72%  sshd
     1.48%  multiarray.so
     1.39%  libfreetype.so.6.3.22
     1.37%  perf
     0.71%  libgobject-2.0.so.0.2200.5
     0.53%  [tg3]
     0.48%  libglib-2.0.so.0.2200.5
     0.44%  libstdc++.so.6.0.13
     0.40%  libcairo.so.2.10800.8
     0.38%  libm-2.12.so
     0.34%  umath.so
     0.30%  libgdk-x11-2.0.so.0.1800.9
     0.22%  libpthread-2.12.so
     0.20%  libgtk-x11-2.0.so.0.1800.9
     0.20%  librt-2.12.so
     0.15%  _path.so
     0.13%  libpango-1.0.so.0.2800.1
     0.11%  libatlas.so.3.0
     0.09%  ft2font.so
     0.09%  libpangoft2-1.0.so.0.2800.1
     0.08%  libX11.so.6.3.0
     0.07%  [vdso]
     0.06%  cyclictest
^C
All the filter lists can be used as well: --dsos, --comms, --symbols,
etc.
The 'perf report' TUI is also reused, being possible to apply all the
zoom operations, do annotation, etc.
This change will allow multiple simplifications in the symbol system as
well, that will be detailed in upcoming changesets.
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-xzaaldxq7zhqrrxdxjifk1mh@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
											
										 
											2011-10-05 19:16:15 -03:00
										 |  |  |  | 	struct hist_entry  *sym_filter_entry; | 
					
						
							| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | 	struct perf_evsel  *sym_evsel; | 
					
						
							| 
									
										
										
										
											2011-09-01 14:27:58 -03:00
										 |  |  |  | 	struct perf_session *session; | 
					
						
							| 
									
										
										
										
											2011-11-28 09:37:05 -02:00
										 |  |  |  | 	struct winsize	   winsize; | 
					
						
							|  |  |  |  | 	int		   realtime_prio; | 
					
						
							|  |  |  |  | 	int		   sym_pcnt_filter; | 
					
						
							|  |  |  |  | 	const char	   *sym_filter; | 
					
						
							| 
									
										
										
										
											2013-05-14 11:09:05 +09:00
										 |  |  |  | 	float		   min_percent; | 
					
						
							| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-02 14:05:39 -06:00
										 |  |  |  | #define CONSOLE_CLEAR "[H[2J"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-31 14:50:39 -02:00
										 |  |  |  | size_t perf_top__header_snprintf(struct perf_top *top, char *bf, size_t size); | 
					
						
							|  |  |  |  | void perf_top__reset_sample_counters(struct perf_top *top); | 
					
						
							|  |  |  |  | #endif /* __PERF_TOP_H */
 |