|
ETISS 0.11.2
ExtendableTranslatingInstructionSetSimulator(version0.11.2)
|
#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 | |
| virtual std::list< std::string > | listSubInjectors ()=0 |
| list all sub injectors. | |
| virtual ptr | getSubInjector (const std::string &name)=0 |
| get a sub injector. | |
| virtual ptr | getParentInjector ()=0 |
| get a the parent injector (root returns 0). | |
| 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. | |
| virtual bool | readField (void *fastfieldaccessptr, uint64_t &val, std::string &errormsg)=0 |
| read the value of a field | |
| 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 bool | update_field_access_rights (const etiss::fault::Action &action, std::string &errormsg)=0 |
Update the field of injector with access rights to allow action (used to get type of action). | |
| virtual std::string | getInjectorPath () |
| returns the path of the current object. | |
| void | addTrigger (const Trigger &t, int32_t fault_id) |
| TODO specialized lists. e.g. time triggers should be sorted and only the earliest time should be checked. | |
| void | removeTrigger (const Trigger &t, int32_t fault_id) |
Static Public Member Functions | |
| static ptr | get (const std::string &injectorPath) |
Private Attributes | |
| bool | has_pending_triggers { false } |
| bool | has_remove_triggers { false } |
| std::list< std::pair< Trigger, int32_t > > | pending_triggers |
| Triggers which were just added. | |
| std::list< std::pair< Trigger, int32_t > > | unknown_triggers |
| Triggers to look at in callbacks. | |
| std::list< std::pair< Trigger, int32_t > > | remove_triggers |
| Triggers to synchronously remove on next callback (prio over pending) | |
Definition at line 47 of file Injector.h.
| typedef Injector* etiss::fault::Injector::ptr |
Definition at line 53 of file Injector.h.
| etiss::fault::Injector::Injector | ( | ) |
Definition at line 31 of file Injector.cpp.
References has_pending_triggers, etiss::log(), and etiss::VERBOSE.

|
inlinevirtual |
Definition at line 58 of file Injector.h.
|
virtual |
Reimplemented in etiss::VirtualStruct.
Definition at line 216 of file Injector.cpp.
References etiss::log(), etiss::fault::Trigger::toString(), and etiss::VERBOSE.

TODO specialized lists. e.g. time triggers should be sorted and only the earliest time should be checked.
Definition at line 184 of file Injector.cpp.
References etiss::log(), etiss::fault::Trigger::toString(), and etiss::VERBOSE.
Referenced by etiss::fault::Stressor::addFault().


|
pure virtual |
Implemented in etiss::VirtualStruct.
Definition at line 49 of file Injector.cpp.
References has_pending_triggers, has_remove_triggers, etiss::log(), pending_triggers, remove_triggers, unknown_triggers, unlikely, and etiss::VERBOSE.

|
pure virtual |
Implemented in etiss::VirtualStruct.
Referenced by etiss::fault::Trigger::check().

|
virtual |
MUST be called to cleanup a pointer acquired with fastFieldAccessPtr() default implementation is nop.
Definition at line 37 of file Injector.cpp.
References 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 705 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 122 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 103 of file Injector.cpp.
References etiss::log(), and etiss::VERBOSE.
Referenced by etiss::plugin::InstructionAccurateCallback::call_on_entry().


|
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 43 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.
Definition at line 205 of file Injector.cpp.
References etiss::log(), etiss::fault::Trigger::toString(), and etiss::VERBOSE.
Referenced by etiss::fault::Stressor::removeFault().


|
pure virtual |
Update the field of injector with access rights to allow action (used to get type of action).
For example, if action is of etiss::fault::Action::BITFLIP, field requires F flag set
Implemented in etiss::VirtualStruct.
Referenced by etiss::fault::Stressor::addFault().

Definition at line 154 of file Injector.h.
Referenced by cycleAccurateCallback(), Injector(), and needsCallbacks().
Definition at line 155 of file Injector.h.
Referenced by cycleAccurateCallback().
Triggers which were just added.
Definition at line 156 of file Injector.h.
Referenced by cycleAccurateCallback().
Triggers to synchronously remove on next callback (prio over pending)
Definition at line 159 of file Injector.h.
Referenced by cycleAccurateCallback().
Triggers to look at in callbacks.
Definition at line 157 of file Injector.h.
Referenced by cycleAccurateCallback().