perf hists: Move sort__need_collapse into struct perf_hpp_list
authorJiri Olsa <jolsa@kernel.org>
Tue, 3 May 2016 11:54:42 +0000 (13:54 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 6 May 2016 00:03:58 +0000 (21:03 -0300)
Now we have sort dimensions private for struct hists, we need to make
dimension booleans hists specific as well.

Moving sort__need_collapse into struct perf_hpp_list.

Adding hists__has macro to easily access this info perf struct hists
object.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1462276488-26683-2-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-diff.c
tools/perf/builtin-report.c
tools/perf/builtin-top.c
tools/perf/tests/hists_common.c
tools/perf/tests/hists_cumulate.c
tools/perf/tests/hists_link.c
tools/perf/tests/hists_output.c
tools/perf/util/hist.c
tools/perf/util/hist.h
tools/perf/util/sort.c
tools/perf/util/sort.h

index 8053a8ceefdad28d3008de359190f3f043929267..9ce354f469dce9e96d078ae5c352732cec59178c 100644 (file)
@@ -428,7 +428,7 @@ static void hists__baseline_only(struct hists *hists)
        struct rb_root *root;
        struct rb_node *next;
 
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                root = &hists->entries_collapsed;
        else
                root = hists->entries_in;
@@ -450,7 +450,7 @@ static void hists__precompute(struct hists *hists)
        struct rb_root *root;
        struct rb_node *next;
 
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                root = &hists->entries_collapsed;
        else
                root = hists->entries_in;
index 8d9b88af901dd6d187af0fbbcd241675eea77199..394d05ec0014db0eb9976f83bdb5545ca19a3650 100644 (file)
@@ -936,7 +936,7 @@ repeat:
                        goto error;
                }
 
-               sort__need_collapse = true;
+               perf_hpp_list.need_collapse = true;
        }
 
        /* Force tty output for header output and per-thread stat. */
index da18517b1d400cfd31d08ee16410e4b6fb6ba0fa..ff6109839cdda44d10ebe756ee6e5a98b3bcd33b 100644 (file)
@@ -1255,7 +1255,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
 
        sort__mode = SORT_MODE__TOP;
        /* display thread wants entries to be collapsed in a different tree */
-       sort__need_collapse = 1;
+       perf_hpp_list.need_collapse = 1;
 
        if (top.use_stdio)
                use_browser = 0;
index f55f4bd47932dbaaf325a6732d0daa7a12a2358b..6b21746d6eec84b0bf443fc4cd05523be57f9878 100644 (file)
@@ -161,7 +161,7 @@ void print_hists_in(struct hists *hists)
        struct rb_root *root;
        struct rb_node *node;
 
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                root = &hists->entries_collapsed;
        else
                root = hists->entries_in;
index 4a2bbff9b1ee6f0190d73175668b5ea2bfb8f439..a9e3db3afac423a89f589ee995433278172b019e 100644 (file)
@@ -126,7 +126,7 @@ static void del_hist_entries(struct hists *hists)
        struct rb_root *root_out;
        struct rb_node *node;
 
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                root_in = &hists->entries_collapsed;
        else
                root_in = hists->entries_in;
index 358324e47805e7f9a5210a70a6bfb99371dacd04..acf5a1301c0771eafaee8775e10ad470fd0d6b07 100644 (file)
@@ -145,7 +145,7 @@ static int __validate_match(struct hists *hists)
        /*
         * Only entries from fake_common_samples should have a pair.
         */
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                root = &hists->entries_collapsed;
        else
                root = hists->entries_in;
@@ -197,7 +197,7 @@ static int __validate_link(struct hists *hists, int idx)
         * and some entries will have no pair.  However every entry
         * in other hists should have (dummy) pair.
         */
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                root = &hists->entries_collapsed;
        else
                root = hists->entries_in;
index 7cd8738e842f0fa7b53a05e4a69d6e50e097909d..63c5efaba1b5c611d3bb96da433d93415b3b87ca 100644 (file)
@@ -92,7 +92,7 @@ static void del_hist_entries(struct hists *hists)
        struct rb_root *root_out;
        struct rb_node *node;
 
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                root_in = &hists->entries_collapsed;
        else
                root_in = hists->entries_in;
index 0f33d7e698c4e7118b58408403dc10c883d78821..cfab531437c743c4c849d40fd45545fcb2fbcddc 100644 (file)
@@ -295,7 +295,7 @@ static void hists__delete_entry(struct hists *hists, struct hist_entry *he)
                root_in  = &he->parent_he->hroot_in;
                root_out = &he->parent_he->hroot_out;
        } else {
-               if (sort__need_collapse)
+               if (hists__has(hists, need_collapse))
                        root_in = &hists->entries_collapsed;
                else
                        root_in = hists->entries_in;
@@ -1373,7 +1373,7 @@ int hists__collapse_resort(struct hists *hists, struct ui_progress *prog)
        struct hist_entry *n;
        int ret;
 
-       if (!sort__need_collapse)
+       if (!hists__has(hists, need_collapse))
                return 0;
 
        hists->nr_entries = 0;
@@ -1632,7 +1632,7 @@ static void output_resort(struct hists *hists, struct ui_progress *prog,
                return;
        }
 
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                root = &hists->entries_collapsed;
        else
                root = hists->entries_in;
@@ -2036,7 +2036,7 @@ static struct hist_entry *hists__add_dummy_entry(struct hists *hists,
        struct hist_entry *he;
        int64_t cmp;
 
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                root = &hists->entries_collapsed;
        else
                root = hists->entries_in;
@@ -2078,7 +2078,7 @@ static struct hist_entry *hists__find_entry(struct hists *hists,
 {
        struct rb_node *n;
 
-       if (sort__need_collapse)
+       if (hists__has(hists, need_collapse))
                n = hists->entries_collapsed.rb_node;
        else
                n = hists->entries_in->rb_node;
@@ -2107,7 +2107,7 @@ void hists__match(struct hists *leader, struct hists *other)
        struct rb_node *nd;
        struct hist_entry *pos, *pair;
 
-       if (sort__need_collapse)
+       if (hists__has(leader, need_collapse))
                root = &leader->entries_collapsed;
        else
                root = leader->entries_in;
@@ -2132,7 +2132,7 @@ int hists__link(struct hists *leader, struct hists *other)
        struct rb_node *nd;
        struct hist_entry *pos, *pair;
 
-       if (sort__need_collapse)
+       if (hists__has(other, need_collapse))
                root = &other->entries_collapsed;
        else
                root = other->entries_in;
index 588596561cb31b8fe803a9668d3f5829fced73c8..ec76e6bef9165feac78b4a812acb28812ce48f85 100644 (file)
@@ -82,6 +82,8 @@ struct hists {
        int                     nr_hpp_node;
 };
 
+#define hists__has(__h, __f) (__h)->hpp_list->__f
+
 struct hist_entry_iter;
 
 struct hist_iter_ops {
@@ -238,6 +240,8 @@ struct perf_hpp_fmt {
 struct perf_hpp_list {
        struct list_head fields;
        struct list_head sorts;
+
+       int need_collapse;
 };
 
 extern struct perf_hpp_list perf_hpp_list;
index 47966a1618c7310108a42de59327930e6acdb184..64ace548dc880ec0cd5ac025b1ddd0df3b8e3d4c 100644 (file)
@@ -21,7 +21,6 @@ const char    *sort_order;
 const char     *field_order;
 regex_t                ignore_callees_regex;
 int            have_ignore_callees = 0;
-int            sort__need_collapse = 0;
 int            sort__has_parent = 0;
 int            sort__has_sym = 0;
 int            sort__has_dso = 0;
@@ -2163,7 +2162,7 @@ static int __sort_dimension__add(struct sort_dimension *sd,
                return -1;
 
        if (sd->entry->se_collapse)
-               sort__need_collapse = 1;
+               list->need_collapse = 1;
 
        sd->taken = 1;
 
@@ -2746,7 +2745,7 @@ int setup_sorting(struct perf_evlist *evlist)
 
 void reset_output_field(void)
 {
-       sort__need_collapse = 0;
+       perf_hpp_list.need_collapse = 0;
        sort__has_parent = 0;
        sort__has_sym = 0;
        sort__has_dso = 0;
index 3f4e359981192ac50b56e770aa472749666e1f98..2e1d273269541a008490682ad8e6d34a0720491c 100644 (file)
@@ -31,7 +31,6 @@ extern const char *parent_pattern;
 extern const char default_sort_order[];
 extern regex_t ignore_callees_regex;
 extern int have_ignore_callees;
-extern int sort__need_collapse;
 extern int sort__has_dso;
 extern int sort__has_parent;
 extern int sort__has_sym;