ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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
 
virtual void _write (uint64_t val)
 override this function to implement writes in case of AccessMode::VIRTUAL / AccessMode::PREFER_LAMBDA
 
- 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
 
virtual bool _applyAction (const etiss::fault::Fault &f, const etiss::fault::Action &a, std::string &errormsg)
 override this function to implement advanced action handling
 

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.
 
void write (uint64_t)
 function to write bits/a value to the Field.
 
bool applyBitflip (unsigned position, uint64_t fault_id)
 function to write a bitflip to a field
 
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.
 
void signalWrite ()
 this function should be called if the listener flag is set and the field changed without using the write() function.
 
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
 
const std::string name_
 name of the field.
 
const std::string prettyname_
 alternative/human readable name of the field.
 
const int flags_
 read write flags as specified by the static const int parameters of Field: R,W,L
 
const size_t width_
 width in bytes (rounded up if neccessary)
 
const size_t bitwidth_
 width in bits
 
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
 
std::function< void(Field *)> delete_
 
- Static Public Attributes inherited from etiss::VirtualStruct::Field
static const int R = 1
 read flag
 
static const int W = 2
 write flag
 
static const int RW = R | W
 flags to signal that a field supports read and write operations
 
static const int L = 4
 supports listener plugins; used for etiss::RegisterDevicePlugins to determine access to a variable/field
 
static const int F = 8
 supports fault injection/tracing
 
static const int A = 16
 supports advanced fault injection/tracing with the applyAction function
 
static const int P = 32
 private field: this flag indicates that this field is an implementation specific field that e.g.
 
- 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
 
std::function< void(uint64_t)> lwrite
 set this function for writes in case of AccessMode::LAMBDA / AccessMode::PREFER_LAMBDA
 

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: