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