ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
Public Member Functions | List of all members
etiss::SystemWrapperPlugin Class Referenceabstract

this plugin allows to wrap the ETISS_System interface More...

#include <Plugin.h>

Inheritance diagram for etiss::SystemWrapperPlugin:
Inheritance graph
[legend]
Collaboration diagram for etiss::SystemWrapperPlugin:
Collaboration graph
[legend]

Public Member Functions

 SystemWrapperPlugin ()
 
virtual ~SystemWrapperPlugin ()
 
virtual ETISS_Systemwrap (ETISS_CPU *cpu, ETISS_System *system)=0
 change/wrap the passed system structure. More...
 
virtual ETISS_Systemunwrap (ETISS_CPU *cpu, ETISS_System *system)=0
 undo wrap function call this function will be called AFTER etiss::Plugin::cleanup More...
 
- Public Member Functions inherited from etiss::Plugin
virtual ~Plugin ()
 
unsigned getType ()
 
InterruptListenerPlugingetInterruptListenerPlugin ()
 
CoroutinePlugingetCoroutinePlugin ()
 
SystemWrapperPlugingetSystemWrapperPlugin ()
 
RegisterDevicePlugingetRegisterDevicePlugin ()
 
TranslationPlugingetTranslationPlugin ()
 
std::string getPluginName () const
 
const std::string & getLastAssignedCoreName ()
 
std::string toString () const
 
- Public Member Functions inherited from etiss::ToString
 ToString ()
 
virtual ~ToString ()
 

Additional Inherited Members

- Static Public Attributes inherited from etiss::Plugin
static const unsigned INTERRUPTLISTENER = 1 << 0
 access to translated code More...
 
static const unsigned COROUTINE = 1 << 1
 callback after execution of each translated block More...
 
static const unsigned SYSTEMWRAPPER = 1 << 2
 can wrap/change ETISS_System structure at execution start More...
 
static const unsigned REGISTERDEVICE
 gets noticed of changes to special registers (e.g. mmu register etc. [depends on architecture]) More...
 
static const unsigned TRANSLATION
 access to translated code during translation phase or when instruction tree is built More...
 
- Protected Member Functions inherited from etiss::Plugin
 Plugin (unsigned type=0)
 
virtual std::string _getPluginName () const =0
 
virtual void init (ETISS_CPU *cpu, ETISS_System *system, CPUArch *arch)
 this function is called before the plugin is used in the cpu execution loop (etiss::CPUCore::execute). More...
 
virtual void cleanup ()
 this function is called after cpu execution loop (etiss::CPUCore::execute) finished. More...
 
void setCorrespondingCPUCoreName (std::string name)
 
virtual void addedToCPUCore (etiss::CPUCore *core)
 called as soon a plugin has been added to its CPUCore. More...
 
virtual void removedFromCPUCore (etiss::CPUCore *core)
 called as soon a plugin has been removed from its CPUCore. More...
 
- Protected Attributes inherited from etiss::Plugin
ETISS_CPUplugin_cpu_
 holds a pointer to the cpu structure. will be set before init call and after cleanup call More...
 
ETISS_Systemplugin_system_
 holds a pointer to the system structure. More...
 
CPUArchplugin_arch_
 holds a pointer to the CPUArch instance. will be set before init call and after cleanup call More...
 
CPUCoreplugin_core_
 holds a pointer to the associated CPUCore instance. More...
 

Detailed Description

this plugin allows to wrap the ETISS_System interface

e.g. etiss::plugin::gdb::Server uses this interface to gain access to data read/writes for breakpoint hits

Definition at line 325 of file Plugin.h.

Constructor & Destructor Documentation

◆ SystemWrapperPlugin()

SystemWrapperPlugin::SystemWrapperPlugin ( )

◆ ~SystemWrapperPlugin()

SystemWrapperPlugin::~SystemWrapperPlugin ( )
virtual

Definition at line 119 of file Plugin.cpp.

Member Function Documentation

◆ unwrap()

virtual ETISS_System* etiss::SystemWrapperPlugin::unwrap ( ETISS_CPU cpu,
ETISS_System system 
)
pure virtual

◆ wrap()

virtual ETISS_System* etiss::SystemWrapperPlugin::wrap ( ETISS_CPU cpu,
ETISS_System system 
)
pure virtual

change/wrap the passed system structure.

the returned value will be used as the current system this function will be called BEFORE etiss::Plugin::init

Implemented in etiss::plugin::gdb::Server, etiss::plugin::SelectiveSysWrapper, etiss::mm::DMMUWrapper, and etiss::plugin::MemoryDeviceMapper.


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