#ifndef __L4SYS_EXPERIMENT_HPP__ #define __L4SYS_EXPERIMENT_HPP__ #include #include "efw/ExperimentFlow.hpp" #include "efw/JobClient.hpp" #include "util/Logger.hpp" #include "sal/Listener.hpp" //#include "l4sys.pb.h" struct L4SysProtoMsg_Result; class L4SysExperimentData; /** * A data type containing an instruction trace entry. */ typedef struct TraceInstrType { fail::address_t trigger_addr; //!< the instruction pointer of the observed instruction /** * counts how often this instruction has been called * if you want to call exactly this instruction, e.g. in a loop, * you need to ignore the breakpoint \c bp_counter - 1 times */ unsigned bp_counter; } TraceInstr; class L4SysExperiment : public fail::ExperimentFlow { private: class L4SysConfig; fail::JobClient m_jc; //!< the job client connecting to the campaign server fail::Logger log; //