aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2009-12-14 17:09:29 -0500
committerIngo Molnar <mingo@elte.hu>2009-12-15 02:50:28 -0500
commitc8829c7a31c7e0156b230fa8d5a14be9881d7677 (patch)
treec8649f461c5192613de3fe47b728e47a8b5c9e2c
parentf823e441ab4dfaeaf17832fa1931e0dc0fde304d (diff)
perf util: Remove setup_sorting dups
And it is also needed by 'perf diff'. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frédéric Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <1260828571-3613-1-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--tools/perf/builtin-annotate.c17
-rw-r--r--tools/perf/builtin-report.c17
-rw-r--r--tools/perf/util/sort.c15
-rw-r--r--tools/perf/util/sort.h2
4 files changed, 19 insertions, 32 deletions
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index fa833f50763e..2e2855a685c6 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -521,21 +521,6 @@ static const struct option options[] = {
521 OPT_END() 521 OPT_END()
522}; 522};
523 523
524static void setup_sorting(void)
525{
526 char *tmp, *tok, *str = strdup(sort_order);
527
528 for (tok = strtok_r(str, ", ", &tmp);
529 tok; tok = strtok_r(NULL, ", ", &tmp)) {
530 if (sort_dimension__add(tok) < 0) {
531 error("Unknown --sort key: `%s'", tok);
532 usage_with_options(annotate_usage, options);
533 }
534 }
535
536 free(str);
537}
538
539int cmd_annotate(int argc, const char **argv, const char *prefix __used) 524int cmd_annotate(int argc, const char **argv, const char *prefix __used)
540{ 525{
541 if (symbol__init(&symbol_conf) < 0) 526 if (symbol__init(&symbol_conf) < 0)
@@ -543,7 +528,7 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __used)
543 528
544 argc = parse_options(argc, argv, options, annotate_usage, 0); 529 argc = parse_options(argc, argv, options, annotate_usage, 0);
545 530
546 setup_sorting(); 531 setup_sorting(annotate_usage, options);
547 532
548 if (argc) { 533 if (argc) {
549 /* 534 /*
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index d12ea4ab0d21..beff7c090d2b 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -843,21 +843,6 @@ static const struct option options[] = {
843 OPT_END() 843 OPT_END()
844}; 844};
845 845
846static void setup_sorting(void)
847{
848 char *tmp, *tok, *str = strdup(sort_order);
849
850 for (tok = strtok_r(str, ", ", &tmp);
851 tok; tok = strtok_r(NULL, ", ", &tmp)) {
852 if (sort_dimension__add(tok) < 0) {
853 error("Unknown --sort key: `%s'", tok);
854 usage_with_options(report_usage, options);
855 }
856 }
857
858 free(str);
859}
860
861static void setup_list(struct strlist **list, const char *list_str, 846static void setup_list(struct strlist **list, const char *list_str,
862 struct sort_entry *se, const char *list_name, 847 struct sort_entry *se, const char *list_name,
863 FILE *fp) 848 FILE *fp)
@@ -884,7 +869,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __used)
884 869
885 argc = parse_options(argc, argv, options, report_usage, 0); 870 argc = parse_options(argc, argv, options, report_usage, 0);
886 871
887 setup_sorting(); 872 setup_sorting(report_usage, options);
888 873
889 if (parent_pattern != default_parent_pattern) { 874 if (parent_pattern != default_parent_pattern) {
890 sort_dimension__add("parent"); 875 sort_dimension__add("parent");
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index b490354d1b23..cff1c316fa91 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -288,3 +288,18 @@ int sort_dimension__add(const char *tok)
288 288
289 return -ESRCH; 289 return -ESRCH;
290} 290}
291
292void setup_sorting(const char * const usagestr[], const struct option *opts)
293{
294 char *tmp, *tok, *str = strdup(sort_order);
295
296 for (tok = strtok_r(str, ", ", &tmp);
297 tok; tok = strtok_r(NULL, ", ", &tmp)) {
298 if (sort_dimension__add(tok) < 0) {
299 error("Unknown --sort key: `%s'", tok);
300 usage_with_options(usagestr, opts);
301 }
302 }
303
304 free(str);
305}
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
index 333e664ff45f..cb6151c026f2 100644
--- a/tools/perf/util/sort.h
+++ b/tools/perf/util/sort.h
@@ -81,6 +81,8 @@ struct sort_entry {
81extern struct sort_entry sort_thread; 81extern struct sort_entry sort_thread;
82extern struct list_head hist_entry__sort_list; 82extern struct list_head hist_entry__sort_list;
83 83
84void setup_sorting(const char * const usagestr[], const struct option *opts);
85
84extern int repsep_fprintf(FILE *fp, const char *fmt, ...); 86extern int repsep_fprintf(FILE *fp, const char *fmt, ...);
85extern size_t sort__thread_print(FILE *, struct hist_entry *, unsigned int); 87extern size_t sort__thread_print(FILE *, struct hist_entry *, unsigned int);
86extern size_t sort__comm_print(FILE *, struct hist_entry *, unsigned int); 88extern size_t sort__comm_print(FILE *, struct hist_entry *, unsigned int);