From: Arnaldo Carvalho de Melo <acme@redhat.com>
To: Eric B Munson <ebmunson@us.ibm.com>
Cc: a.p.zijlstra@chello.nl, paulus@samba.org, mingo@elte.hu,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/5] Change perf_session post processing functions to take histogram tree
Date: Fri, 5 Mar 2010 12:09:20 -0300 [thread overview]
Message-ID: <20100305150920.GA20213@ghostprotocols.net> (raw)
In-Reply-To: <e6862a7256b24aad7d326b84058654763883ca02.1267630395.git.ebmunson@us.ibm.com>
Em Wed, Mar 03, 2010 at 03:38:26PM +0000, Eric B Munson escreveu:
> Now that report can store historgrams for multiple events we need
> to be able to do the post processing work for each histogram.
> This patch changes the post processing functions so that they can
> be called individually for each event's histogram.
here you forgot to change builtin-report.c
cc1: warnings being treated as errors
builtin-report.c: In function ‘__cmd_report’:
builtin-report.c:228: warning: passing argument 1 of ‘perf_session__collapse_resort’ from incompatible pointer type
builtin-report.c:229: warning: passing argument 1 of ‘perf_session__output_resort’ from incompatible pointer type
builtin-report.c:231: warning: passing argument 1 of ‘perf_session__fprintf_hists’ from incompatible pointer type
builtin-report.c:231: error: too few arguments to function ‘perf_session__fprintf_hists’
make: *** [builtin-report.o] Error 1
make: *** Waiting for unfinished jobs....
rm .perf.dev.null
make: Leaving directory `/home/acme/git/linux-2.6-tip/tools/perf'
[acme@emilia linux-2.6-tip]$
It breaks bisection, I'm fixing this now before testing and pushing to Ingo.
- Arnaldo
> Signed-off-by: Eric B Munson <ebmunson@us.ibm.com>
> ---
> tools/perf/builtin-annotate.c | 4 ++--
> tools/perf/builtin-diff.c | 9 +++++----
> tools/perf/util/hist.c | 39 ++++++++++++++++++++-------------------
> tools/perf/util/hist.h | 9 +++++----
> 4 files changed, 32 insertions(+), 29 deletions(-)
>
> diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
> index 4b734c7..6ad7148 100644
> --- a/tools/perf/builtin-annotate.c
> +++ b/tools/perf/builtin-annotate.c
> @@ -564,8 +564,8 @@ static int __cmd_annotate(void)
> if (verbose > 2)
> dsos__fprintf(stdout);
>
> - perf_session__collapse_resort(session);
> - perf_session__output_resort(session, session->event_total[0]);
> + perf_session__collapse_resort(&session->hists);
> + perf_session__output_resort(&session->hists, session->event_total[0]);
> perf_session__find_annotations(session);
> out_delete:
> perf_session__delete(session);
> diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
> index 20df735..d2781fb 100644
> --- a/tools/perf/builtin-diff.c
> +++ b/tools/perf/builtin-diff.c
> @@ -115,7 +115,7 @@ static void perf_session__resort_hist_entries(struct perf_session *self)
>
> static void perf_session__set_hist_entries_positions(struct perf_session *self)
> {
> - perf_session__output_resort(self, self->events_stats.total);
> + perf_session__output_resort(&self->hists, self->events_stats.total);
> perf_session__resort_hist_entries(self);
> }
>
> @@ -167,13 +167,14 @@ static int __cmd_diff(void)
> goto out_delete;
> }
>
> - perf_session__output_resort(session[1], session[1]->events_stats.total);
> + perf_session__output_resort(&(session[1]->hists), session[1]->events_stats.total);
> if (show_displacement)
> perf_session__set_hist_entries_positions(session[0]);
>
> perf_session__match_hists(session[0], session[1]);
> - perf_session__fprintf_hists(session[1], session[0],
> - show_displacement, stdout);
> + perf_session__fprintf_hists(&(session[1]->hists), session[0],
> + show_displacement, stdout,
> + session[1]->events_stats.total);
> out_delete:
> for (i = 0; i < 2; ++i)
> perf_session__delete(session[i]);
> diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
> index 55dd911..73ebb6f 100644
> --- a/tools/perf/util/hist.c
> +++ b/tools/perf/util/hist.c
> @@ -130,7 +130,7 @@ static void collapse__insert_entry(struct rb_root *root, struct hist_entry *he)
> rb_insert_color(&he->rb_node, root);
> }
>
> -void perf_session__collapse_resort(struct perf_session *self)
> +void perf_session__collapse_resort(struct rb_root *hists)
> {
> struct rb_root tmp;
> struct rb_node *next;
> @@ -140,17 +140,17 @@ void perf_session__collapse_resort(struct perf_session *self)
> return;
>
> tmp = RB_ROOT;
> - next = rb_first(&self->hists);
> + next = rb_first(hists);
>
> while (next) {
> n = rb_entry(next, struct hist_entry, rb_node);
> next = rb_next(&n->rb_node);
>
> - rb_erase(&n->rb_node, &self->hists);
> + rb_erase(&n->rb_node, hists);
> collapse__insert_entry(&tmp, n);
> }
>
> - self->hists = tmp;
> + *hists = tmp;
> }
>
> /*
> @@ -183,7 +183,7 @@ static void perf_session__insert_output_hist_entry(struct rb_root *root,
> rb_insert_color(&he->rb_node, root);
> }
>
> -void perf_session__output_resort(struct perf_session *self, u64 total_samples)
> +void perf_session__output_resort(struct rb_root *hists, u64 total_samples)
> {
> struct rb_root tmp;
> struct rb_node *next;
> @@ -194,18 +194,18 @@ void perf_session__output_resort(struct perf_session *self, u64 total_samples)
> total_samples * (callchain_param.min_percent / 100);
>
> tmp = RB_ROOT;
> - next = rb_first(&self->hists);
> + next = rb_first(hists);
>
> while (next) {
> n = rb_entry(next, struct hist_entry, rb_node);
> next = rb_next(&n->rb_node);
>
> - rb_erase(&n->rb_node, &self->hists);
> + rb_erase(&n->rb_node, hists);
> perf_session__insert_output_hist_entry(&tmp, n,
> min_callchain_hits);
> }
>
> - self->hists = tmp;
> + *hists = tmp;
> }
>
> static size_t callchain__fprintf_left_margin(FILE *fp, int left_margin)
> @@ -456,10 +456,10 @@ static size_t hist_entry_callchain__fprintf(FILE *fp, struct hist_entry *self,
> }
>
> static size_t hist_entry__fprintf(struct hist_entry *self,
> - struct perf_session *session,
> struct perf_session *pair_session,
> bool show_displacement,
> - long displacement, FILE *fp)
> + long displacement, FILE *fp,
> + u64 session_total)
> {
> struct sort_entry *se;
> u64 count, total;
> @@ -474,7 +474,7 @@ static size_t hist_entry__fprintf(struct hist_entry *self,
> total = pair_session->events_stats.total;
> } else {
> count = self->count;
> - total = session->events_stats.total;
> + total = session_total;
> }
>
> if (total)
> @@ -496,8 +496,8 @@ static size_t hist_entry__fprintf(struct hist_entry *self,
>
> if (total > 0)
> old_percent = (count * 100.0) / total;
> - if (session->events_stats.total > 0)
> - new_percent = (self->count * 100.0) / session->events_stats.total;
> + if (session_total > 0)
> + new_percent = (self->count * 100.0) / session_total;
>
> diff = new_percent - old_percent;
>
> @@ -544,16 +544,17 @@ static size_t hist_entry__fprintf(struct hist_entry *self,
> left_margin -= thread__comm_len(self->thread);
> }
>
> - hist_entry_callchain__fprintf(fp, self, session->events_stats.total,
> + hist_entry_callchain__fprintf(fp, self, session_total,
> left_margin);
> }
>
> return ret;
> }
>
> -size_t perf_session__fprintf_hists(struct perf_session *self,
> +size_t perf_session__fprintf_hists(struct rb_root *hists,
> struct perf_session *pair,
> - bool show_displacement, FILE *fp)
> + bool show_displacement, FILE *fp,
> + u64 session_total)
> {
> struct sort_entry *se;
> struct rb_node *nd;
> @@ -641,7 +642,7 @@ size_t perf_session__fprintf_hists(struct perf_session *self,
> fprintf(fp, "\n#\n");
>
> print_entries:
> - for (nd = rb_first(&self->hists); nd; nd = rb_next(nd)) {
> + for (nd = rb_first(hists); nd; nd = rb_next(nd)) {
> struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node);
>
> if (show_displacement) {
> @@ -652,8 +653,8 @@ print_entries:
> displacement = 0;
> ++position;
> }
> - ret += hist_entry__fprintf(h, self, pair, show_displacement,
> - displacement, fp);
> + ret += hist_entry__fprintf(h, pair, show_displacement,
> + displacement, fp, session_total);
> }
>
> free(rem_sq_bracket);
> diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
> index 7b48590..16f360c 100644
> --- a/tools/perf/util/hist.h
> +++ b/tools/perf/util/hist.h
> @@ -20,9 +20,10 @@ extern int64_t hist_entry__cmp(struct hist_entry *, struct hist_entry *);
> extern int64_t hist_entry__collapse(struct hist_entry *, struct hist_entry *);
> void hist_entry__free(struct hist_entry *);
>
> -void perf_session__output_resort(struct perf_session *self, u64 total_samples);
> -void perf_session__collapse_resort(struct perf_session *self);
> -size_t perf_session__fprintf_hists(struct perf_session *self,
> +void perf_session__output_resort(struct rb_root *hists, u64 total_samples);
> +void perf_session__collapse_resort(struct rb_root *hists);
> +size_t perf_session__fprintf_hists(struct rb_root *hists,
> struct perf_session *pair,
> - bool show_displacement, FILE *fp);
> + bool show_displacement, FILE *fp,
> + u64 session_total);
> #endif /* __PERF_HIST_H */
> --
> 1.6.3.3
next prev parent reply other threads:[~2010-03-05 15:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-03 15:38 [PATCH 0/5] Add multiple event support to perf report V2 Eric B Munson
2010-03-03 15:38 ` [PATCH 1/5] Add ID and to recorded event data when recording multiple events Eric B Munson
2010-03-03 15:38 ` [PATCH 2/5] Change add_hist_entry to take the tree root instead of session Eric B Munson
2010-03-03 15:38 ` [PATCH 3/5] Add storage for seperating event types in report Eric B Munson
2010-03-03 15:38 ` [PATCH 4/5] Change perf_session post processing functions to take histogram tree Eric B Munson
2010-03-05 15:09 ` Arnaldo Carvalho de Melo [this message]
2010-03-03 15:38 ` [PATCH 5/5] Add multiple event support to perf report Eric B Munson
2010-03-05 15:51 ` [PATCH 0/5] Add multiple event support to perf report V2 Arnaldo Carvalho de Melo
-- strict thread matches above, loose matches on Subject: below --
2010-03-02 14:42 [PATCH 1/5] Add ID and STREAM_ID to recorded event data Eric B Munson
2010-03-02 14:42 ` [PATCH 2/5] Change add_hist_entry to take the tree root instead of session Eric B Munson
2010-03-02 14:42 ` [PATCH 3/5] Add storage for seperating event types in report Eric B Munson
2010-03-02 14:42 ` [PATCH 0/5] [RFC] Add multiple event support to perf report Eric B Munson
2010-03-02 14:42 ` [PATCH 4/5] Change perf_session post processing functions to take histogram tree Eric B Munson
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=20100305150920.GA20213@ghostprotocols.net \
--to=acme@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=ebmunson@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulus@samba.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox