summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Menard <Christian.Menard@tu-dresden.de>2017-02-09 19:10:25 -0500
committerChristian Menard <Christian.Menard@tu-dresden.de>2017-02-09 19:10:25 -0500
commitf4b14c73fc1c07b2c4658b4275ad121a6b6346d8 (patch)
tree4588ffb37fe534eeefca80da6e442054218af4b6
parent0852f0cfc61a543d1aa1add3bc51063be3c2a39d (diff)
downloadgem5-f4b14c73fc1c07b2c4658b4275ad121a6b6346d8.tar.xz
misc: Implement the Base SystemC Module as an sc_channel.
Implementing the Module as an sc_channel allows derived classes to provide SystemC interfaces. Other SystemC modules can connect to these interfaces. This meachanism can be used to control gem5 and acces gem5 components from within arbitrary SystemC moduels. Since sc_channel is derived from sc_module, this patch does not break compatibility with existing code. Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
-rw-r--r--util/systemc/sc_module.cc3
-rw-r--r--util/systemc/sc_module.hh3
2 files changed, 4 insertions, 2 deletions
diff --git a/util/systemc/sc_module.cc b/util/systemc/sc_module.cc
index 46a8d39ee..40f79bc85 100644
--- a/util/systemc/sc_module.cc
+++ b/util/systemc/sc_module.cc
@@ -43,6 +43,7 @@
* Steve Reinhardt
* Andrew Bardsley
* Matthias Jung
+ * Christian Menard
*/
/**
@@ -77,7 +78,7 @@ setTickFrequency()
::setClockFrequency(1000000000000);
}
-Module::Module(sc_core::sc_module_name name) : sc_core::sc_module(name),
+Module::Module(sc_core::sc_module_name name) : sc_core::sc_channel(name),
in_simulate(false)
{
SC_METHOD(eventLoop);
diff --git a/util/systemc/sc_module.hh b/util/systemc/sc_module.hh
index b529e2137..ff4e56e53 100644
--- a/util/systemc/sc_module.hh
+++ b/util/systemc/sc_module.hh
@@ -42,6 +42,7 @@
* Authors: Nathan Binkert
* Steve Reinhardt
* Andrew Bardsley
+ * Christian Menard
*/
/**
@@ -83,7 +84,7 @@ namespace Gem5SystemC
* This functionality is wrapped in an sc_module as its intended that
* the a class representing top level simulation control should be derived
* from this class. */
-class Module : public sc_core::sc_module
+class Module : public sc_core::sc_channel
{
protected:
/** Event to trigger (via. ::notify) for event scheduling from