From a0a9600c10fafbc2e1d99f92a885c7b301b14140 Mon Sep 17 00:00:00 2001 From: Tom Haber Date: Fri, 22 Jan 2010 13:03:38 +0100 Subject: [PATCH] avr: Trace no longer a singleton --- src/Trace.cpp | 2 -- src/Trace.h | 8 ++------ src/TraceAnalyzer.cpp | 16 ++++++++-------- src/TraceAnalyzer.h | 4 ++++ src/avr-sim.cpp | 3 ++- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/Trace.cpp b/src/Trace.cpp index d505fe8..ed04a3b 100644 --- a/src/Trace.cpp +++ b/src/Trace.cpp @@ -23,8 +23,6 @@ namespace avr { - Trace Trace::trace; - Trace::Trace() { for (traceIndex = 0; traceIndex < traceBufferSize; traceIndex++) traceBuffer[traceIndex] = NOTHING; diff --git a/src/Trace.h b/src/Trace.h index a2a5c7d..9d93e2b 100644 --- a/src/Trace.h +++ b/src/Trace.h @@ -40,7 +40,8 @@ namespace avr { */ class Trace { public: - static Trace & instance() { return trace; } + Trace(); + ~Trace(); public: /** @@ -135,11 +136,6 @@ namespace avr { private: std::ofstream fout; - static Trace trace; - - private: - Trace(); - ~Trace(); }; inline void Trace::raw(unsigned int ui) { diff --git a/src/TraceAnalyzer.cpp b/src/TraceAnalyzer.cpp index d79c7d4..2af9a6d 100644 --- a/src/TraceAnalyzer.cpp +++ b/src/TraceAnalyzer.cpp @@ -24,35 +24,35 @@ namespace avr { TraceAnalyzer::TraceAnalyzer(Core *core, const char *filename) : Analyzer(core) { - Trace::instance().enableLogging( filename ); + tracer.enableLogging( filename ); } TraceAnalyzer::~TraceAnalyzer() { - Trace::instance().disableLogging(); + tracer.disableLogging(); } void TraceAnalyzer::reset(unsigned int type) { - Trace::instance().reset( type ); + tracer.reset( type ); } void TraceAnalyzer::trace(dword address) { - Trace::instance().pc_trace( address ); + tracer.pc_trace( address ); } void TraceAnalyzer::step(lword ticks) { - Trace::instance().cycle_counter( ticks ); + tracer.cycle_counter( ticks ); } void TraceAnalyzer::readRegister(unsigned int r, byte val) { - Trace::instance().register_read( r, val ); + tracer.register_read( r, val ); } void TraceAnalyzer::writeRegister(unsigned int r, byte val) { - Trace::instance().register_write( r, val ); + tracer.register_write( r, val ); } void TraceAnalyzer::interrupt(unsigned int vector, unsigned int /*addr*/) { - Trace::instance().interrupt( vector ); + tracer.interrupt( vector ); } } diff --git a/src/TraceAnalyzer.h b/src/TraceAnalyzer.h index f587103..3d1818e 100644 --- a/src/TraceAnalyzer.h +++ b/src/TraceAnalyzer.h @@ -2,6 +2,7 @@ #define AVR_TRACEANALYZER_H #include "Analyzer.h" +#include "Trace.h" namespace avr { @@ -28,6 +29,9 @@ namespace avr { virtual void readRegister(unsigned int r, byte val); virtual void writeRegister(unsigned int r, byte val); virtual void interrupt(unsigned int vector, unsigned int addr); + + private: + Trace tracer; }; } diff --git a/src/avr-sim.cpp b/src/avr-sim.cpp index cc92f4e..dc40341 100644 --- a/src/avr-sim.cpp +++ b/src/avr-sim.cpp @@ -360,7 +360,8 @@ int main(int argc, char *argv[]) { } if( listtrace != 0 ) { - Trace::instance().list( listtrace, std::cout, dev); + Trace tracer; + tracer.list( listtrace, std::cout, dev); } else if( gdbserver ) { GdbServer gdb( simclock, gdbserver_port ); gdb.add( &dev ); -- 2.11.4.GIT