[PATCH 3/3] perf report: Enable the runtime switching of perf data file

2012-11-20 Thread Feng Tang
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 
---
 tools/perf/builtin-report.c |   22 +++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index fc25100..5392a8e 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -427,9 +427,17 @@ 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,
- &session->header.env);
+   ret = perf_evlist__tui_browse_hists(session->evlist,
+   help,
+   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) {
perf_evlist__gtk_browse_hists(session->evlist, help,
  NULL);
@@ -663,6 +671,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)
@@ -763,6 +773,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.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 3/3] perf report: Enable the runtime switching of perf data file

2012-11-01 Thread Namhyung Kim
Hi Feng,

On Thu,  1 Nov 2012 00:00:57 +0800, Feng Tang wrote:
> 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.

You may want to add my previous patch [1] to your patch set as it can
call perf_session__delete() multiple times.

Thanks,
Namhyung

[1] https://lkml.org/lkml/2012/9/24/693
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 3/3] perf report: Enable the runtime switching of perf data file

2012-10-31 Thread Feng Tang
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 
---
 tools/perf/builtin-report.c |   18 --
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index f07eae7..3665a9a 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -427,8 +427,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 if the key notifies us 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);
@@ -662,6 +668,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)
@@ -768,6 +776,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.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/