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>
This commit is contained in:
parent
a2ce067e55
commit
512ae1bd6a
@ -60,7 +60,6 @@ static int data__files_cnt;
|
|||||||
#define data__for_each_file(i, d) data__for_each_file_start(i, d, 0)
|
#define data__for_each_file(i, d) data__for_each_file_start(i, d, 0)
|
||||||
#define data__for_each_file_new(i, d) data__for_each_file_start(i, d, 1)
|
#define data__for_each_file_new(i, d) data__for_each_file_start(i, d, 1)
|
||||||
|
|
||||||
static char diff__default_sort_order[] = "dso,symbol";
|
|
||||||
static bool force;
|
static bool force;
|
||||||
static bool show_period;
|
static bool show_period;
|
||||||
static bool show_formula;
|
static bool show_formula;
|
||||||
@ -1142,7 +1141,6 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
|
|||||||
{
|
{
|
||||||
perf_config(perf_default_config, NULL);
|
perf_config(perf_default_config, NULL);
|
||||||
|
|
||||||
sort_order = diff__default_sort_order;
|
|
||||||
argc = parse_options(argc, argv, options, diff_usage, 0);
|
argc = parse_options(argc, argv, options, diff_usage, 0);
|
||||||
|
|
||||||
if (symbol__init() < 0)
|
if (symbol__init() < 0)
|
||||||
@ -1153,6 +1151,8 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
|
|||||||
|
|
||||||
ui_init();
|
ui_init();
|
||||||
|
|
||||||
|
sort__mode = SORT_MODE__DIFF;
|
||||||
|
|
||||||
if (setup_sorting() < 0)
|
if (setup_sorting() < 0)
|
||||||
usage_with_options(diff_usage, options);
|
usage_with_options(diff_usage, options);
|
||||||
|
|
||||||
|
@ -805,30 +805,12 @@ repeat:
|
|||||||
if (branch_mode == -1 && has_br_stack)
|
if (branch_mode == -1 && has_br_stack)
|
||||||
sort__mode = SORT_MODE__BRANCH;
|
sort__mode = SORT_MODE__BRANCH;
|
||||||
|
|
||||||
/* sort__mode could be NORMAL if --no-branch-stack */
|
|
||||||
if (sort__mode == SORT_MODE__BRANCH) {
|
|
||||||
/*
|
|
||||||
* if no sort_order is provided, then specify
|
|
||||||
* branch-mode specific order
|
|
||||||
*/
|
|
||||||
if (sort_order == default_sort_order)
|
|
||||||
sort_order = "comm,dso_from,symbol_from,"
|
|
||||||
"dso_to,symbol_to";
|
|
||||||
|
|
||||||
}
|
|
||||||
if (report.mem_mode) {
|
if (report.mem_mode) {
|
||||||
if (sort__mode == SORT_MODE__BRANCH) {
|
if (sort__mode == SORT_MODE__BRANCH) {
|
||||||
pr_err("branch and mem mode incompatible\n");
|
pr_err("branch and mem mode incompatible\n");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
sort__mode = SORT_MODE__MEMORY;
|
sort__mode = SORT_MODE__MEMORY;
|
||||||
|
|
||||||
/*
|
|
||||||
* if no sort_order is provided, then specify
|
|
||||||
* branch-mode specific order
|
|
||||||
*/
|
|
||||||
if (sort_order == default_sort_order)
|
|
||||||
sort_order = "local_weight,mem,sym,dso,symbol_daddr,dso_daddr,snoop,tlb,locked";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (setup_sorting() < 0) {
|
if (setup_sorting() < 0) {
|
||||||
|
@ -1137,8 +1137,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
|
|||||||
if (argc)
|
if (argc)
|
||||||
usage_with_options(top_usage, options);
|
usage_with_options(top_usage, options);
|
||||||
|
|
||||||
if (sort_order == default_sort_order)
|
sort__mode = SORT_MODE__TOP;
|
||||||
sort_order = "dso,symbol";
|
|
||||||
|
|
||||||
if (setup_sorting() < 0) {
|
if (setup_sorting() < 0) {
|
||||||
parse_options_usage(top_usage, options, "s", 1);
|
parse_options_usage(top_usage, options, "s", 1);
|
||||||
|
@ -8,7 +8,11 @@ regex_t parent_regex;
|
|||||||
const char default_parent_pattern[] = "^sys_|^do_page_fault";
|
const char default_parent_pattern[] = "^sys_|^do_page_fault";
|
||||||
const char *parent_pattern = default_parent_pattern;
|
const char *parent_pattern = default_parent_pattern;
|
||||||
const char default_sort_order[] = "comm,dso,symbol";
|
const char default_sort_order[] = "comm,dso,symbol";
|
||||||
const char *sort_order = default_sort_order;
|
const char default_branch_sort_order[] = "comm,dso_from,symbol_from,dso_to,symbol_to";
|
||||||
|
const char default_mem_sort_order[] = "local_weight,mem,sym,dso,symbol_daddr,dso_daddr,snoop,tlb,locked";
|
||||||
|
const char default_top_sort_order[] = "dso,symbol";
|
||||||
|
const char default_diff_sort_order[] = "dso,symbol";
|
||||||
|
const char *sort_order;
|
||||||
regex_t ignore_callees_regex;
|
regex_t ignore_callees_regex;
|
||||||
int have_ignore_callees = 0;
|
int have_ignore_callees = 0;
|
||||||
int sort__need_collapse = 0;
|
int sort__need_collapse = 0;
|
||||||
@ -1218,11 +1222,31 @@ int sort_dimension__add(const char *tok)
|
|||||||
return -ESRCH;
|
return -ESRCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *get_default_sort_order(void)
|
||||||
|
{
|
||||||
|
const char *default_sort_orders[] = {
|
||||||
|
default_sort_order,
|
||||||
|
default_branch_sort_order,
|
||||||
|
default_mem_sort_order,
|
||||||
|
default_top_sort_order,
|
||||||
|
default_diff_sort_order,
|
||||||
|
};
|
||||||
|
|
||||||
|
BUG_ON(sort__mode >= ARRAY_SIZE(default_sort_orders));
|
||||||
|
|
||||||
|
return default_sort_orders[sort__mode];
|
||||||
|
}
|
||||||
|
|
||||||
int setup_sorting(void)
|
int setup_sorting(void)
|
||||||
{
|
{
|
||||||
char *tmp, *tok, *str = strdup(sort_order);
|
char *tmp, *tok, *str;
|
||||||
|
const char *sort_keys = sort_order;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
if (sort_keys == NULL)
|
||||||
|
sort_keys = get_default_sort_order();
|
||||||
|
|
||||||
|
str = strdup(sort_keys);
|
||||||
if (str == NULL) {
|
if (str == NULL) {
|
||||||
error("Not enough memory to setup sort keys");
|
error("Not enough memory to setup sort keys");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -133,6 +133,8 @@ enum sort_mode {
|
|||||||
SORT_MODE__NORMAL,
|
SORT_MODE__NORMAL,
|
||||||
SORT_MODE__BRANCH,
|
SORT_MODE__BRANCH,
|
||||||
SORT_MODE__MEMORY,
|
SORT_MODE__MEMORY,
|
||||||
|
SORT_MODE__TOP,
|
||||||
|
SORT_MODE__DIFF,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum sort_type {
|
enum sort_type {
|
||||||
|
Loading…
Reference in New Issue
Block a user