summaryrefslogtreecommitdiff
path: root/tools/perf/util/sort.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/sort.c')
-rw-r--r--tools/perf/util/sort.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 6bee8bdfb91b..2beb7a6360a4 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -2633,6 +2633,9 @@ out:
int setup_sorting(struct perf_evlist *evlist)
{
int err;
+ struct hists *hists;
+ struct perf_evsel *evsel;
+ struct perf_hpp_fmt *fmt;
err = __setup_sorting(evlist);
if (err < 0)
@@ -2644,6 +2647,22 @@ int setup_sorting(struct perf_evlist *evlist)
return err;
}
+ evlist__for_each(evlist, evsel) {
+ hists = evsel__hists(evsel);
+ hists->nr_sort_keys = perf_hpp_list.nr_sort_keys;
+
+ /*
+ * If dynamic entries were used, it might add multiple
+ * entries to each evsel for a single field name. Set
+ * actual number of sort keys for each hists.
+ */
+ perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
+ if (perf_hpp__is_dynamic_entry(fmt) &&
+ !perf_hpp__defined_dynamic_entry(fmt, hists))
+ hists->nr_sort_keys--;
+ }
+ }
+
reset_dimensions();
/*