All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Jiri Olsa <jolsa@redhat.com>, David Ahern <dsahern@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Hemant Kumar <hemant@linux.vnet.ibm.com>
Subject: Re: [PATCH 5/5] perf probe: Use PARSE_OPT_EXCLUSIVE flag
Date: Thu, 23 Oct 2014 14:00:34 +0900	[thread overview]
Message-ID: <54488B72.9090902@hitachi.com> (raw)
In-Reply-To: <1413990949-13953-6-git-send-email-namhyung@kernel.org>

Hi Namhyng,


(2014/10/23 0:15), Namhyung Kim wrote:
> The perf probe has some exclusive options.  Use new PARSE_OPT_EXCLUSIVE
> flag to simplify the code and show more compact usage.
> 
>   $ perf probe -l -a foo
>     Error: switch `a' cannot be used with switch `l'
> 
>    usage: perf probe [<options>] 'PROBEDEF' ['PROBEDEF' ...]
>       or: perf probe [<options>] --add 'PROBEDEF' [--add 'PROBEDEF' ...]
>       or: perf probe [<options>] --del '[GROUP:]EVENT' ...
>       or: perf probe --list
>       or: perf probe [<options>] --line 'LINEDESC'
>       or: perf probe [<options>] --vars 'PROBEPOINT'
> 
>       -a, --add <[EVENT=]FUNC[@SRC][+OFF|%return|:RL|;PT]|SRC:AL|SRC;PT [[NAME=]ARG ...]>
>                             probe point definition, where
> 		GROUP:	Group name (optional)
> 		EVENT:	Event name
> 		FUNC:	Function name
> 		OFF:	Offset from function entry (in byte)
> 		%return:	Put the probe at function return
> 		SRC:	Source code path
> 		RL:	Relative line number from function entry.
> 		AL:	Absolute line number in file.
> 		PT:	Lazy expression of line code.
> 		ARG:	Probe argument (local variable name or
> 			kprobe-tracer argument format.)
> 
>       -l, --list            list up current probe events
> 

Thanks! this looks very good to me:)

Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>

> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>  tools/perf/builtin-probe.c | 54 ++++++++--------------------------------------
>  1 file changed, 9 insertions(+), 45 deletions(-)
> 
> diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
> index 04412b4770a2..23d6e7f03cf1 100644
> --- a/tools/perf/builtin-probe.c
> +++ b/tools/perf/builtin-probe.c
> @@ -312,7 +312,7 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
>  #endif
>  		NULL
>  };
> -	const struct option options[] = {
> +	struct option options[] = {
>  	OPT_INCR('v', "verbose", &verbose,
>  		    "be more verbose (show parsed arguments, etc)"),
>  	OPT_BOOLEAN('l', "list", &params.list_events,
> @@ -382,6 +382,14 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
>  	};
>  	int ret;
>  
> +	set_option_flag(options, 'a', "add", PARSE_OPT_EXCLUSIVE);
> +	set_option_flag(options, 'd', "del", PARSE_OPT_EXCLUSIVE);
> +	set_option_flag(options, 'l', "list", PARSE_OPT_EXCLUSIVE);
> +#ifdef HAVE_DWARF_SUPPORT
> +	set_option_flag(options, 'L', "line", PARSE_OPT_EXCLUSIVE);
> +	set_option_flag(options, 'V', "vars", PARSE_OPT_EXCLUSIVE);
> +#endif
> +
>  	argc = parse_options(argc, argv, options, probe_usage,
>  			     PARSE_OPT_STOP_AT_NON_OPTION);
>  	if (argc > 0) {
> @@ -409,22 +417,6 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
>  	symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL);
>  
>  	if (params.list_events) {
> -		if (params.mod_events) {
> -			pr_err("  Error: Don't use --list with --add/--del.\n");
> -			usage_with_options(probe_usage, options);
> -		}
> -		if (params.show_lines) {
> -			pr_err("  Error: Don't use --list with --line.\n");
> -			usage_with_options(probe_usage, options);
> -		}
> -		if (params.show_vars) {
> -			pr_err(" Error: Don't use --list with --vars.\n");
> -			usage_with_options(probe_usage, options);
> -		}
> -		if (params.show_funcs) {
> -			pr_err("  Error: Don't use --list with --funcs.\n");
> -			usage_with_options(probe_usage, options);
> -		}
>  		if (params.uprobes) {
>  			pr_warning("  Error: Don't use --list with --exec.\n");
>  			usage_with_options(probe_usage, options);
> @@ -435,19 +427,6 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
>  		return ret;
>  	}
>  	if (params.show_funcs) {
> -		if (params.nevents != 0 || params.dellist) {
> -			pr_err("  Error: Don't use --funcs with"
> -			       " --add/--del.\n");
> -			usage_with_options(probe_usage, options);
> -		}
> -		if (params.show_lines) {
> -			pr_err("  Error: Don't use --funcs with --line.\n");
> -			usage_with_options(probe_usage, options);
> -		}
> -		if (params.show_vars) {
> -			pr_err("  Error: Don't use --funcs with --vars.\n");
> -			usage_with_options(probe_usage, options);
> -		}
>  		if (!params.filter)
>  			params.filter = strfilter__new(DEFAULT_FUNC_FILTER,
>  						       NULL);
> @@ -462,16 +441,6 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
>  
>  #ifdef HAVE_DWARF_SUPPORT
>  	if (params.show_lines) {
> -		if (params.mod_events) {
> -			pr_err("  Error: Don't use --line with"
> -			       " --add/--del.\n");
> -			usage_with_options(probe_usage, options);
> -		}
> -		if (params.show_vars) {
> -			pr_err(" Error: Don't use --line with --vars.\n");
> -			usage_with_options(probe_usage, options);
> -		}
> -
>  		ret = show_line_range(&params.line_range, params.target,
>  				      params.uprobes);
>  		if (ret < 0)
> @@ -479,11 +448,6 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused)
>  		return ret;
>  	}
>  	if (params.show_vars) {
> -		if (params.mod_events) {
> -			pr_err("  Error: Don't use --vars with"
> -			       " --add/--del.\n");
> -			usage_with_options(probe_usage, options);
> -		}
>  		if (!params.filter)
>  			params.filter = strfilter__new(DEFAULT_VAR_FILTER,
>  						       NULL);
> 


-- 
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Research Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com



  reply	other threads:[~2014-10-23  5:00 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-22 15:15 [PATCHSET 0/5] perf tools: option parsing improvement Namhyung Kim
2014-10-22 15:15 ` [PATCH 1/5] perf tools: Add PARSE_OPT_DISABLED flag Namhyung Kim
2014-10-30  6:43   ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-10-22 15:15 ` [PATCH 2/5] perf tools: Export usage string and option table of perf record Namhyung Kim
2014-10-30  6:44   ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-10-22 15:15 ` [PATCH 3/5] perf kvm: Print kvm specific --help output Namhyung Kim
2014-10-30  6:44   ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-10-22 15:15 ` [PATCH 4/5] perf tools: Add support for exclusive option Namhyung Kim
2014-10-23  5:05   ` Masami Hiramatsu
2014-10-23 20:29     ` Arnaldo Carvalho de Melo
2014-10-24  0:40       ` Namhyung Kim
2014-10-30  6:44   ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-10-22 15:15 ` [PATCH 5/5] perf probe: Use PARSE_OPT_EXCLUSIVE flag Namhyung Kim
2014-10-23  5:00   ` Masami Hiramatsu [this message]
2014-10-30  6:44   ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-10-23  3:06 ` [PATCHSET 0/5] perf tools: option parsing improvement Hemant Kumar
2014-10-23 20:33 ` Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54488B72.9090902@hitachi.com \
    --to=masami.hiramatsu.pt@hitachi.com \
    --cc=acme@kernel.org \
    --cc=dsahern@gmail.com \
    --cc=hemant@linux.vnet.ibm.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.