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

perf script: Don't use globals where not needed to

Some variables were global but used in just one function, so move it to
where it belongs.

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-eukt8bzp4t2n2z3s8ue5ofwb@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 b070a547
...@@ -24,7 +24,6 @@ static u64 last_timestamp; ...@@ -24,7 +24,6 @@ static u64 last_timestamp;
static u64 nr_unordered; static u64 nr_unordered;
extern const struct option record_options[]; extern const struct option record_options[];
static bool no_callchain; static bool no_callchain;
static bool show_full_info;
static bool system_wide; static bool system_wide;
static const char *cpu_list; static const char *cpu_list;
static DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS); static DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS);
...@@ -473,8 +472,6 @@ static int cleanup_scripting(void) ...@@ -473,8 +472,6 @@ static int cleanup_scripting(void)
return scripting_ops->stop_script(); return scripting_ops->stop_script();
} }
static const char *input_name;
static int process_sample_event(struct perf_tool *tool __maybe_unused, static int process_sample_event(struct perf_tool *tool __maybe_unused,
union perf_event *event, union perf_event *event,
struct perf_sample *sample, struct perf_sample *sample,
...@@ -1156,16 +1153,36 @@ static int has_required_arg(char *script_path) ...@@ -1156,16 +1153,36 @@ static int has_required_arg(char *script_path)
return n_args; return n_args;
} }
static const char * const script_usage[] = { static int have_cmd(int argc, const char **argv)
"perf script [<options>]", {
"perf script [<options>] record <script> [<record-options>] <command>", char **__argv = malloc(sizeof(const char *) * argc);
"perf script [<options>] report <script> [script-args]",
"perf script [<options>] <script> [<record-options>] <command>",
"perf script [<options>] <top-script> [script-args]",
NULL
};
static const struct option options[] = { if (!__argv) {
pr_err("malloc failed\n");
return -1;
}
memcpy(__argv, argv, sizeof(const char *) * argc);
argc = parse_options(argc, (const char **)__argv, record_options,
NULL, PARSE_OPT_STOP_AT_NON_OPTION);
free(__argv);
system_wide = (argc == 0);
return 0;
}
int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
{
bool show_full_info = false;
const char *input_name = NULL;
char *rec_script_path = NULL;
char *rep_script_path = NULL;
struct perf_session *session;
char *script_path = NULL;
const char **__argv;
int i, j, err;
const struct option options[] = {
OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
"dump raw trace in ASCII"), "dump raw trace in ASCII"),
OPT_INCR('v', "verbose", &verbose, OPT_INCR('v', "verbose", &verbose,
...@@ -1179,8 +1196,7 @@ static const struct option options[] = { ...@@ -1179,8 +1196,7 @@ static const struct option options[] = {
parse_scriptname), parse_scriptname),
OPT_STRING('g', "gen-script", &generate_script_lang, "lang", OPT_STRING('g', "gen-script", &generate_script_lang, "lang",
"generate perf-script.xx script in specified language"), "generate perf-script.xx script in specified language"),
OPT_STRING('i', "input", &input_name, "file", OPT_STRING('i', "input", &input_name, "file", "input file name"),
"input file name"),
OPT_BOOLEAN('d', "debug-mode", &debug_mode, OPT_BOOLEAN('d', "debug-mode", &debug_mode,
"do various checks like samples ordering and lost events"), "do various checks like samples ordering and lost events"),
OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name, OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name,
...@@ -1195,8 +1211,7 @@ static const struct option options[] = { ...@@ -1195,8 +1211,7 @@ static const struct option options[] = {
"comma separated output fields prepend with 'type:'. " "comma separated output fields prepend with 'type:'. "
"Valid types: hw,sw,trace,raw. " "Valid types: hw,sw,trace,raw. "
"Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso," "Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso,"
"addr,symoff", "addr,symoff", parse_output_fields),
parse_output_fields),
OPT_BOOLEAN('a', "all-cpus", &system_wide, OPT_BOOLEAN('a', "all-cpus", &system_wide,
"system-wide collection from all CPUs"), "system-wide collection from all CPUs"),
OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]", OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]",
...@@ -1208,37 +1223,16 @@ static const struct option options[] = { ...@@ -1208,37 +1223,16 @@ static const struct option options[] = {
"display extended information from perf.data file"), "display extended information from perf.data file"),
OPT_BOOLEAN('\0', "show-kernel-path", &symbol_conf.show_kernel_path, OPT_BOOLEAN('\0', "show-kernel-path", &symbol_conf.show_kernel_path,
"Show the path of [kernel.kallsyms]"), "Show the path of [kernel.kallsyms]"),
OPT_END() OPT_END()
}; };
const char * const script_usage[] = {
static int have_cmd(int argc, const char **argv) "perf script [<options>]",
{ "perf script [<options>] record <script> [<record-options>] <command>",
char **__argv = malloc(sizeof(const char *) * argc); "perf script [<options>] report <script> [script-args]",
"perf script [<options>] <script> [<record-options>] <command>",
if (!__argv) { "perf script [<options>] <top-script> [script-args]",
pr_err("malloc failed\n"); NULL
return -1; };
}
memcpy(__argv, argv, sizeof(const char *) * argc);
argc = parse_options(argc, (const char **)__argv, record_options,
NULL, PARSE_OPT_STOP_AT_NON_OPTION);
free(__argv);
system_wide = (argc == 0);
return 0;
}
int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
{
char *rec_script_path = NULL;
char *rep_script_path = NULL;
struct perf_session *session;
char *script_path = NULL;
const char **__argv;
int i, j, err;
setup_scripting(); setup_scripting();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册