diff options
Diffstat (limited to 'tools/perf/util/callchain.h')
-rw-r--r-- | tools/perf/util/callchain.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h index e9bd5e882f38..dfa56008d9ad 100644 --- a/tools/perf/util/callchain.h +++ b/tools/perf/util/callchain.h | |||
@@ -6,15 +6,21 @@ | |||
6 | #include <linux/rbtree.h> | 6 | #include <linux/rbtree.h> |
7 | #include "symbol.h" | 7 | #include "symbol.h" |
8 | 8 | ||
9 | enum chain_mode { | ||
10 | FLAT, | ||
11 | GRAPH | ||
12 | }; | ||
9 | 13 | ||
10 | struct callchain_node { | 14 | struct callchain_node { |
11 | struct callchain_node *parent; | 15 | struct callchain_node *parent; |
12 | struct list_head brothers; | 16 | struct list_head brothers; |
13 | struct list_head children; | 17 | struct list_head children; |
14 | struct list_head val; | 18 | struct list_head val; |
15 | struct rb_node rb_node; | 19 | struct rb_node rb_node; /* to sort nodes in an rbtree */ |
20 | struct rb_root rb_root; /* sorted tree of children */ | ||
16 | unsigned int val_nr; | 21 | unsigned int val_nr; |
17 | u64 hit; | 22 | u64 hit; |
23 | u64 cumul_hit; /* hit + hits of children */ | ||
18 | }; | 24 | }; |
19 | 25 | ||
20 | struct callchain_list { | 26 | struct callchain_list { |
@@ -32,5 +38,6 @@ static inline void callchain_init(struct callchain_node *node) | |||
32 | 38 | ||
33 | void append_chain(struct callchain_node *root, struct ip_callchain *chain, | 39 | void append_chain(struct callchain_node *root, struct ip_callchain *chain, |
34 | struct symbol **syms); | 40 | struct symbol **syms); |
35 | void sort_chain_to_rbtree(struct rb_root *rb_root, struct callchain_node *node); | 41 | void sort_chain_flat(struct rb_root *rb_root, struct callchain_node *node); |
42 | void sort_chain_graph(struct rb_root *rb_root, struct callchain_node *node); | ||
36 | #endif | 43 | #endif |