[gem5-dev] Change in gem5/gem5[develop]: systemc: move tracefile registration into constructor

2021-11-21 Thread Yu-hsin Wang (Gerrit) via gem5-dev
Yu-hsin Wang has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/52923 )


Change subject: systemc: move tracefile registration into constructor
..

systemc: move tracefile registration into constructor

The TraceFile object needs to be registered into the scheduler for
triggering its trace function. For now only the TraceFile created by
sc_create_vcd_trace_file is registered automatically. This design is not
good for users to implement their own TraceFile class.

In addition, some libraries, ex Verilator, implement thier own trace file.
To bridge them into gem5, we also need the ability to create customized
TraceFile class.

Change-Id: I38fe510048655c6a2cd848a0a1263a66a1778eee
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/52923
Reviewed-by: Earl Ou 
Reviewed-by: Gabe Black 
Maintainer: Gabe Black 
Tested-by: kokoro 
---
M src/systemc/utils/sc_trace_file.cc
M src/systemc/utils/tracefile.cc
2 files changed, 29 insertions(+), 7 deletions(-)

Approvals:
  Earl Ou: Looks good to me, but someone else must approve
  Gabe Black: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass




diff --git a/src/systemc/utils/sc_trace_file.cc  
b/src/systemc/utils/sc_trace_file.cc

index 38161ba..8eb 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_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 a6cf952..0c54052 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 @@
 TraceFile::TraceFile(const std::string ) :
 _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);
 }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/52923
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I38fe510048655c6a2cd848a0a1263a66a1778eee
Gerrit-Change-Number: 52923
Gerrit-PatchSet: 2
Gerrit-Owner: Yu-hsin Wang 
Gerrit-Reviewer: Earl Ou 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Jui-min Lee 
Gerrit-Reviewer: Yu-hsin Wang 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: systemc: move tracefile registration into constructor

2021-11-17 Thread Yu-hsin Wang (Gerrit) via gem5-dev
Yu-hsin Wang has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/52923 )



Change subject: systemc: move tracefile registration into constructor
..

systemc: move tracefile registration into constructor

The TraceFile object needs to be registered into the scheduler for
triggering its trace function. For now only the TraceFile created by
sc_create_vcd_trace_file is registered automatically. This design is not
good for users to implement their own TraceFile class.

In addition, some libraries, ex Verilator, implement thier own trace file.
To bridge them into gem5, we also need the ability to create customized
TraceFile class.

Change-Id: I38fe510048655c6a2cd848a0a1263a66a1778eee
---
M src/systemc/utils/sc_trace_file.cc
M src/systemc/utils/tracefile.cc
2 files changed, 24 insertions(+), 7 deletions(-)



diff --git a/src/systemc/utils/sc_trace_file.cc  
b/src/systemc/utils/sc_trace_file.cc

index 38161ba..8eb 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_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 a6cf952..0c54052 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 @@
 TraceFile::TraceFile(const std::string ) :
 _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);
 }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/52923
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I38fe510048655c6a2cd848a0a1263a66a1778eee
Gerrit-Change-Number: 52923
Gerrit-PatchSet: 1
Gerrit-Owner: Yu-hsin Wang 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s