[tip:perf/core] perf tools: Refine parse/ config callchain functions
Commit-ID: c3a6a8c40538f609923acf9473250266283269a5 Gitweb: http://git.kernel.org/tip/c3a6a8c40538f609923acf9473250266283269a5 Author: Kan Liang AuthorDate: Tue, 4 Aug 2015 04:30:20 -0400 Committer: Arnaldo Carvalho de Melo CommitDate: Wed, 5 Aug 2015 16:42:11 -0300 perf tools: Refine parse/config callchain functions Pass global callchain_param into parse_callchain_record_opt and perf_evsel__config_callgraph as parameter. So we can reuse these functions to parse/config local param for callchain. Signed-off-by: Kan Liang Acked-by: Jiri Olsa Cc: Andi Kleen Cc: Namhyung Kim Link: http://lkml.kernel.org/r/1438677022-34296-3-git-send-email-kan.li...@intel.com Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/builtin-record.c | 2 +- tools/perf/util/callchain.c | 14 +++--- tools/perf/util/callchain.h | 2 +- tools/perf/util/evsel.c | 11 ++- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index f51131b..25cf6b4 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -779,7 +779,7 @@ int record_parse_callchain_opt(const struct option *opt, return 0; } - ret = parse_callchain_record_opt(arg); + ret = parse_callchain_record_opt(arg, _param); if (!ret) callchain_debug(); diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c index 9f643ee..931cca8 100644 --- a/tools/perf/util/callchain.c +++ b/tools/perf/util/callchain.c @@ -53,7 +53,7 @@ static int get_stack_size(const char *str, unsigned long *_size) } #endif /* HAVE_DWARF_UNWIND_SUPPORT */ -int parse_callchain_record_opt(const char *arg) +int parse_callchain_record_opt(const char *arg, struct callchain_param *param) { char *tok, *name, *saveptr = NULL; char *buf; @@ -73,7 +73,7 @@ int parse_callchain_record_opt(const char *arg) /* Framepointer style */ if (!strncmp(name, "fp", sizeof("fp"))) { if (!strtok_r(NULL, ",", )) { - callchain_param.record_mode = CALLCHAIN_FP; + param->record_mode = CALLCHAIN_FP; ret = 0; } else pr_err("callchain: No more arguments " @@ -86,20 +86,20 @@ int parse_callchain_record_opt(const char *arg) const unsigned long default_stack_dump_size = 8192; ret = 0; - callchain_param.record_mode = CALLCHAIN_DWARF; - callchain_param.dump_size = default_stack_dump_size; + param->record_mode = CALLCHAIN_DWARF; + param->dump_size = default_stack_dump_size; tok = strtok_r(NULL, ",", ); if (tok) { unsigned long size = 0; ret = get_stack_size(tok, ); - callchain_param.dump_size = size; + param->dump_size = size; } #endif /* HAVE_DWARF_UNWIND_SUPPORT */ } else if (!strncmp(name, "lbr", sizeof("lbr"))) { if (!strtok_r(NULL, ",", )) { - callchain_param.record_mode = CALLCHAIN_LBR; + param->record_mode = CALLCHAIN_LBR; ret = 0; } else pr_err("callchain: No more arguments " @@ -219,7 +219,7 @@ int perf_callchain_config(const char *var, const char *value) var += sizeof("call-graph.") - 1; if (!strcmp(var, "record-mode")) - return parse_callchain_record_opt(value); + return parse_callchain_record_opt(value, _param); #ifdef HAVE_DWARF_UNWIND_SUPPORT if (!strcmp(var, "dump-size")) { unsigned long size = 0; diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h index 679c2c6..68a32c2 100644 --- a/tools/perf/util/callchain.h +++ b/tools/perf/util/callchain.h @@ -177,7 +177,7 @@ int fill_callchain_info(struct addr_location *al, struct callchain_cursor_node * bool hide_unresolved); extern const char record_callchain_help[]; -int parse_callchain_record_opt(const char *arg); +int parse_callchain_record_opt(const char *arg, struct callchain_param *param); int parse_callchain_report_opt(const char *arg); int perf_callchain_config(const char *var, const char *value); diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 7febfe2..f572f46 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -545,14 +545,15 @@ int perf_evsel__group_desc(struct perf_evsel *evsel, char *buf, size_t size) static void perf_evsel__config_callgraph(struct perf_evsel *evsel, -
[tip:perf/core] perf tools: Refine parse/ config callchain functions
Commit-ID: c3a6a8c40538f609923acf9473250266283269a5 Gitweb: http://git.kernel.org/tip/c3a6a8c40538f609923acf9473250266283269a5 Author: Kan Liang kan.li...@intel.com AuthorDate: Tue, 4 Aug 2015 04:30:20 -0400 Committer: Arnaldo Carvalho de Melo a...@redhat.com CommitDate: Wed, 5 Aug 2015 16:42:11 -0300 perf tools: Refine parse/config callchain functions Pass global callchain_param into parse_callchain_record_opt and perf_evsel__config_callgraph as parameter. So we can reuse these functions to parse/config local param for callchain. Signed-off-by: Kan Liang kan.li...@intel.com Acked-by: Jiri Olsa jo...@kernel.org Cc: Andi Kleen a...@linux.intel.com Cc: Namhyung Kim namhy...@kernel.org Link: http://lkml.kernel.org/r/1438677022-34296-3-git-send-email-kan.li...@intel.com Signed-off-by: Arnaldo Carvalho de Melo a...@redhat.com --- tools/perf/builtin-record.c | 2 +- tools/perf/util/callchain.c | 14 +++--- tools/perf/util/callchain.h | 2 +- tools/perf/util/evsel.c | 11 ++- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index f51131b..25cf6b4 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -779,7 +779,7 @@ int record_parse_callchain_opt(const struct option *opt, return 0; } - ret = parse_callchain_record_opt(arg); + ret = parse_callchain_record_opt(arg, callchain_param); if (!ret) callchain_debug(); diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c index 9f643ee..931cca8 100644 --- a/tools/perf/util/callchain.c +++ b/tools/perf/util/callchain.c @@ -53,7 +53,7 @@ static int get_stack_size(const char *str, unsigned long *_size) } #endif /* HAVE_DWARF_UNWIND_SUPPORT */ -int parse_callchain_record_opt(const char *arg) +int parse_callchain_record_opt(const char *arg, struct callchain_param *param) { char *tok, *name, *saveptr = NULL; char *buf; @@ -73,7 +73,7 @@ int parse_callchain_record_opt(const char *arg) /* Framepointer style */ if (!strncmp(name, fp, sizeof(fp))) { if (!strtok_r(NULL, ,, saveptr)) { - callchain_param.record_mode = CALLCHAIN_FP; + param-record_mode = CALLCHAIN_FP; ret = 0; } else pr_err(callchain: No more arguments @@ -86,20 +86,20 @@ int parse_callchain_record_opt(const char *arg) const unsigned long default_stack_dump_size = 8192; ret = 0; - callchain_param.record_mode = CALLCHAIN_DWARF; - callchain_param.dump_size = default_stack_dump_size; + param-record_mode = CALLCHAIN_DWARF; + param-dump_size = default_stack_dump_size; tok = strtok_r(NULL, ,, saveptr); if (tok) { unsigned long size = 0; ret = get_stack_size(tok, size); - callchain_param.dump_size = size; + param-dump_size = size; } #endif /* HAVE_DWARF_UNWIND_SUPPORT */ } else if (!strncmp(name, lbr, sizeof(lbr))) { if (!strtok_r(NULL, ,, saveptr)) { - callchain_param.record_mode = CALLCHAIN_LBR; + param-record_mode = CALLCHAIN_LBR; ret = 0; } else pr_err(callchain: No more arguments @@ -219,7 +219,7 @@ int perf_callchain_config(const char *var, const char *value) var += sizeof(call-graph.) - 1; if (!strcmp(var, record-mode)) - return parse_callchain_record_opt(value); + return parse_callchain_record_opt(value, callchain_param); #ifdef HAVE_DWARF_UNWIND_SUPPORT if (!strcmp(var, dump-size)) { unsigned long size = 0; diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h index 679c2c6..68a32c2 100644 --- a/tools/perf/util/callchain.h +++ b/tools/perf/util/callchain.h @@ -177,7 +177,7 @@ int fill_callchain_info(struct addr_location *al, struct callchain_cursor_node * bool hide_unresolved); extern const char record_callchain_help[]; -int parse_callchain_record_opt(const char *arg); +int parse_callchain_record_opt(const char *arg, struct callchain_param *param); int parse_callchain_report_opt(const char *arg); int perf_callchain_config(const char *var, const char *value); diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 7febfe2..f572f46 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -545,14 +545,15 @@ int