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