From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Jiri Olsa <jolsa@redhat.com>, LKML <linux-kernel@vger.kernel.org>,
David Ahern <dsahern@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Andi Kleen <andi@firstfloor.org>, Wang Nan <wangnan0@huawei.com>
Subject: [PATCH 01/13] perf hist: Pass struct sample to __hists__add_entry()
Date: Wed, 23 Dec 2015 02:06:58 +0900 [thread overview]
Message-ID: <1450804030-29193-2-git-send-email-namhyung@kernel.org> (raw)
In-Reply-To: <1450804030-29193-1-git-send-email-namhyung@kernel.org>
This is a preparation to add more info into the hist_entry. Also it
already passes too many argument, so passing sample directly will reduce
the overhead of the function call.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/builtin-annotate.c | 7 +++++--
tools/perf/builtin-diff.c | 11 +++++------
tools/perf/tests/hists_link.c | 6 +++---
tools/perf/util/hist.c | 31 +++++++++++++++++--------------
tools/perf/util/hist.h | 4 ++--
5 files changed, 32 insertions(+), 27 deletions(-)
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index e18f1b995ffd..b5b8db0b0338 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -47,7 +47,7 @@ struct perf_annotate {
};
static int perf_evsel__add_sample(struct perf_evsel *evsel,
- struct perf_sample *sample __maybe_unused,
+ struct perf_sample *sample,
struct addr_location *al,
struct perf_annotate *ann)
{
@@ -72,7 +72,10 @@ static int perf_evsel__add_sample(struct perf_evsel *evsel,
return 0;
}
- he = __hists__add_entry(hists, al, NULL, NULL, NULL, 1, 1, 0, true);
+ sample->period = 1;
+ sample->weight = 1;
+
+ he = __hists__add_entry(hists, al, NULL, NULL, NULL, sample, true);
if (he == NULL)
return -ENOMEM;
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 0b180a885ba3..69f5b1feff39 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -311,11 +311,11 @@ static int formula_fprintf(struct hist_entry *he, struct hist_entry *pair,
}
static int hists__add_entry(struct hists *hists,
- struct addr_location *al, u64 period,
- u64 weight, u64 transaction)
+ struct addr_location *al,
+ struct perf_sample *sample)
{
- if (__hists__add_entry(hists, al, NULL, NULL, NULL, period, weight,
- transaction, true) != NULL)
+ if (__hists__add_entry(hists, al, NULL, NULL, NULL,
+ sample, true) != NULL)
return 0;
return -ENOMEM;
}
@@ -336,8 +336,7 @@ static int diff__process_sample_event(struct perf_tool *tool __maybe_unused,
return -1;
}
- if (hists__add_entry(hists, &al, sample->period,
- sample->weight, sample->transaction)) {
+ if (hists__add_entry(hists, &al, sample)) {
pr_warning("problem incrementing symbol period, skipping event\n");
goto out_put;
}
diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c
index 6243e2b2a245..9eac98daecb8 100644
--- a/tools/perf/tests/hists_link.c
+++ b/tools/perf/tests/hists_link.c
@@ -64,7 +64,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
struct perf_evsel *evsel;
struct addr_location al;
struct hist_entry *he;
- struct perf_sample sample = { .period = 1, };
+ struct perf_sample sample = { .period = 1, .weight = 1, };
size_t i = 0, k;
/*
@@ -90,7 +90,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
goto out;
he = __hists__add_entry(hists, &al, NULL,
- NULL, NULL, 1, 1, 0, true);
+ NULL, NULL, &sample, true);
if (he == NULL) {
addr_location__put(&al);
goto out;
@@ -116,7 +116,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
goto out;
he = __hists__add_entry(hists, &al, NULL,
- NULL, NULL, 1, 1, 0, true);
+ NULL, NULL, &sample, true);
if (he == NULL) {
addr_location__put(&al);
goto out;
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 56e97f5af598..039bb91d0a92 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -461,7 +461,7 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
struct symbol *sym_parent,
struct branch_info *bi,
struct mem_info *mi,
- u64 period, u64 weight, u64 transaction,
+ struct perf_sample *sample,
bool sample_self)
{
struct hist_entry entry = {
@@ -478,15 +478,15 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
.level = al->level,
.stat = {
.nr_events = 1,
- .period = period,
- .weight = weight,
+ .period = sample->period,
+ .weight = sample->weight,
},
.parent = sym_parent,
.filtered = symbol__parent_filter(sym_parent) | al->filtered,
.hists = hists,
.branch_info = bi,
.mem_info = mi,
- .transaction = transaction,
+ .transaction = sample->transaction,
};
return hists__findnew_entry(hists, &entry, al, sample_self);
@@ -526,12 +526,13 @@ iter_add_single_mem_entry(struct hist_entry_iter *iter, struct addr_location *al
u64 cost;
struct mem_info *mi = iter->priv;
struct hists *hists = evsel__hists(iter->evsel);
+ struct perf_sample *sample = iter->sample;
struct hist_entry *he;
if (mi == NULL)
return -EINVAL;
- cost = iter->sample->weight;
+ cost = sample->weight;
if (!cost)
cost = 1;
@@ -542,8 +543,10 @@ iter_add_single_mem_entry(struct hist_entry_iter *iter, struct addr_location *al
* and this is indirectly achieved by passing period=weight here
* and the he_stat__add_period() function.
*/
+ sample->period = cost;
+
he = __hists__add_entry(hists, al, iter->parent, NULL, mi,
- cost, cost, 0, true);
+ sample, true);
if (!he)
return -ENOMEM;
@@ -630,6 +633,7 @@ iter_add_next_branch_entry(struct hist_entry_iter *iter, struct addr_location *a
struct branch_info *bi;
struct perf_evsel *evsel = iter->evsel;
struct hists *hists = evsel__hists(evsel);
+ struct perf_sample *sample = iter->sample;
struct hist_entry *he = NULL;
int i = iter->curr;
int err = 0;
@@ -643,9 +647,11 @@ iter_add_next_branch_entry(struct hist_entry_iter *iter, struct addr_location *a
* The report shows the percentage of total branches captured
* and not events sampled. Thus we use a pseudo period of 1.
*/
+ sample->period = 1;
+ sample->weight = bi->flags.cycles ? bi->flags.cycles : 1;
+
he = __hists__add_entry(hists, al, iter->parent, &bi[i], NULL,
- 1, bi->flags.cycles ? bi->flags.cycles : 1,
- 0, true);
+ sample, true);
if (he == NULL)
return -ENOMEM;
@@ -682,8 +688,7 @@ iter_add_single_normal_entry(struct hist_entry_iter *iter, struct addr_location
struct hist_entry *he;
he = __hists__add_entry(evsel__hists(evsel), al, iter->parent, NULL, NULL,
- sample->period, sample->weight,
- sample->transaction, true);
+ sample, true);
if (he == NULL)
return -ENOMEM;
@@ -744,8 +749,7 @@ iter_add_single_cumulative_entry(struct hist_entry_iter *iter,
int err = 0;
he = __hists__add_entry(hists, al, iter->parent, NULL, NULL,
- sample->period, sample->weight,
- sample->transaction, true);
+ sample, true);
if (he == NULL)
return -ENOMEM;
@@ -818,8 +822,7 @@ iter_add_next_cumulative_entry(struct hist_entry_iter *iter,
}
he = __hists__add_entry(evsel__hists(evsel), al, iter->parent, NULL, NULL,
- sample->period, sample->weight,
- sample->transaction, false);
+ sample, false);
if (he == NULL)
return -ENOMEM;
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index a48a2078d288..36439bfad059 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -114,8 +114,8 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
struct addr_location *al,
struct symbol *parent,
struct branch_info *bi,
- struct mem_info *mi, u64 period,
- u64 weight, u64 transaction,
+ struct mem_info *mi,
+ struct perf_sample *sample,
bool sample_self);
int hist_entry_iter__add(struct hist_entry_iter *iter, struct addr_location *al,
int max_stack_depth, void *arg);
--
2.6.4
next prev parent reply other threads:[~2015-12-22 17:08 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-22 17:06 [PATCHSET 00/10] perf tools: Support dynamic sort keys for tracepoints (v4) Namhyung Kim
2015-12-22 17:06 ` Namhyung Kim [this message]
2016-01-09 16:22 ` [tip:perf/core] perf hist: Pass struct sample to __hists__add_entry() tip-bot for Namhyung Kim
2015-12-22 17:06 ` [PATCH 02/13] perf hist: Save raw_data/size for tracepoint events Namhyung Kim
2015-12-23 21:43 ` Arnaldo Carvalho de Melo
2015-12-24 0:45 ` Namhyung Kim
2015-12-24 1:19 ` Arnaldo Carvalho de Melo
2015-12-24 1:05 ` [PATCH v4.1 " Namhyung Kim
2015-12-24 1:39 ` Arnaldo Carvalho de Melo
2015-12-24 2:16 ` [PATCH v4.2 " Namhyung Kim
2016-01-09 16:22 ` [tip:perf/core] perf hist: Save raw_data/ size " tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 03/13] tools lib traceevent: Factor out and export print_event_field[s] Namhyung Kim
2015-12-23 8:50 ` Wangnan (F)
2015-12-23 13:08 ` [PATCH v4.1 " Namhyung Kim
2016-01-04 15:31 ` Steven Rostedt
2016-01-04 18:34 ` Arnaldo Carvalho de Melo
2016-01-09 16:22 ` [tip:perf/core] tools lib traceevent: Factor out and export print_event_field[s]() tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 04/13] perf tools: Pass evlist to setup_sorting() Namhyung Kim
2016-01-09 16:23 ` [tip:perf/core] perf top: Create the evlist sooner tip-bot for Namhyung Kim
2016-01-09 16:23 ` [tip:perf/core] perf tools: Pass evlist to setup_sorting() tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 05/13] perf tools: Add dynamic sort key for tracepoint events Namhyung Kim
2016-01-04 15:04 ` Arnaldo Carvalho de Melo
2016-01-09 16:23 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 06/13] perf tools: Try to show pretty printed output for dynamic sort keys Namhyung Kim
2016-01-04 15:16 ` Arnaldo Carvalho de Melo
2016-01-09 16:24 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 07/13] perf tools: Add 'trace' sort key Namhyung Kim
2016-01-09 16:24 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 08/13] perf tools: Add --raw-trace option Namhyung Kim
2016-01-09 16:24 ` [tip:perf/core] perf report/top: " tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 09/13] perf tools: Support shortcuts for events in dynamic sort keys Namhyung Kim
2016-01-09 16:25 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 10/13] perf tools: Support '<event>.*' dynamic sort key Namhyung Kim
2016-01-09 16:25 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 11/13] perf tools: Skip dynamic fields not defined for current event Namhyung Kim
2016-01-09 16:25 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 12/13] perf tools: Add 'trace_fields' dynamic sort key Namhyung Kim
2016-01-05 10:58 ` [PATCH v2 1/5] perf tools: Fix segfault when using -s trace_fields Namhyung Kim
2016-01-05 10:58 ` [PATCH v2 2/5] perf tools: Add all matching dynamic sort keys for field name Namhyung Kim
2016-01-05 14:20 ` Jiri Olsa
2016-01-09 16:28 ` [tip:perf/core] " tip-bot for Namhyung Kim
2016-01-05 10:58 ` [PATCH v2 3/5] perf tools: Add document for dynamic sort keys Namhyung Kim
2016-01-09 16:28 ` [tip:perf/core] perf report: Add documentation " tip-bot for Namhyung Kim
2016-01-05 10:58 ` [PATCH v2 4/5] perf tools: Support dynamic sort keys for -F/--fields Namhyung Kim
2016-01-05 22:16 ` Arnaldo Carvalho de Melo
2016-01-05 23:57 ` Namhyung Kim
2016-01-05 10:58 ` [PATCH v2 5/5] perf evlist: Add -T/--trace option to show trace fields Namhyung Kim
2016-01-05 22:23 ` Arnaldo Carvalho de Melo
2016-01-06 0:00 ` Namhyung Kim
2016-01-06 1:52 ` Arnaldo Carvalho de Melo
2016-01-05 21:50 ` [PATCH v2 1/5] perf tools: Fix segfault when using -s trace_fields Arnaldo Carvalho de Melo
2016-01-05 23:39 ` Namhyung Kim
2016-01-09 16:26 ` [tip:perf/core] perf tools: Add 'trace_fields' dynamic sort key tip-bot for Namhyung Kim
2015-12-22 17:07 ` [PATCH 13/13] perf tools: Make 'trace' or 'trace_fields' sort key default for tracepoint events Namhyung Kim
2016-01-09 16:26 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-12-23 8:46 ` [PATCHSET 00/10] perf tools: Support dynamic sort keys for tracepoints (v4) Jiri Olsa
2015-12-23 13:10 ` Namhyung Kim
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=1450804030-29193-2-git-send-email-namhyung@kernel.org \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=andi@firstfloor.org \
--cc=dsahern@gmail.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=wangnan0@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).