Linux Audio

Check our new training course

Loading...
/* SPDX-License-Identifier: GPL-2.0 */
#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);
}

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;
}

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;
}

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

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 */
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy