Re: [RFC/PATCH 2/2] perf sched: Make common options cascading

From: Jiri Olsa
Date: Mon Oct 24 2016 - 13:03:42 EST


On Mon, Oct 24, 2016 at 12:00:03PM +0900, Namhyung Kim wrote:
> The -i and -v options can be used in subcommands so enable cascading the
> sched_options. This fixes the following inconvenience in 'perf sched':
>
> $ perf sched -i perf.data.sched map
> ... (it works well) ...
>
> $ perf sched map -i perf.data.sched
> Error: unknown switch `i'
>
> Usage: perf sched map [<options>]
>
> --color-cpus <cpus>
> highlight given CPUs in map
> --color-pids <pids>
> highlight given pids in map
> --compact map output in compact mode
> --cpus <cpus> display given CPUs in map
>
> With this patch, the second command line works with the perf.data.sched
> data file.
>
> Cc: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
> Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>

good idea, I'll use it in c2c ;-)

for both:

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

thanks,
jirka

> ---
> tools/perf/builtin-sched.c | 24 ++++++++++++------------
> 1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
> index f5503ca22e1c..8ca1b5409289 100644
> --- a/tools/perf/builtin-sched.c
> +++ b/tools/perf/builtin-sched.c
> @@ -1954,6 +1954,15 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
> .next_shortname2 = '0',
> .skip_merge = 0,
> };
> + const struct option sched_options[] = {
> + OPT_STRING('i', "input", &input_name, "file",
> + "input file name"),
> + OPT_INCR('v', "verbose", &verbose,
> + "be more verbose (show symbol address, etc)"),
> + OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
> + "dump raw trace in ASCII"),
> + OPT_END()
> + };
> const struct option latency_options[] = {
> OPT_STRING('s', "sort", &sched.sort_order, "key[,key2...]",
> "sort by key(s): runtime, switch, avg, max"),
> @@ -1965,7 +1974,7 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
> "dump raw trace in ASCII"),
> OPT_BOOLEAN('p', "pids", &sched.skip_merge,
> "latency stats per pid instead of per comm"),
> - OPT_END()
> + OPT_PARENT(sched_options)
> };
> const struct option replay_options[] = {
> OPT_UINTEGER('r', "repeat", &sched.replay_repeat,
> @@ -1975,16 +1984,7 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
> OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
> "dump raw trace in ASCII"),
> OPT_BOOLEAN('f', "force", &sched.force, "don't complain, do it"),
> - OPT_END()
> - };
> - const struct option sched_options[] = {
> - OPT_STRING('i', "input", &input_name, "file",
> - "input file name"),
> - OPT_INCR('v', "verbose", &verbose,
> - "be more verbose (show symbol address, etc)"),
> - OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace,
> - "dump raw trace in ASCII"),
> - OPT_END()
> + OPT_PARENT(sched_options)
> };
> const struct option map_options[] = {
> OPT_BOOLEAN(0, "compact", &sched.map.comp,
> @@ -1995,7 +1995,7 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
> "highlight given CPUs in map"),
> OPT_STRING(0, "cpus", &sched.map.cpus_str, "cpus",
> "display given CPUs in map"),
> - OPT_END()
> + OPT_PARENT(sched_options)
> };
> const char * const latency_usage[] = {
> "perf sched latency [<options>]",
> --
> 2.10.0
>