Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  block-range.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PERF_BLOCK_RANGE_H
#define __PERF_BLOCK_RANGE_H

#include <stdbool.h>
#include <linux/rbtree.h>
#include <linux/types.h>

struct symbol;

/*
 * 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 */

Messung V0.5
C=97 H=94 G=95

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge