16 #include <linux/rbtree.h> 17 #include <linux/list.h> 23 struct symbol *
sym, u64 ip,
bool in_kernel)
27 cp->
ip = sym ? 0 : ip;
42 INIT_LIST_HEAD(&cpr->
blocks);
50 list_for_each_entry_safe(pos, n, &cpr->
blocks,
node) {
90 struct rb_node *node_parent = NULL;
105 if (cp->
sym == sym && cp->
ip == ip)
108 if (sym < cp->sym || (sym == cp->
sym && ip < cp->ip))
118 rb_link_node(&cp->
rb_node, node_parent, p);
static struct call_path * call_path__new(struct call_path_root *cpr, struct call_path *parent, struct symbol *sym, u64 ip, bool in_kernel)
void call_path_root__free(struct call_path_root *cpr)
#define CALL_PATH_BLOCK_MASK
struct call_path * parent
struct call_path call_path
struct call_path * call_path__findnew(struct call_path_root *cpr, struct call_path *parent, struct symbol *sym, u64 ip, u64 ks)
static void call_path__init(struct call_path *cp, struct call_path *parent, struct symbol *sym, u64 ip, bool in_kernel)
static int sym(yyscan_t scanner, int type, int config)
struct call_path cp[CALL_PATH_BLOCK_SIZE]
struct call_path_root * call_path_root__new(void)
#define CALL_PATH_BLOCK_SIZE
void static void * zalloc(size_t size)