Skip to content

Commit

Permalink
perf sort: Make setup_sorting returns an error code
Browse files Browse the repository at this point in the history
Currently the setup_sorting() is called for parsing sort keys and exits
if it failed to add the sort key.  As it's included in libperf it'd be
better returning an error code rather than exiting application inside of
the library.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Suggested-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1360130237-9963-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Namhyung Kim authored and Arnaldo Carvalho de Melo committed Feb 6, 2013
1 parent 51f27d1 commit 5530998
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 10 deletions.
3 changes: 2 additions & 1 deletion tools/perf/builtin-annotate.c
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,8 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)
if (symbol__init() < 0)
return -1;

setup_sorting(annotate_usage, options);
if (setup_sorting() < 0)
usage_with_options(annotate_usage, options);

if (argc) {
/*
Expand Down
4 changes: 3 additions & 1 deletion tools/perf/builtin-diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,9 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)

ui_init();

setup_sorting(diff_usage, options);
if (setup_sorting() < 0)
usage_with_options(diff_usage, options);

setup_pager();

sort_entry__setup_elide(&sort_dso, symbol_conf.dso_list, "dso", NULL);
Expand Down
3 changes: 2 additions & 1 deletion tools/perf/builtin-report.c
Original file line number Diff line number Diff line change
Expand Up @@ -751,7 +751,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)

}

setup_sorting(report_usage, options);
if (setup_sorting() < 0)
usage_with_options(report_usage, options);

/*
* Only in the newt browser we are doing integrated annotation,
Expand Down
3 changes: 2 additions & 1 deletion tools/perf/builtin-top.c
Original file line number Diff line number Diff line change
Expand Up @@ -1129,7 +1129,8 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
if (sort_order == default_sort_order)
sort_order = "dso,symbol";

setup_sorting(top_usage, options);
if (setup_sorting() < 0)
usage_with_options(top_usage, options);

if (top.use_stdio)
use_browser = 0;
Expand Down
3 changes: 2 additions & 1 deletion tools/perf/tests/hists_link.c
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,8 @@ int test__hists_link(void)
goto out;

/* default sort order (comm,dso,sym) will be used */
setup_sorting(NULL, NULL);
if (setup_sorting() < 0)
goto out;

machines__init(&machines);

Expand Down
10 changes: 6 additions & 4 deletions tools/perf/util/sort.c
Original file line number Diff line number Diff line change
Expand Up @@ -565,23 +565,25 @@ int sort_dimension__add(const char *tok)
return -ESRCH;
}

void setup_sorting(const char * const usagestr[], const struct option *opts)
int setup_sorting(void)
{
char *tmp, *tok, *str = strdup(sort_order);
int ret = 0;

for (tok = strtok_r(str, ", ", &tmp);
tok; tok = strtok_r(NULL, ", ", &tmp)) {
int ret = sort_dimension__add(tok);
ret = sort_dimension__add(tok);
if (ret == -EINVAL) {
error("Invalid --sort key: `%s'", tok);
usage_with_options(usagestr, opts);
break;
} else if (ret == -ESRCH) {
error("Unknown --sort key: `%s'", tok);
usage_with_options(usagestr, opts);
break;
}
}

free(str);
return ret;
}

void sort_entry__setup_elide(struct sort_entry *self, struct strlist *list,
Expand Down
2 changes: 1 addition & 1 deletion tools/perf/util/sort.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ struct sort_entry {
extern struct sort_entry sort_thread;
extern struct list_head hist_entry__sort_list;

void setup_sorting(const char * const usagestr[], const struct option *opts);
int setup_sorting(void);
extern int sort_dimension__add(const char *);
void sort_entry__setup_elide(struct sort_entry *self, struct strlist *list,
const char *list_name, FILE *fp);
Expand Down

0 comments on commit 5530998

Please sign in to comment.