Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.32 61 lines 1.3 kB view raw
1#ifndef __PERF_CALLCHAIN_H 2#define __PERF_CALLCHAIN_H 3 4#include "../perf.h" 5#include <linux/list.h> 6#include <linux/rbtree.h> 7#include "util.h" 8#include "symbol.h" 9 10enum chain_mode { 11 CHAIN_NONE, 12 CHAIN_FLAT, 13 CHAIN_GRAPH_ABS, 14 CHAIN_GRAPH_REL 15}; 16 17struct callchain_node { 18 struct callchain_node *parent; 19 struct list_head brothers; 20 struct list_head children; 21 struct list_head val; 22 struct rb_node rb_node; /* to sort nodes in an rbtree */ 23 struct rb_root rb_root; /* sorted tree of children */ 24 unsigned int val_nr; 25 u64 hit; 26 u64 children_hit; 27}; 28 29struct callchain_param; 30 31typedef void (*sort_chain_func_t)(struct rb_root *, struct callchain_node *, 32 u64, struct callchain_param *); 33 34struct callchain_param { 35 enum chain_mode mode; 36 double min_percent; 37 sort_chain_func_t sort; 38}; 39 40struct callchain_list { 41 u64 ip; 42 struct symbol *sym; 43 struct list_head list; 44}; 45 46static inline void callchain_init(struct callchain_node *node) 47{ 48 INIT_LIST_HEAD(&node->brothers); 49 INIT_LIST_HEAD(&node->children); 50 INIT_LIST_HEAD(&node->val); 51} 52 53static inline u64 cumul_hits(struct callchain_node *node) 54{ 55 return node->hit + node->children_hit; 56} 57 58int register_callchain_param(struct callchain_param *param); 59void append_chain(struct callchain_node *root, struct ip_callchain *chain, 60 struct symbol **syms); 61#endif