ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
|
#include <Injector.h>
Public Types | |
typedef Injector * | ptr |
Public Member Functions | |
Injector () | |
virtual | ~Injector () |
virtual std::list< std::string > | listFields ()=0 |
list all fields directly reachable by this injector More... | |
virtual std::list< std::string > | listSubInjectors ()=0 |
list all sub injectors. More... | |
virtual ptr | getSubInjector (const std::string &name)=0 |
get a sub injector. More... | |
virtual ptr | getParentInjector ()=0 |
get a the parent injector (root returns 0). More... | |
virtual bool | needsCallbacks () |
virtual bool | cycleAccurateCallback (uint64_t time_ps) |
virtual bool | instructionAccurateCallback (uint64_t time_ps) |
virtual void * | fastFieldAccessPtr (const std::string &name, std::string &errormsg)=0 |
virtual void | freeFastFieldAccessPtr (void *) |
MUST be called to cleanup a pointer acquired with fastFieldAccessPtr() default implementation is nop. More... | |
virtual bool | readField (void *fastfieldaccessptr, uint64_t &val, std::string &errormsg)=0 |
read the value of a field More... | |
virtual bool | applyAction (const etiss::fault::Fault &fault, const etiss::fault::Action &action, std::string &errormsg)=0 |
virtual bool | acceleratedTrigger (const etiss::fault::Trigger &, int32_t fault_id) |
virtual std::string | getInjectorPath () |
returns the path of the current object. More... | |
void | addTrigger (const Trigger &t, int32_t fault_id) |
> Triggers to look at in callbacks More... | |
Static Public Member Functions | |
static ptr | get (const std::string &injectorPath) |
Private Attributes | |
volatile bool | has_pending_triggers |
std::list< std::pair< Trigger, int32_t > > | pending_triggers |
std::list< std::pair< Trigger, int32_t > > | unknown_triggers |
> Triggers which were just added More... | |
Definition at line 77 of file Injector.h.
typedef Injector* etiss::fault::Injector::ptr |
Definition at line 83 of file Injector.h.
etiss::fault::Injector::Injector | ( | ) |
Definition at line 61 of file Injector.cpp.
References has_pending_triggers, etiss::log(), and etiss::VERBOSE.
|
inlinevirtual |
Definition at line 88 of file Injector.h.
|
virtual |
Reimplemented in etiss::VirtualStruct.
Definition at line 225 of file Injector.cpp.
References etiss::log(), etiss::fault::Trigger::toString(), and etiss::VERBOSE.
Referenced by addTrigger().
> Triggers to look at in callbacks
TODO specialized lists. e.g. time triggers should be sorted and only the earliest time should be checked
Definition at line 204 of file Injector.cpp.
References acceleratedTrigger(), has_pending_triggers, etiss::log(), pending_triggers, etiss::fault::Trigger::toString(), and etiss::VERBOSE.
Referenced by etiss::fault::Stressor::addFault().
|
pure virtual |
Implemented in etiss::VirtualStruct.
Definition at line 79 of file Injector.cpp.
References etiss::fault::Stressor::firedTrigger(), has_pending_triggers, etiss::log(), pending_triggers, unknown_triggers, and etiss::VERBOSE.
Referenced by instructionAccurateCallback().
|
pure virtual |
Implemented in etiss::VirtualStruct.
Referenced by etiss::fault::Trigger::fired().
|
virtual |
MUST be called to cleanup a pointer acquired with fastFieldAccessPtr() default implementation is nop.
Definition at line 67 of file Injector.cpp.
References etiss::INFO, etiss::log(), and etiss::VERBOSE.
|
static |
injectorPath | the full path/name to/off an injector. in case of using ETISS/VirtualStruct please have a look at the doc of etiss::VirtualStruct for examples of the path syntax |
Definition at line 655 of file VirtualStruct.cpp.
References etiss::VirtualStruct::root().
Referenced by etiss::fault::InjectorAddress::getInjector().
|
virtual |
returns the path of the current object.
by default the path will consists of the injector names from getSubInjectors() seperated by "::" (see etiss::VirtualStruct). override this function to match other/custom syntax
Definition at line 142 of file Injector.cpp.
References etiss::ERROR, ETISS_SRCLOC, getParentInjector(), getSubInjector(), listSubInjectors(), and etiss::log().
Referenced by etiss::VirtualStruct::applyAction().
|
pure virtual |
get a the parent injector (root returns 0).
in case of c++11 this function returns a smart pointer (std::shared_ptr<Injector>)
Implemented in etiss::VirtualStruct.
Referenced by getInjectorPath().
|
pure virtual |
get a sub injector.
in case of c++11 this function returns a smart pointer (std::shared_ptr<Injector>)
Implemented in etiss::VirtualStruct.
Referenced by getInjectorPath().
todo
Definition at line 123 of file Injector.cpp.
References cycleAccurateCallback(), etiss::log(), and etiss::VERBOSE.
|
pure virtual |
list all fields directly reachable by this injector
Implemented in etiss::VirtualStruct.
|
pure virtual |
list all sub injectors.
Implemented in etiss::VirtualStruct.
Referenced by getInjectorPath().
|
virtual |
Definition at line 73 of file Injector.cpp.
References has_pending_triggers, etiss::log(), and etiss::VERBOSE.
|
pure virtual |
read the value of a field
Implemented in etiss::VirtualStruct.
|
private |
Definition at line 178 of file Injector.h.
Referenced by addTrigger(), cycleAccurateCallback(), Injector(), and needsCallbacks().
Definition at line 179 of file Injector.h.
Referenced by addTrigger(), and cycleAccurateCallback().
> Triggers which were just added
Definition at line 180 of file Injector.h.
Referenced by cycleAccurateCallback().