[PATCH 12/18] perf ftrace: Cleanup using ftrace_setup/teardown()

2013-10-15 Thread Namhyung Kim
From: Namhyung Kim 

The ftrace sub-commands share some common code so that factor it out
to ftrace_setup() and ftrace_teardown() helpers.

Cc: Steven Rostedt 
Cc: Frederic Weisbecker 
Signed-off-by: Namhyung Kim 
---
 tools/perf/builtin-ftrace.c | 172 +---
 1 file changed, 65 insertions(+), 107 deletions(-)

diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
index 83ed6d797087..fa7a9c59e228 100644
--- a/tools/perf/builtin-ftrace.c
+++ b/tools/perf/builtin-ftrace.c
@@ -1413,10 +1413,59 @@ out:
return ret;
 }
 
+static int ftrace_setup(struct perf_ftrace *ftrace, int argc, const char 
**argv)
+{
+   int ret;
+   char errbuf[512];
+
+   ret = perf_target__validate(>target);
+   if (ret) {
+   perf_target__strerror(>target, ret, errbuf, 512);
+   pr_err("%s\n", errbuf);
+   return -EINVAL;
+   }
+
+   ftrace->evlist = perf_evlist__new();
+   if (ftrace->evlist == NULL)
+   return -ENOMEM;
+
+   ret = perf_evlist__create_maps(ftrace->evlist, >target);
+   if (ret < 0)
+   goto out;
+
+   if (ftrace->tracer == NULL)
+   ftrace->tracer = DEFAULT_TRACER;
+
+   if (ftrace->dirname == NULL)
+   ftrace->dirname = DEFAULT_DIRNAME;
+
+   if (argc) {
+   ret = perf_evlist__prepare_workload(ftrace->evlist,
+   >target,
+   argv, false, true);
+   if (ret < 0)
+   goto out_maps;
+   }
+   return 0;
+
+out_maps:
+   perf_evlist__delete_maps(ftrace->evlist);
+out:
+   perf_evlist__delete(ftrace->evlist);
+
+   return ret;
+}
+
+static void ftrace_teardown(struct perf_ftrace *ftrace)
+{
+   perf_evlist__delete_maps(ftrace->evlist);
+   perf_evlist__delete(ftrace->evlist);
+}
+
 static int
 __cmd_ftrace_live(struct perf_ftrace *ftrace, int argc, const char **argv)
 {
-   int ret = -1;
+   int ret;
const char * const live_usage[] = {
"perf ftrace live [] []",
"perf ftrace live [] --  []",
@@ -1441,47 +1490,22 @@ __cmd_ftrace_live(struct perf_ftrace *ftrace, int argc, 
const char **argv)
if (!argc && perf_target__none(>target))
usage_with_options(live_usage, live_options);
 
-   ret = perf_target__validate(>target);
-   if (ret) {
-   char errbuf[512];
-
-   perf_target__strerror(>target, ret, errbuf, 512);
-   pr_err("%s\n", errbuf);
-   return -EINVAL;
-   }
-
-   ftrace->evlist = perf_evlist__new();
-   if (ftrace->evlist == NULL)
-   return -ENOMEM;
-
-   ret = perf_evlist__create_maps(ftrace->evlist, >target);
+   ret = ftrace_setup(ftrace, argc, argv);
if (ret < 0)
-   goto out;
-
-   if (ftrace->tracer == NULL)
-   ftrace->tracer = DEFAULT_TRACER;
-
-   if (argc && perf_evlist__prepare_workload(ftrace->evlist,
- >target,
- argv, false, true) < 0)
-   goto out_maps;
+   return ret;
 
setup_pager();
 
ret = do_ftrace_live(ftrace);
 
-out_maps:
-   perf_evlist__delete_maps(ftrace->evlist);
-out:
-   perf_evlist__delete(ftrace->evlist);
-
+   ftrace_teardown(ftrace);
return ret;
 }
 
 static int
 __cmd_ftrace_record(struct perf_ftrace *ftrace, int argc, const char **argv)
 {
-   int ret = -1;
+   int ret;
const char * const record_usage[] = {
"perf ftrace record [] []",
"perf ftrace record [] --  []",
@@ -1508,48 +1532,20 @@ __cmd_ftrace_record(struct perf_ftrace *ftrace, int 
argc, const char **argv)
if (!argc && perf_target__none(>target))
usage_with_options(record_usage, record_options);
 
-   ret = perf_target__validate(>target);
-   if (ret) {
-   char errbuf[512];
-
-   perf_target__strerror(>target, ret, errbuf, 512);
-   pr_err("%s\n", errbuf);
-   return -EINVAL;
-   }
-
-   ftrace->evlist = perf_evlist__new();
-   if (ftrace->evlist == NULL)
-   return -ENOMEM;
-
-   ret = perf_evlist__create_maps(ftrace->evlist, >target);
+   ret = ftrace_setup(ftrace, argc, argv);
if (ret < 0)
-   goto out;
-
-   if (ftrace->tracer == NULL)
-   ftrace->tracer = DEFAULT_TRACER;
-
-   if (ftrace->dirname == NULL)
-   ftrace->dirname = DEFAULT_DIRNAME;
-
-   if (argc && perf_evlist__prepare_workload(ftrace->evlist,
- >target,
- argv, false, true) < 0)
-   goto out_maps;
+   return ret;
 

[PATCH 12/18] perf ftrace: Cleanup using ftrace_setup/teardown()

2013-10-15 Thread Namhyung Kim
From: Namhyung Kim namhyung@lge.com

The ftrace sub-commands share some common code so that factor it out
to ftrace_setup() and ftrace_teardown() helpers.

Cc: Steven Rostedt rost...@goodmis.org
Cc: Frederic Weisbecker fweis...@gmail.com
Signed-off-by: Namhyung Kim namhy...@kernel.org
---
 tools/perf/builtin-ftrace.c | 172 +---
 1 file changed, 65 insertions(+), 107 deletions(-)

diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
index 83ed6d797087..fa7a9c59e228 100644
--- a/tools/perf/builtin-ftrace.c
+++ b/tools/perf/builtin-ftrace.c
@@ -1413,10 +1413,59 @@ out:
return ret;
 }
 
+static int ftrace_setup(struct perf_ftrace *ftrace, int argc, const char 
**argv)
+{
+   int ret;
+   char errbuf[512];
+
+   ret = perf_target__validate(ftrace-target);
+   if (ret) {
+   perf_target__strerror(ftrace-target, ret, errbuf, 512);
+   pr_err(%s\n, errbuf);
+   return -EINVAL;
+   }
+
+   ftrace-evlist = perf_evlist__new();
+   if (ftrace-evlist == NULL)
+   return -ENOMEM;
+
+   ret = perf_evlist__create_maps(ftrace-evlist, ftrace-target);
+   if (ret  0)
+   goto out;
+
+   if (ftrace-tracer == NULL)
+   ftrace-tracer = DEFAULT_TRACER;
+
+   if (ftrace-dirname == NULL)
+   ftrace-dirname = DEFAULT_DIRNAME;
+
+   if (argc) {
+   ret = perf_evlist__prepare_workload(ftrace-evlist,
+   ftrace-target,
+   argv, false, true);
+   if (ret  0)
+   goto out_maps;
+   }
+   return 0;
+
+out_maps:
+   perf_evlist__delete_maps(ftrace-evlist);
+out:
+   perf_evlist__delete(ftrace-evlist);
+
+   return ret;
+}
+
+static void ftrace_teardown(struct perf_ftrace *ftrace)
+{
+   perf_evlist__delete_maps(ftrace-evlist);
+   perf_evlist__delete(ftrace-evlist);
+}
+
 static int
 __cmd_ftrace_live(struct perf_ftrace *ftrace, int argc, const char **argv)
 {
-   int ret = -1;
+   int ret;
const char * const live_usage[] = {
perf ftrace live [options] [command],
perf ftrace live [options] -- command [options],
@@ -1441,47 +1490,22 @@ __cmd_ftrace_live(struct perf_ftrace *ftrace, int argc, 
const char **argv)
if (!argc  perf_target__none(ftrace-target))
usage_with_options(live_usage, live_options);
 
-   ret = perf_target__validate(ftrace-target);
-   if (ret) {
-   char errbuf[512];
-
-   perf_target__strerror(ftrace-target, ret, errbuf, 512);
-   pr_err(%s\n, errbuf);
-   return -EINVAL;
-   }
-
-   ftrace-evlist = perf_evlist__new();
-   if (ftrace-evlist == NULL)
-   return -ENOMEM;
-
-   ret = perf_evlist__create_maps(ftrace-evlist, ftrace-target);
+   ret = ftrace_setup(ftrace, argc, argv);
if (ret  0)
-   goto out;
-
-   if (ftrace-tracer == NULL)
-   ftrace-tracer = DEFAULT_TRACER;
-
-   if (argc  perf_evlist__prepare_workload(ftrace-evlist,
- ftrace-target,
- argv, false, true)  0)
-   goto out_maps;
+   return ret;
 
setup_pager();
 
ret = do_ftrace_live(ftrace);
 
-out_maps:
-   perf_evlist__delete_maps(ftrace-evlist);
-out:
-   perf_evlist__delete(ftrace-evlist);
-
+   ftrace_teardown(ftrace);
return ret;
 }
 
 static int
 __cmd_ftrace_record(struct perf_ftrace *ftrace, int argc, const char **argv)
 {
-   int ret = -1;
+   int ret;
const char * const record_usage[] = {
perf ftrace record [options] [command],
perf ftrace record [options] -- command [options],
@@ -1508,48 +1532,20 @@ __cmd_ftrace_record(struct perf_ftrace *ftrace, int 
argc, const char **argv)
if (!argc  perf_target__none(ftrace-target))
usage_with_options(record_usage, record_options);
 
-   ret = perf_target__validate(ftrace-target);
-   if (ret) {
-   char errbuf[512];
-
-   perf_target__strerror(ftrace-target, ret, errbuf, 512);
-   pr_err(%s\n, errbuf);
-   return -EINVAL;
-   }
-
-   ftrace-evlist = perf_evlist__new();
-   if (ftrace-evlist == NULL)
-   return -ENOMEM;
-
-   ret = perf_evlist__create_maps(ftrace-evlist, ftrace-target);
+   ret = ftrace_setup(ftrace, argc, argv);
if (ret  0)
-   goto out;
-
-   if (ftrace-tracer == NULL)
-   ftrace-tracer = DEFAULT_TRACER;
-
-   if (ftrace-dirname == NULL)
-   ftrace-dirname = DEFAULT_DIRNAME;
-
-   if (argc  perf_evlist__prepare_workload(ftrace-evlist,
-