Skip to content

Commit 512ae1b

Browse files
namhyungolsajiri
authored andcommitted
perf tools: Consolidate management of default sort orders
The perf uses different default sort orders for different use-cases, and this was scattered throughout the code. Add get_default_sort_ order() function to handle this and change initial value of sort_order to NULL to distinguish it from user-given one. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1400480762-22852-10-git-send-email-namhyung@kernel.org Signed-off-by: Jiri Olsa <jolsa@kernel.org>
1 parent a2ce067 commit 512ae1b

File tree

5 files changed

+31
-24
lines changed

5 files changed

+31
-24
lines changed

tools/perf/builtin-diff.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ static int data__files_cnt;
6060
#define data__for_each_file(i, d) data__for_each_file_start(i, d, 0)
6161
#define data__for_each_file_new(i, d) data__for_each_file_start(i, d, 1)
6262

63-
static char diff__default_sort_order[] = "dso,symbol";
6463
static bool force;
6564
static bool show_period;
6665
static bool show_formula;
@@ -1142,7 +1141,6 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
11421141
{
11431142
perf_config(perf_default_config, NULL);
11441143

1145-
sort_order = diff__default_sort_order;
11461144
argc = parse_options(argc, argv, options, diff_usage, 0);
11471145

11481146
if (symbol__init() < 0)
@@ -1153,6 +1151,8 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
11531151

11541152
ui_init();
11551153

1154+
sort__mode = SORT_MODE__DIFF;
1155+
11561156
if (setup_sorting() < 0)
11571157
usage_with_options(diff_usage, options);
11581158

tools/perf/builtin-report.c

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -805,30 +805,12 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
805805
if (branch_mode == -1 && has_br_stack)
806806
sort__mode = SORT_MODE__BRANCH;
807807

808-
/* sort__mode could be NORMAL if --no-branch-stack */
809-
if (sort__mode == SORT_MODE__BRANCH) {
810-
/*
811-
* if no sort_order is provided, then specify
812-
* branch-mode specific order
813-
*/
814-
if (sort_order == default_sort_order)
815-
sort_order = "comm,dso_from,symbol_from,"
816-
"dso_to,symbol_to";
817-
818-
}
819808
if (report.mem_mode) {
820809
if (sort__mode == SORT_MODE__BRANCH) {
821810
pr_err("branch and mem mode incompatible\n");
822811
goto error;
823812
}
824813
sort__mode = SORT_MODE__MEMORY;
825-
826-
/*
827-
* if no sort_order is provided, then specify
828-
* branch-mode specific order
829-
*/
830-
if (sort_order == default_sort_order)
831-
sort_order = "local_weight,mem,sym,dso,symbol_daddr,dso_daddr,snoop,tlb,locked";
832814
}
833815

834816
if (setup_sorting() < 0) {

tools/perf/builtin-top.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,8 +1137,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
11371137
if (argc)
11381138
usage_with_options(top_usage, options);
11391139

1140-
if (sort_order == default_sort_order)
1141-
sort_order = "dso,symbol";
1140+
sort__mode = SORT_MODE__TOP;
11421141

11431142
if (setup_sorting() < 0) {
11441143
parse_options_usage(top_usage, options, "s", 1);

tools/perf/util/sort.c

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ regex_t parent_regex;
88
const char default_parent_pattern[] = "^sys_|^do_page_fault";
99
const char *parent_pattern = default_parent_pattern;
1010
const char default_sort_order[] = "comm,dso,symbol";
11-
const char *sort_order = default_sort_order;
11+
const char default_branch_sort_order[] = "comm,dso_from,symbol_from,dso_to,symbol_to";
12+
const char default_mem_sort_order[] = "local_weight,mem,sym,dso,symbol_daddr,dso_daddr,snoop,tlb,locked";
13+
const char default_top_sort_order[] = "dso,symbol";
14+
const char default_diff_sort_order[] = "dso,symbol";
15+
const char *sort_order;
1216
regex_t ignore_callees_regex;
1317
int have_ignore_callees = 0;
1418
int sort__need_collapse = 0;
@@ -1218,11 +1222,31 @@ int sort_dimension__add(const char *tok)
12181222
return -ESRCH;
12191223
}
12201224

1225+
static const char *get_default_sort_order(void)
1226+
{
1227+
const char *default_sort_orders[] = {
1228+
default_sort_order,
1229+
default_branch_sort_order,
1230+
default_mem_sort_order,
1231+
default_top_sort_order,
1232+
default_diff_sort_order,
1233+
};
1234+
1235+
BUG_ON(sort__mode >= ARRAY_SIZE(default_sort_orders));
1236+
1237+
return default_sort_orders[sort__mode];
1238+
}
1239+
12211240
int setup_sorting(void)
12221241
{
1223-
char *tmp, *tok, *str = strdup(sort_order);
1242+
char *tmp, *tok, *str;
1243+
const char *sort_keys = sort_order;
12241244
int ret = 0;
12251245

1246+
if (sort_keys == NULL)
1247+
sort_keys = get_default_sort_order();
1248+
1249+
str = strdup(sort_keys);
12261250
if (str == NULL) {
12271251
error("Not enough memory to setup sort keys");
12281252
return -ENOMEM;

tools/perf/util/sort.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ enum sort_mode {
133133
SORT_MODE__NORMAL,
134134
SORT_MODE__BRANCH,
135135
SORT_MODE__MEMORY,
136+
SORT_MODE__TOP,
137+
SORT_MODE__DIFF,
136138
};
137139

138140
enum sort_type {

0 commit comments

Comments
 (0)