[PATCH 26/26] perf tools: Introduce hists__for_each_sort_list macro

From: Jiri Olsa
Date: Mon Jan 18 2016 - 04:25:33 EST


With the hist object having the perf_hpp_list we can
now iterate sort format entries based in the hists
object. Adding hists__for_each_sort_list macro to do
that.

Link: http://lkml.kernel.org/n/tip-t5g9q42thptl6qaorydp2v16@xxxxxxxxxxxxxx
Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
---
tools/perf/util/hist.c | 9 ++++++---
tools/perf/util/hist.h | 3 +++
2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 7ac32bdf53ee..6c058d7739cc 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -949,10 +949,11 @@ out:
int64_t
hist_entry__cmp(struct hist_entry *left, struct hist_entry *right)
{
+ struct hists *hists = left->hists;
struct perf_hpp_fmt *fmt;
int64_t cmp = 0;

- perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
+ hists__for_each_sort_list(hists, fmt) {
cmp = fmt->cmp(fmt, left, right);
if (cmp)
break;
@@ -964,10 +965,11 @@ hist_entry__cmp(struct hist_entry *left, struct hist_entry *right)
int64_t
hist_entry__collapse(struct hist_entry *left, struct hist_entry *right)
{
+ struct hists *hists = left->hists;
struct perf_hpp_fmt *fmt;
int64_t cmp = 0;

- perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
+ hists__for_each_sort_list(hists, fmt) {
cmp = fmt->collapse(fmt, left, right);
if (cmp)
break;
@@ -1108,10 +1110,11 @@ void hists__collapse_resort(struct hists *hists, struct ui_progress *prog)

static int hist_entry__sort(struct hist_entry *a, struct hist_entry *b)
{
+ struct hists *hists = a->hists;
struct perf_hpp_fmt *fmt;
int64_t cmp = 0;

- perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
+ hists__for_each_sort_list(hists, fmt) {
if (perf_hpp__should_skip(fmt, a->hists))
continue;

diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index e67542b8c126..3fa24b55ebf3 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -264,6 +264,9 @@ static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
#define hists__for_each_format(hists, format) \
perf_hpp_list__for_each_format((hists)->hpp_list, fmt)

+#define hists__for_each_sort_list(hists, format) \
+ perf_hpp_list__for_each_sort_list((hists)->hpp_list, fmt)
+
extern struct perf_hpp_fmt perf_hpp__format[];

enum {
--
2.4.3