Root/
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 const char *sort_order; |
29 | extern const char default_parent_pattern[]; |
30 | extern const char *parent_pattern; |
31 | extern const char default_sort_order[]; |
32 | extern int sort__need_collapse; |
33 | extern int sort__has_parent; |
34 | extern int sort__branch_mode; |
35 | extern char *field_sep; |
36 | extern struct sort_entry sort_comm; |
37 | extern struct sort_entry sort_dso; |
38 | extern struct sort_entry sort_sym; |
39 | extern struct sort_entry sort_parent; |
40 | extern struct sort_entry sort_dso_from; |
41 | extern struct sort_entry sort_dso_to; |
42 | extern struct sort_entry sort_sym_from; |
43 | extern struct sort_entry sort_sym_to; |
44 | extern enum sort_type sort__first_dimension; |
45 | |
46 | /** |
47 | * struct hist_entry - histogram entry |
48 | * |
49 | * @row_offset - offset from the first callchain expanded to appear on screen |
50 | * @nr_rows - rows expanded in callchain, recalculated on folding/unfolding |
51 | */ |
52 | struct hist_entry { |
53 | struct rb_node rb_node_in; |
54 | struct rb_node rb_node; |
55 | u64 period; |
56 | u64 period_sys; |
57 | u64 period_us; |
58 | u64 period_guest_sys; |
59 | u64 period_guest_us; |
60 | struct map_symbol ms; |
61 | struct thread *thread; |
62 | u64 ip; |
63 | s32 cpu; |
64 | u32 nr_events; |
65 | |
66 | /* XXX These two should move to some tree widget lib */ |
67 | u16 row_offset; |
68 | u16 nr_rows; |
69 | |
70 | bool init_have_children; |
71 | char level; |
72 | bool used; |
73 | u8 filtered; |
74 | struct symbol *parent; |
75 | union { |
76 | unsigned long position; |
77 | struct hist_entry *pair; |
78 | struct rb_root sorted_chain; |
79 | }; |
80 | struct branch_info *branch_info; |
81 | struct callchain_root callchain[0]; |
82 | }; |
83 | |
84 | enum sort_type { |
85 | SORT_PID, |
86 | SORT_COMM, |
87 | SORT_DSO, |
88 | SORT_SYM, |
89 | SORT_PARENT, |
90 | SORT_CPU, |
91 | SORT_DSO_FROM, |
92 | SORT_DSO_TO, |
93 | SORT_SYM_FROM, |
94 | SORT_SYM_TO, |
95 | SORT_MISPREDICT, |
96 | }; |
97 | |
98 | /* |
99 | * configurable sorting bits |
100 | */ |
101 | |
102 | struct sort_entry { |
103 | struct list_head list; |
104 | |
105 | const char *se_header; |
106 | |
107 | int64_t (*se_cmp)(struct hist_entry *, struct hist_entry *); |
108 | int64_t (*se_collapse)(struct hist_entry *, struct hist_entry *); |
109 | int (*se_snprintf)(struct hist_entry *self, char *bf, size_t size, |
110 | unsigned int width); |
111 | u8 se_width_idx; |
112 | bool elide; |
113 | }; |
114 | |
115 | extern struct sort_entry sort_thread; |
116 | extern struct list_head hist_entry__sort_list; |
117 | |
118 | void setup_sorting(const char * const usagestr[], const struct option *opts); |
119 | extern int sort_dimension__add(const char *); |
120 | void sort_entry__setup_elide(struct sort_entry *self, struct strlist *list, |
121 | const char *list_name, FILE *fp); |
122 | |
123 | #endif /* __PERF_SORT_H */ |
124 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9