linux/tools/perf/util/srcline.h
<<
>>
Prefs
   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 */
  57