perf report: Enable the runtime switching of perf data file
This is for tui browser only. This patch will check the returned key of tui hists browser, if it's K_SWITH_INPUT_DATA, then recreate a session for the new selected data file. V2: Move the setup_brower() before the "repeat" jump point. Signed-off-by: Feng Tang <feng.tang@intel.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1359873501-24541-2-git-send-email-feng.tang@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
		
					parent
					
						
							
								341487ab56
							
						
					
				
			
			
				commit
				
					
						ad0de0971b
					
				
			
		
					 1 changed files with 27 additions and 11 deletions
				
			
		| 
						 | 
					@ -468,9 +468,17 @@ static int __cmd_report(struct perf_report *rep)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (use_browser > 0) {
 | 
						if (use_browser > 0) {
 | 
				
			||||||
		if (use_browser == 1) {
 | 
							if (use_browser == 1) {
 | 
				
			||||||
			perf_evlist__tui_browse_hists(session->evlist, help,
 | 
								ret = perf_evlist__tui_browse_hists(session->evlist,
 | 
				
			||||||
 | 
												help,
 | 
				
			||||||
							NULL,
 | 
												NULL,
 | 
				
			||||||
							&session->header.env);
 | 
												&session->header.env);
 | 
				
			||||||
 | 
								/*
 | 
				
			||||||
 | 
								 * Usually "ret" is the last pressed key, and we only
 | 
				
			||||||
 | 
								 * care if the key notifies us to switch data file.
 | 
				
			||||||
 | 
								 */
 | 
				
			||||||
 | 
								if (ret != K_SWITCH_INPUT_DATA)
 | 
				
			||||||
 | 
									ret = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		} else if (use_browser == 2) {
 | 
							} else if (use_browser == 2) {
 | 
				
			||||||
			perf_evlist__gtk_browse_hists(session->evlist, help,
 | 
								perf_evlist__gtk_browse_hists(session->evlist, help,
 | 
				
			||||||
						      NULL);
 | 
											      NULL);
 | 
				
			||||||
| 
						 | 
					@ -708,6 +716,16 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			input_name = "perf.data";
 | 
								input_name = "perf.data";
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (strcmp(input_name, "-") != 0)
 | 
				
			||||||
 | 
							setup_browser(true);
 | 
				
			||||||
 | 
						else {
 | 
				
			||||||
 | 
							use_browser = 0;
 | 
				
			||||||
 | 
							perf_hpp__column_enable(PERF_HPP__OVERHEAD);
 | 
				
			||||||
 | 
							perf_hpp__init();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					repeat:
 | 
				
			||||||
	session = perf_session__new(input_name, O_RDONLY,
 | 
						session = perf_session__new(input_name, O_RDONLY,
 | 
				
			||||||
				    report.force, false, &report.tool);
 | 
									    report.force, false, &report.tool);
 | 
				
			||||||
	if (session == NULL)
 | 
						if (session == NULL)
 | 
				
			||||||
| 
						 | 
					@ -733,14 +751,6 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (strcmp(input_name, "-") != 0)
 | 
					 | 
				
			||||||
		setup_browser(true);
 | 
					 | 
				
			||||||
	else {
 | 
					 | 
				
			||||||
		use_browser = 0;
 | 
					 | 
				
			||||||
		perf_hpp__column_enable(PERF_HPP__OVERHEAD);
 | 
					 | 
				
			||||||
		perf_hpp__init();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	setup_sorting(report_usage, options);
 | 
						setup_sorting(report_usage, options);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
| 
						 | 
					@ -809,6 +819,12 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = __cmd_report(&report);
 | 
						ret = __cmd_report(&report);
 | 
				
			||||||
 | 
						if (ret == K_SWITCH_INPUT_DATA) {
 | 
				
			||||||
 | 
							perf_session__delete(session);
 | 
				
			||||||
 | 
							goto repeat;
 | 
				
			||||||
 | 
						} else
 | 
				
			||||||
 | 
							ret = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
error:
 | 
					error:
 | 
				
			||||||
	perf_session__delete(session);
 | 
						perf_session__delete(session);
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue