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
|
@ -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,
|
||||||
NULL,
|
help,
|
||||||
&session->header.env);
|
NULL,
|
||||||
|
&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…
Reference in a new issue