All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andi Kleen <ak@linux.intel.com>
To: Namhyung Kim <namhyung@gmail.com>
Cc: Andi Kleen <andi@firstfloor.org>,
	jolsa@redhat.com, linux-kernel@vger.kernel.org,
	acme@infradead.org
Subject: Re: [PATCH 2/9] perf, tools: Add --branch-history option to report v3
Date: Fri, 23 May 2014 11:11:13 -0700	[thread overview]
Message-ID: <20140523181113.GC29957@tassilo.jf.intel.com> (raw)
In-Reply-To: <87bnuujhsl.fsf@sejong.aot.lge.com>

> > diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
> > index 1a2d7fc..e6d8ed0 100644
> > --- a/tools/perf/builtin-report.c
> > +++ b/tools/perf/builtin-report.c
> > @@ -315,8 +315,9 @@ static int report__setup_sample_type(struct report *rep)
> >  			return -EINVAL;
> >  		}
> >  		if (symbol_conf.use_callchain) {
> > -			ui__error("Selected -g but no callchain data. Did "
> > -				    "you call 'perf record' without -g?\n");
> > +			ui__error("Selected -g or --branch-history but no "
> > +				  "callchain data. Did\n"
> 
> An unwanted newline in the message.

It was intentional to make it fit onto a 80 column terminal
> 
> 
> > +				  "you call 'perf record' without -g?\n");
> >  			return -1;
> >  		}
> >  	} else if (!rep->dont_use_callchains &&
> > @@ -631,6 +632,16 @@ parse_branch_mode(const struct option *opt __maybe_unused,
> >  }
> >  
> >  static int
> > +parse_branch_call_mode(const struct option *opt __maybe_unused,
> > +		  const char *str __maybe_unused, int unset)
> > +{
> > +	int *branch_mode = opt->value;
> > +
> > +	*branch_mode = !unset;
> > +	return 0;
> > +}
> > +
> > +static int
> >  parse_percent_limit(const struct option *opt, const char *str,
> >  		    int unset __maybe_unused)
> >  {
> > @@ -645,7 +656,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
> >  	struct perf_session *session;
> >  	struct stat st;
> >  	bool has_br_stack = false;
> > -	int branch_mode = -1;
> > +	int branch_mode = -1, branch_call_mode = -1;
> >  	int ret = -1;
> >  	char callchain_default_opt[] = "fractal,0.5,callee";
> >  	const char * const report_usage[] = {
> > @@ -754,7 +765,11 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
> >  	OPT_BOOLEAN(0, "group", &symbol_conf.event_group,
> >  		    "Show event group information together"),
> >  	OPT_CALLBACK_NOOPT('b', "branch-stack", &branch_mode, "",
> > -		    "use branch records for histogram filling", parse_branch_mode),
> > +		    "use branch records for per branch histogram filling",
> > +		    parse_branch_mode),
> > +	OPT_CALLBACK_NOOPT(0, "branch-history", &branch_call_mode, "",
> > +		    "add last branch records to call history",
> > +		    parse_branch_call_mode),
> 
> Looks like it can be a boolean option, or at least can share
> parse_branch_mode() callback.

No it can't. It's a tristate.
> 
> 
> >  	OPT_STRING(0, "objdump", &objdump_path, "path",
> >  		   "objdump binary to use for disassembly and annotations"),
> >  	OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle,
> > @@ -804,8 +819,16 @@ repeat:
> >  	has_br_stack = perf_header__has_feat(&session->header,
> >  					     HEADER_BRANCH_STACK);
> >  
> > -	if (branch_mode == -1 && has_br_stack)
> > +	if (branch_mode == -1 && has_br_stack && branch_call_mode == -1)
> >  		sort__mode = SORT_MODE__BRANCH;
> > +	if (branch_call_mode != -1) {
> 
> s/-1/1/ ?

-1 means not specified by the user.


-Andi

  reply	other threads:[~2014-05-23 18:11 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-16 17:05 Implement lbr-as-callgraph v7 Andi Kleen
2014-05-16 17:05 ` [PATCH 1/9] perf, tools: Support handling complete branch stacks as histograms v6 Andi Kleen
2014-05-19  8:21   ` Namhyung Kim
2014-05-23 21:35     ` Andi Kleen
2014-05-26  2:45       ` Namhyung Kim
2014-05-16 17:05 ` [PATCH 2/9] perf, tools: Add --branch-history option to report v3 Andi Kleen
2014-05-19  8:26   ` Namhyung Kim
2014-05-23 18:11     ` Andi Kleen [this message]
2014-05-26  2:55       ` Namhyung Kim
2014-05-16 17:05 ` [PATCH 3/9] perf, tools: Enable printing the srcline in the history v4 Andi Kleen
2014-05-16 17:05 ` [PATCH 4/9] perf, tools: Only print base source file for srcline Andi Kleen
2014-05-16 17:05 ` [PATCH 5/9] perf, tools: Support source line numbers in annotate Andi Kleen
2014-05-16 17:05 ` [PATCH 6/9] perf, tools: Fix srcline sort key output to use width Andi Kleen
2014-05-16 17:05 ` [PATCH 7/9] tools, perf: Make get_srcline fall back to sym+offset Andi Kleen
2014-05-16 17:05 ` [PATCH 8/9] tools, perf: Make srcline output address with -v Andi Kleen
2014-05-16 17:05 ` [PATCH 9/9] tools, perf: Add asprintf replacement Andi Kleen
  -- strict thread matches above, loose matches on Subject: below --
2014-06-20 23:41 perf: Implement lbr-as-callgraph v8 Andi Kleen
2014-06-20 23:41 ` [PATCH 2/9] perf, tools: Add --branch-history option to report v3 Andi Kleen
2014-05-12 23:20 mplement lbr-as-callgraph v6 Andi Kleen
2014-05-12 23:20 ` [PATCH 2/9] perf, tools: Add --branch-history option to report v3 Andi Kleen

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=20140523181113.GC29957@tassilo.jf.intel.com \
    --to=ak@linux.intel.com \
    --cc=acme@infradead.org \
    --cc=andi@firstfloor.org \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=namhyung@gmail.com \
    /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.