perf_counter tools: Resolve symbols in callchains
[safe/jmp/linux-2.6] / tools / perf / util / callchain.h
1 #ifndef __PERF_CALLCHAIN_H
2 #define __PERF_CALLCHAIN_H
3
4 #include "../perf.h"
5 #include "list.h"
6 #include "rbtree.h"
7 #include "symbol.h"
8
9
10 struct callchain_node {
11         struct callchain_node   *parent;
12         struct list_head        brothers;
13         struct list_head        children;
14         struct list_head        val;
15         struct rb_node          rb_node;
16         int                     val_nr;
17         int                     hit;
18 };
19
20 struct callchain_list {
21         unsigned long           ip;
22         struct symbol           *sym;
23         struct list_head        list;
24 };
25
26 static inline void callchain_init(struct callchain_node *node)
27 {
28         INIT_LIST_HEAD(&node->brothers);
29         INIT_LIST_HEAD(&node->children);
30         INIT_LIST_HEAD(&node->val);
31 }
32
33 void append_chain(struct callchain_node *root, struct ip_callchain *chain,
34                   struct symbol **syms);
35 void sort_chain_to_rbtree(struct rb_root *rb_root, struct callchain_node *node);
36 #endif