diff --git a/src/systemc/utils/sc_trace_file.cc b/src/systemc/utils/sc_trace_file.cc index 38161badd0..dddd8eb3ae 100644 --- a/src/systemc/utils/sc_trace_file.cc +++ b/src/systemc/utils/sc_trace_file.cc @@ -27,7 +27,6 @@ #include -#include "systemc/core/scheduler.hh" #include "systemc/ext/channel/sc_signal_in_if.hh" #include "systemc/ext/core/sc_event.hh" #include "systemc/ext/core/sc_time.hh" @@ -52,16 +51,12 @@ sc_trace_file::~sc_trace_file() {} sc_trace_file * sc_create_vcd_trace_file(const char *name) { - auto tf = new ::sc_gem5::VcdTraceFile(name); - ::sc_gem5::scheduler.registerTraceFile(tf); - return tf; + return new ::sc_gem5::VcdTraceFile(name); } void sc_close_vcd_trace_file(sc_trace_file *tf) { - ::sc_gem5::scheduler.unregisterTraceFile( - static_cast<::sc_gem5::TraceFile *>(tf)); delete tf; } diff --git a/src/systemc/utils/tracefile.cc b/src/systemc/utils/tracefile.cc index a6cf9523a5..0c54052ac9 100644 --- a/src/systemc/utils/tracefile.cc +++ b/src/systemc/utils/tracefile.cc @@ -30,6 +30,7 @@ #include #include +#include "systemc/core/scheduler.hh" #include "systemc/core/time.hh" #include "systemc/ext/core/sc_main.hh" #include "systemc/ext/core/sc_time.hh" @@ -41,10 +42,13 @@ namespace sc_gem5 TraceFile::TraceFile(const std::string &name) : _os(gem5::simout.create(name, true, true)), timeUnitTicks(0), timeUnitValue(0.0), timeUnitUnit(::sc_core::SC_PS), _traceDeltas(false) -{} +{ + ::sc_gem5::scheduler.registerTraceFile(this); +} TraceFile::~TraceFile() { + ::sc_gem5::scheduler.unregisterTraceFile(this); gem5::simout.close(_os); }