提交 c5ff78c3 编写于 作者: A Arnaldo Carvalho de Melo

perf record: Pass perf_record_opts to the callchain cmdline parsing callback

Its all it uses and makes the parsing callback suitable for use by
'perf top', which will happen in a followup patch.

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-wb9eti78bk2jd7wpasro8hsz@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 c79a4393
...@@ -868,11 +868,9 @@ static int get_stack_size(char *str, unsigned long *_size) ...@@ -868,11 +868,9 @@ static int get_stack_size(char *str, unsigned long *_size)
} }
#endif /* LIBUNWIND_SUPPORT */ #endif /* LIBUNWIND_SUPPORT */
static int static int parse_callchain_opt(const struct option *opt, const char *arg, int unset)
parse_callchain_opt(const struct option *opt __maybe_unused, const char *arg,
int unset)
{ {
struct perf_record *rec = (struct perf_record *)opt->value; struct perf_record_opts *opts = opt->value;
char *tok, *name, *saveptr = NULL; char *tok, *name, *saveptr = NULL;
char *buf; char *buf;
int ret = -1; int ret = -1;
...@@ -898,7 +896,7 @@ parse_callchain_opt(const struct option *opt __maybe_unused, const char *arg, ...@@ -898,7 +896,7 @@ parse_callchain_opt(const struct option *opt __maybe_unused, const char *arg,
/* Framepointer style */ /* Framepointer style */
if (!strncmp(name, "fp", sizeof("fp"))) { if (!strncmp(name, "fp", sizeof("fp"))) {
if (!strtok_r(NULL, ",", &saveptr)) { if (!strtok_r(NULL, ",", &saveptr)) {
rec->opts.call_graph = CALLCHAIN_FP; opts->call_graph = CALLCHAIN_FP;
ret = 0; ret = 0;
} else } else
pr_err("callchain: No more arguments " pr_err("callchain: No more arguments "
...@@ -911,20 +909,20 @@ parse_callchain_opt(const struct option *opt __maybe_unused, const char *arg, ...@@ -911,20 +909,20 @@ parse_callchain_opt(const struct option *opt __maybe_unused, const char *arg,
const unsigned long default_stack_dump_size = 8192; const unsigned long default_stack_dump_size = 8192;
ret = 0; ret = 0;
rec->opts.call_graph = CALLCHAIN_DWARF; opts->call_graph = CALLCHAIN_DWARF;
rec->opts.stack_dump_size = default_stack_dump_size; opts->stack_dump_size = default_stack_dump_size;
tok = strtok_r(NULL, ",", &saveptr); tok = strtok_r(NULL, ",", &saveptr);
if (tok) { if (tok) {
unsigned long size = 0; unsigned long size = 0;
ret = get_stack_size(tok, &size); ret = get_stack_size(tok, &size);
rec->opts.stack_dump_size = size; opts->stack_dump_size = size;
} }
if (!ret) if (!ret)
pr_debug("callchain: stack dump size %d\n", pr_debug("callchain: stack dump size %d\n",
rec->opts.stack_dump_size); opts->stack_dump_size);
#endif /* LIBUNWIND_SUPPORT */ #endif /* LIBUNWIND_SUPPORT */
} else { } else {
pr_err("callchain: Unknown -g option " pr_err("callchain: Unknown -g option "
...@@ -937,7 +935,7 @@ parse_callchain_opt(const struct option *opt __maybe_unused, const char *arg, ...@@ -937,7 +935,7 @@ parse_callchain_opt(const struct option *opt __maybe_unused, const char *arg,
free(buf); free(buf);
if (!ret) if (!ret)
pr_debug("callchain: type %d\n", rec->opts.call_graph); pr_debug("callchain: type %d\n", opts->call_graph);
return ret; return ret;
} }
...@@ -1021,9 +1019,9 @@ const struct option record_options[] = { ...@@ -1021,9 +1019,9 @@ const struct option record_options[] = {
"number of mmap data pages"), "number of mmap data pages"),
OPT_BOOLEAN(0, "group", &record.opts.group, OPT_BOOLEAN(0, "group", &record.opts.group,
"put the counters into a counter group"), "put the counters into a counter group"),
OPT_CALLBACK_DEFAULT('g', "call-graph", &record, "mode[,dump_size]", OPT_CALLBACK_DEFAULT('g', "call-graph", &record.opts,
callchain_help, &parse_callchain_opt, "mode[,dump_size]", callchain_help,
"fp"), &parse_callchain_opt, "fp"),
OPT_INCR('v', "verbose", &verbose, OPT_INCR('v', "verbose", &verbose,
"be more verbose (show counter open errors, etc)"), "be more verbose (show counter open errors, etc)"),
OPT_BOOLEAN('q', "quiet", &quiet, "don't print any message"), OPT_BOOLEAN('q', "quiet", &quiet, "don't print any message"),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册