diff options
author | John Kacur <jkacur@redhat.com> | 2009-09-24 12:02:49 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-09-24 15:27:52 -0400 |
commit | dd68ada2d417e57b848822a1407b5317a54136c5 (patch) | |
tree | 8d7cc54e3bcf063038532d88ac1f94a54b6650a5 /tools/perf/util/sort.h | |
parent | 8b40f521cf1c9750eab0c04da9075e7484675e9c (diff) |
perf tools: Create util/sort.and use it
Create util/sort.[ch] and move common functionality for
builtin-report.c and builtin-annotate.c there, and make use of it.
Signed-off-by: John Kacur <jkacur@redhat.com>
LKML-Reference: <alpine.LFD.2.00.0909241758390.11383@localhost.localdomain>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/sort.h')
-rw-r--r-- | tools/perf/util/sort.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h new file mode 100644 index 00000000000..4684fd6d5c4 --- /dev/null +++ b/tools/perf/util/sort.h | |||
@@ -0,0 +1,93 @@ | |||
1 | #ifndef __PERF_SORT_H | ||
2 | #define __PERF_SORT_H | ||
3 | #include "../builtin.h" | ||
4 | |||
5 | #include "util.h" | ||
6 | |||
7 | #include "color.h" | ||
8 | #include <linux/list.h> | ||
9 | #include "cache.h" | ||
10 | #include <linux/rbtree.h> | ||
11 | #include "symbol.h" | ||
12 | #include "string.h" | ||
13 | #include "callchain.h" | ||
14 | #include "strlist.h" | ||
15 | #include "values.h" | ||
16 | |||
17 | #include "../perf.h" | ||
18 | #include "debug.h" | ||
19 | #include "header.h" | ||
20 | |||
21 | #include "parse-options.h" | ||
22 | #include "parse-events.h" | ||
23 | |||
24 | #include "thread.h" | ||
25 | #include "sort.h" | ||
26 | |||
27 | extern regex_t parent_regex; | ||
28 | extern char *sort_order; | ||
29 | extern char default_parent_pattern[]; | ||
30 | extern char *parent_pattern; | ||
31 | extern char default_sort_order[]; | ||
32 | extern int sort__need_collapse; | ||
33 | extern int sort__has_parent; | ||
34 | extern char *field_sep; | ||
35 | extern struct sort_entry sort_comm; | ||
36 | extern struct sort_entry sort_dso; | ||
37 | extern struct sort_entry sort_sym; | ||
38 | extern struct sort_entry sort_parent; | ||
39 | extern unsigned int dsos__col_width; | ||
40 | extern unsigned int comms__col_width; | ||
41 | extern unsigned int threads__col_width; | ||
42 | |||
43 | struct hist_entry { | ||
44 | struct rb_node rb_node; | ||
45 | |||
46 | struct thread *thread; | ||
47 | struct map *map; | ||
48 | struct dso *dso; | ||
49 | struct symbol *sym; | ||
50 | struct symbol *parent; | ||
51 | u64 ip; | ||
52 | char level; | ||
53 | struct callchain_node callchain; | ||
54 | struct rb_root sorted_chain; | ||
55 | |||
56 | u64 count; | ||
57 | }; | ||
58 | |||
59 | /* | ||
60 | * configurable sorting bits | ||
61 | */ | ||
62 | |||
63 | struct sort_entry { | ||
64 | struct list_head list; | ||
65 | |||
66 | const char *header; | ||
67 | |||
68 | int64_t (*cmp)(struct hist_entry *, struct hist_entry *); | ||
69 | int64_t (*collapse)(struct hist_entry *, struct hist_entry *); | ||
70 | size_t (*print)(FILE *fp, struct hist_entry *, unsigned int width); | ||
71 | unsigned int *width; | ||
72 | bool elide; | ||
73 | }; | ||
74 | |||
75 | extern struct sort_entry sort_thread; | ||
76 | extern struct list_head hist_entry__sort_list; | ||
77 | |||
78 | extern int repsep_fprintf(FILE *fp, const char *fmt, ...); | ||
79 | extern size_t sort__thread_print(FILE *, struct hist_entry *, unsigned int); | ||
80 | extern size_t sort__comm_print(FILE *, struct hist_entry *, unsigned int); | ||
81 | extern size_t sort__dso_print(FILE *, struct hist_entry *, unsigned int); | ||
82 | extern size_t sort__sym_print(FILE *, struct hist_entry *, unsigned int __used); | ||
83 | extern int64_t cmp_null(void *, void *); | ||
84 | extern int64_t sort__thread_cmp(struct hist_entry *, struct hist_entry *); | ||
85 | extern int64_t sort__comm_cmp(struct hist_entry *, struct hist_entry *); | ||
86 | extern int64_t sort__comm_collapse(struct hist_entry *, struct hist_entry *); | ||
87 | extern int64_t sort__dso_cmp(struct hist_entry *, struct hist_entry *); | ||
88 | extern int64_t sort__sym_cmp(struct hist_entry *, struct hist_entry *); | ||
89 | extern int64_t sort__parent_cmp(struct hist_entry *, struct hist_entry *); | ||
90 | extern size_t sort__parent_print(FILE *, struct hist_entry *, unsigned int); | ||
91 | extern int sort_dimension__add(const char *); | ||
92 | |||
93 | #endif /* __PERF_SORT_H */ | ||