15#ifndef ETISS_INCLUDE_INTERRUPTVECTOR_H_
16#define ETISS_INCLUDE_INTERRUPTVECTOR_H_
19#include "etiss/jit/types.h"
38 virtual void setBit(
unsigned bit,
bool state) = 0;
42 virtual bool getBit(
unsigned bit)
const = 0;
46 virtual unsigned width()
const = 0;
59template <
typename INT>
67 typedef typename std::vector<INT *>
Vector;
73 if (
vector_.size() > mask.size())
78 if (
vector_.size() < mask.size())
85 virtual void setBit(
unsigned bit,
bool state)
87 unsigned o = bit % (
sizeof(INT) * 8);
88 unsigned i = (bit - o) / (
sizeof(INT) * 8);
91 INT mask = ((INT)1) << o;
98 virtual bool getBit(
unsigned bit)
const
100 unsigned o = bit % (
sizeof(INT) * 8);
101 unsigned i = (bit - o) / (
sizeof(INT) * 8);
102 INT mask = ((INT)1) << o;
105 return ((*
vector_[i] & mask) & (*
mask_[i] & mask)) != 0;
109 virtual unsigned width()
const {
return (
unsigned)
vector_.size() *
sizeof(INT); }
112 for (
unsigned i = 0; i <
vector_.size(); i++)
121 for (
unsigned i = 0; i <
vector_.size(); i++)
general configuration and logging
interface to set interrupt bits
virtual void clear()
sets every bit to false
virtual unsigned width() const =0
number of interrupt bits
virtual bool isActive() const
virtual bool getBit(unsigned bit) const =0
get the bit of an interrupt line
bool consumed_by_interruptlistener_
virtual void setBit(unsigned bit, bool state)=0
set the bit of an interrupt line to state (true = raised)
virtual ~InterruptVector()
template implementation of an InterruptVector that uses integer variables to store interrupt bit valu...
virtual bool isActive() const
virtual void clear()
sets every bit to false
std::vector< INT * > Vector
virtual ~MappedInterruptVector()
virtual void setBit(unsigned bit, bool state)
set the bit of an interrupt line to state (true = raised)
virtual bool getBit(unsigned bit) const
get the bit of an interrupt line
MappedInterruptVector(Vector vec, Vector mask)
pass two equally long integer pointer vectors that will be used for interrupt bit vectors and masks
virtual unsigned width() const
number of interrupt bits
void log(Verbosity level, std::string msg)
write log message at the given level.