]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
632a5cab ACM |
2 | #ifndef PERF_SRCLINE_H |
3 | #define PERF_SRCLINE_H | |
4 | ||
5 | #include <linux/list.h> | |
11ea2515 | 6 | #include <linux/rbtree.h> |
632a5cab ACM |
7 | #include <linux/types.h> |
8 | ||
9 | struct dso; | |
10 | struct symbol; | |
11 | ||
12 | extern bool srcline_full_filename; | |
13 | char *get_srcline(struct dso *dso, u64 addr, struct symbol *sym, | |
935f5a9d | 14 | bool show_sym, bool show_addr, u64 ip); |
632a5cab | 15 | char *__get_srcline(struct dso *dso, u64 addr, struct symbol *sym, |
935f5a9d JY |
16 | bool show_sym, bool show_addr, bool unwind_inlines, |
17 | u64 ip); | |
632a5cab ACM |
18 | void free_srcline(char *srcline); |
19 | ||
21ac9d54 MW |
20 | /* insert the srcline into the DSO, which will take ownership */ |
21 | void srcline__tree_insert(struct rb_root *tree, u64 addr, char *srcline); | |
22 | /* find previously inserted srcline */ | |
23 | char *srcline__tree_find(struct rb_root *tree, u64 addr); | |
24 | /* delete all srclines within the tree */ | |
25 | void srcline__tree_delete(struct rb_root *tree); | |
26 | ||
632a5cab ACM |
27 | #define SRCLINE_UNKNOWN ((char *) "??:0") |
28 | ||
29 | struct inline_list { | |
fea0cf84 | 30 | struct symbol *symbol; |
2be8832f | 31 | char *srcline; |
632a5cab ACM |
32 | struct list_head list; |
33 | }; | |
34 | ||
35 | struct inline_node { | |
36 | u64 addr; | |
37 | struct list_head val; | |
11ea2515 | 38 | struct rb_node rb_node; |
632a5cab ACM |
39 | }; |
40 | ||
fea0cf84 MW |
41 | /* parse inlined frames for the given address */ |
42 | struct inline_node *dso__parse_addr_inlines(struct dso *dso, u64 addr, | |
43 | struct symbol *sym); | |
44 | /* free resources associated to the inline node list */ | |
632a5cab ACM |
45 | void inline_node__delete(struct inline_node *node); |
46 | ||
11ea2515 MW |
47 | /* insert the inline node list into the DSO, which will take ownership */ |
48 | void inlines__tree_insert(struct rb_root *tree, struct inline_node *inlines); | |
49 | /* find previously inserted inline node list */ | |
50 | struct inline_node *inlines__tree_find(struct rb_root *tree, u64 addr); | |
51 | /* delete all nodes within the tree of inline_node s */ | |
52 | void inlines__tree_delete(struct rb_root *tree); | |
53 | ||
632a5cab | 54 | #endif /* PERF_SRCLINE_H */ |