From: Jin Yao <yao.jin@linux.intel.com>
To: acme@kernel.org, jolsa@kernel.org, peterz@infradead.org,
mingo@redhat.com, alexander.shishkin@linux.intel.com
Cc: Linux-kernel@vger.kernel.org, ak@linux.intel.com,
kan.liang@intel.com, yao.jin@intel.com,
Jin Yao <yao.jin@linux.intel.com>
Subject: [PATCH v6 2/4] perf util: Use __block_info__cmp to replace block_pair_cmp
Date: Sun, 2 Feb 2020 22:16:53 +0800 [thread overview]
Message-ID: <20200202141655.32053-3-yao.jin@linux.intel.com> (raw)
In-Reply-To: <20200202141655.32053-1-yao.jin@linux.intel.com>
perf-diff uses block_pair_cmp to compare two blocks. The
block_info__cmp has the similar functionality and it's
a bit more complete.
This patch removes the block_pair_cmp and use __block_info__cmp
instead. The __block_info__cmp is wrapped by block_info__cmp
and it doesn't receive perf_hpp_fmt parameter.
v6:
---
New in this patch set.
Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
---
tools/perf/builtin-diff.c | 21 ++-------------------
tools/perf/util/block-info.c | 9 +++++++--
tools/perf/util/block-info.h | 2 ++
3 files changed, 11 insertions(+), 21 deletions(-)
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index f8b6ae557d8b..dc151b3ae189 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -572,29 +572,12 @@ static void init_block_hist(struct block_hist *bh)
bh->valid = true;
}
-static int block_pair_cmp(struct hist_entry *a, struct hist_entry *b)
-{
- struct block_info *bi_a = a->block_info;
- struct block_info *bi_b = b->block_info;
- int cmp;
-
- if (!bi_a->sym || !bi_b->sym)
- return -1;
-
- cmp = strcmp(bi_a->sym->name, bi_b->sym->name);
-
- if ((!cmp) && (bi_a->start == bi_b->start) && (bi_a->end == bi_b->end))
- return 0;
-
- return -1;
-}
-
static struct hist_entry *get_block_pair(struct hist_entry *he,
struct hists *hists_pair)
{
struct rb_root_cached *root = hists_pair->entries_in;
struct rb_node *next = rb_first_cached(root);
- int cmp;
+ int64_t cmp;
while (next != NULL) {
struct hist_entry *he_pair = rb_entry(next, struct hist_entry,
@@ -602,7 +585,7 @@ static struct hist_entry *get_block_pair(struct hist_entry *he,
next = rb_next(&he_pair->rb_node_in);
- cmp = block_pair_cmp(he_pair, he);
+ cmp = __block_info__cmp(he_pair, he);
if (!cmp)
return he_pair;
}
diff --git a/tools/perf/util/block-info.c b/tools/perf/util/block-info.c
index 4ed5bce945ad..c8833f1bbc3a 100644
--- a/tools/perf/util/block-info.c
+++ b/tools/perf/util/block-info.c
@@ -65,8 +65,7 @@ struct block_info *block_info__new(void)
return bi;
}
-int64_t block_info__cmp(struct perf_hpp_fmt *fmt __maybe_unused,
- struct hist_entry *left, struct hist_entry *right)
+int64_t __block_info__cmp(struct hist_entry *left, struct hist_entry *right)
{
struct block_info *bi_l = left->block_info;
struct block_info *bi_r = right->block_info;
@@ -91,6 +90,12 @@ int64_t block_info__cmp(struct perf_hpp_fmt *fmt __maybe_unused,
return (int64_t)(bi_r->end - bi_l->end);
}
+int64_t block_info__cmp(struct perf_hpp_fmt *fmt __maybe_unused,
+ struct hist_entry *left, struct hist_entry *right)
+{
+ return __block_info__cmp(left, right);
+}
+
static void init_block_info(struct block_info *bi, struct symbol *sym,
struct cyc_hist *ch, int offset,
u64 total_cycles)
diff --git a/tools/perf/util/block-info.h b/tools/perf/util/block-info.h
index bef0d75e9819..a0fa9fefeaf0 100644
--- a/tools/perf/util/block-info.h
+++ b/tools/perf/util/block-info.h
@@ -61,6 +61,8 @@ static inline void __block_info__zput(struct block_info **bi)
#define block_info__zput(bi) __block_info__zput(&bi)
+int64_t __block_info__cmp(struct hist_entry *left, struct hist_entry *right);
+
int64_t block_info__cmp(struct perf_hpp_fmt *fmt __maybe_unused,
struct hist_entry *left, struct hist_entry *right);
--
2.17.1
next prev parent reply other threads:[~2020-02-02 14:17 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-02 14:16 [PATCH v6 0/4] perf: Refactor the block info implementation Jin Yao
2020-02-02 14:16 ` [PATCH v6 1/4] perf util: Fix wrong block address comparison in block_info__cmp Jin Yao
2020-03-19 14:10 ` [tip: perf/core] perf block-info: Fix wrong block address comparison in block_info__cmp() tip-bot2 for Jin Yao
2020-02-02 14:16 ` Jin Yao [this message]
2020-03-19 14:10 ` [tip: perf/core] perf diff: Use __block_info__cmp() to replace block_pair_cmp() tip-bot2 for Jin Yao
2020-02-02 14:16 ` [PATCH v6 3/4] perf util: Flexible to set block info output formats Jin Yao
2020-03-19 14:10 ` [tip: perf/core] perf block-info: Allow selecting which columns to report and its order tip-bot2 for Jin Yao
2020-02-02 14:16 ` [PATCH v6 4/4] perf util: Support color ops to print block percents in color Jin Yao
2020-03-09 13:54 ` Arnaldo Carvalho de Melo
2020-03-19 14:10 ` [tip: perf/core] perf block-info: " tip-bot2 for Jin Yao
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=20200202141655.32053-3-yao.jin@linux.intel.com \
--to=yao.jin@linux.intel.com \
--cc=Linux-kernel@vger.kernel.org \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@intel.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=yao.jin@intel.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.