Messages in this thread Patch in this message | | | From | Feng Tang <> | Subject | [PATCH v3 9/9] perf report: Enable the runtime switching of perf data file | Date | Mon, 24 Sep 2012 23:24:11 +0800 |
| |
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.
Signed-off-by: Feng Tang <feng.tang@intel.com> --- tools/perf/builtin-report.c | 18 ++++++++++++++++-- 1 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index e4b2246..b4d216b 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -426,8 +426,14 @@ static int __cmd_report(struct perf_report *rep) if (use_browser > 0) { if (use_browser == 1) { - perf_evlist__tui_browse_hists(session->evlist, help, - NULL, NULL, 0); + ret = perf_evlist__tui_browse_hists(session->evlist, + help, NULL, NULL, 0); + /* + * Usually "ret" is the last pressed key, and we only + * care whether we need to switch data file + */ + if (ret != K_SWITCH_INPUT_DATA) + ret = 0; } else if (use_browser == 2) { perf_evlist__gtk_browse_hists(session->evlist, help, NULL, NULL, 0); @@ -661,6 +667,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) else input_name = "perf.data"; } + +repeat: session = perf_session__new(input_name, O_RDONLY, report.force, false, &report.tool); if (session == NULL) @@ -761,6 +769,12 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) } ret = __cmd_report(&report); + if (ret == K_SWITCH_INPUT_DATA) { + perf_session__delete(session); + goto repeat; + } else + ret = 0; + error: perf_session__delete(session); return ret; -- 1.7.1
| |