cregit-Linux how code gets into the kernel

Release 4.10 tools/perf/util/block-range.h

Directory: tools/perf/util
#ifndef __PERF_BLOCK_RANGE_H

#define __PERF_BLOCK_RANGE_H

#include "symbol.h"

/*
 * struct block_range - non-overlapping parts of basic blocks
 * @node:       treenode
 * @start:      inclusive start of range
 * @end:        inclusive end of range
 * @is_target:  @start is a jump target
 * @is_branch:  @end is a branch instruction
 * @coverage:   number of blocks that cover this range
 * @taken:      number of times the branch is taken (requires @is_branch)
 * @pred:       number of times the taken branch was predicted
 */

struct block_range {
	
struct rb_node node;

	
struct symbol *sym;

	
u64 start;
	
u64 end;

	

int is_target, is_branch;

	
u64 coverage;
	
u64 entry;
	
u64 taken;
	
u64 pred;
};


static inline struct block_range *block_range__next(struct block_range *br) { struct rb_node *n = rb_next(&br->node); if (!n) return NULL; return rb_entry(n, struct block_range, node); }

Contributors

PersonTokensPropCommitsCommitProp
peter zijlstrapeter zijlstra46100.00%1100.00%
Total46100.00%1100.00%

struct block_range_iter { struct block_range *start; struct block_range *end; };
static inline struct block_range *block_range_iter(struct block_range_iter *iter) { return iter->start; }

Contributors

PersonTokensPropCommitsCommitProp
peter zijlstrapeter zijlstra19100.00%1100.00%
Total19100.00%1100.00%


static inline bool block_range_iter__next(struct block_range_iter *iter) { if (iter->start == iter->end) return false; iter->start = block_range__next(iter->start); return true; }

Contributors

PersonTokensPropCommitsCommitProp
peter zijlstrapeter zijlstra39100.00%1100.00%
Total39100.00%1100.00%


static inline bool block_range_iter__valid(struct block_range_iter *iter) { if (!iter->start || !iter->end) return false; return true; }

Contributors

PersonTokensPropCommitsCommitProp
peter zijlstrapeter zijlstra30100.00%1100.00%
Total30100.00%1100.00%

extern struct block_range *block_range__find(u64 addr); extern struct block_range_iter block_range__create(u64 start, u64 end); extern double block_range__coverage(struct block_range *br); #endif /* __PERF_BLOCK_RANGE_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
peter zijlstrapeter zijlstra231100.00%1100.00%
Total231100.00%1100.00%
Directory: tools/perf/util
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.