ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
Protected Member Functions | List of all members
etiss::VirtualStruct::FieldT< structT, retT, field > Class Template Reference
Inheritance diagram for etiss::VirtualStruct::FieldT< structT, retT, field >:
Inheritance graph
[legend]
Collaboration diagram for etiss::VirtualStruct::FieldT< structT, retT, field >:
Collaboration graph
[legend]

Protected Member Functions

 FieldT (VirtualStruct &parent, const std::string &name, const std::string &prettyname)
 
virtual uint64_t _read () const
 override this function to implement reads in case of AccessMode::VIRTUAL / AccessMode::PREFER_LAMBDA More...
 
virtual void _write (uint64_t val)
 override this function to implement writes in case of AccessMode::VIRTUAL / AccessMode::PREFER_LAMBDA More...
 
- Protected Member Functions inherited from etiss::VirtualStruct::Field
virtual bool _applyBitflip (unsigned position, uint64_t fault_id)
 override this function to implement bitflip applying to a field More...
 
virtual bool _applyAction (const etiss::fault::Fault &f, const etiss::fault::Action &a, std::string &errormsg)
 override this function to implement advanced action handling More...
 

Additional Inherited Members

- Public Types inherited from etiss::VirtualStruct::Field
enum  AccessMode { VIRTUAL , LAMBDA , PREFER_LAMBDA }
 defines how a field should perform reads/writes. More...
 
- Public Member Functions inherited from etiss::VirtualStruct::Field
 Field (VirtualStruct &parent, const std::string &name, const std::string &prettyname, int flags, size_t width, size_t bitwidth=0)
 
 Field (VirtualStruct &parent, const std::string &name, const std::string &prettyname, int flags, size_t width, bool virtual_enabled, std::function< uint64_t()> lread, std::function< void(uint64_t)> lwrite, size_t bitwidth=0)
 
virtual ~Field ()
 
uint64_t read () const
 function to read bits/a value from the Field. More...
 
void write (uint64_t)
 function to write bits/a value to the Field. More...
 
bool applyBitflip (unsigned position, uint64_t fault_id)
 function to write a bitflip to a field More...
 
bool applyAction (const etiss::fault::Fault &f, const etiss::fault::Action &a, std::string &errormsg)
 advanced fault injection. Field must have the A flag to use this. More...
 
void signalWrite ()
 this function should be called if the listener flag is set and the field changed without using the write() function. More...
 
FieldsetDeleteP (std::function< void(Field *)> del)
 
FieldsetDelete (std::function< void(Field *)> del)
 
bool addListener (Listener *listener, std::shared_ptr< Listener > ref=nullptr)
 
void removeListener (Listener *listener, std::shared_ptr< Listener > ref=nullptr)
 
- Public Attributes inherited from etiss::VirtualStruct::Field
VirtualStructparent_
 reference to parent virtual struct More...
 
const std::string name_
 name of the field. More...
 
const std::string prettyname_
 alternative/human readable name of the field. More...
 
const int flags_
 read write flags as specified by the static const int parameters of Field: R,W,L More...
 
const size_t width_
 width in bytes (rounded up if neccessary) More...
 
const size_t bitwidth_
 width in bits More...
 
const AccessMode accessMode_
 
std::function< bool(unsigned position, uint64_t fault_id)> lapplyBitflip
 if this function is set the the default implementation of applyBitflip will use it More...
 
std::function< void(Field *)> delete_
 
- Static Public Attributes inherited from etiss::VirtualStruct::Field
static const int R = 1
 read flag More...
 
static const int W = 2
 write flag More...
 
static const int RW = R | W
 flags to signal that a field supports read and write operations More...
 
static const int L = 4
 supports listener plugins; used for etiss::RegisterDevicePlugins to determine access to a variable/field More...
 
static const int F = 8
 supports fault injection/tracing More...
 
static const int A = 16
 supports advanced fault injection/tracing with the applyAction function More...
 
static const int P = 32
 private field: this flag indicates that this field is an implementation specific field that e.g. More...
 
- Protected Attributes inherited from etiss::VirtualStruct::Field
std::function< uint64_t()> lread
 set this function for reads in case of AccessMode::LAMBDA / AccessMode::PREFER_LAMBDA More...
 
std::function< void(uint64_t)> lwrite
 set this function for writes in case of AccessMode::LAMBDA / AccessMode::PREFER_LAMBDA More...
 

Detailed Description

template<typename structT, typename retT, retT structT::* field>
class etiss::VirtualStruct::FieldT< structT, retT, field >

Definition at line 289 of file VirtualStruct.h.

Constructor & Destructor Documentation

◆ FieldT()

template<typename structT , typename retT , retT structT::* field>
etiss::VirtualStruct::FieldT< structT, retT, field >::FieldT ( VirtualStruct parent,
const std::string &  name,
const std::string &  prettyname 
)
inlineprotected

Definition at line 295 of file VirtualStruct.h.

Member Function Documentation

◆ _read()

template<typename structT , typename retT , retT structT::* field>
virtual uint64_t etiss::VirtualStruct::FieldT< structT, retT, field >::_read ( ) const
inlineprotectedvirtual

override this function to implement reads in case of AccessMode::VIRTUAL / AccessMode::PREFER_LAMBDA

Reimplemented from etiss::VirtualStruct::Field.

Definition at line 299 of file VirtualStruct.h.

References etiss::VirtualStruct::Field::parent_, etiss::VirtualStruct::structure_, and uint64_t.

◆ _write()

template<typename structT , typename retT , retT structT::* field>
virtual void etiss::VirtualStruct::FieldT< structT, retT, field >::_write ( uint64_t  )
inlineprotectedvirtual

override this function to implement writes in case of AccessMode::VIRTUAL / AccessMode::PREFER_LAMBDA

Reimplemented from etiss::VirtualStruct::Field.

Definition at line 300 of file VirtualStruct.h.

References etiss::VirtualStruct::Field::parent_, and etiss::VirtualStruct::structure_.


The documentation for this class was generated from the following file: