summaryrefslogtreecommitdiff
path: root/src/systemc
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2018-07-20 19:24:58 -0700
committerGabe Black <gabeblack@google.com>2018-09-11 21:44:54 +0000
commitca3b0eb1559138f0762dd39581ea64851baf742f (patch)
tree56ddd2ef5f248f5d85e236e493e817bc07c2b32e /src/systemc
parent3224bc355464bfa6bac924e6fa6d6d507700e3ff (diff)
downloadgem5-ca3b0eb1559138f0762dd39581ea64851baf742f.tar.xz
systemc: Add a sensitivity type for exports.
Dynamic processes can be sensitive to exports, so we need a pending sensitivity to represent them. Change-Id: I87952f8bbb7847ad1f1d98d35cd5dd488e7b28ab Reviewed-on: https://gem5-review.googlesource.com/12042 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc')
-rw-r--r--src/systemc/core/process.hh19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/systemc/core/process.hh b/src/systemc/core/process.hh
index afdbb3798..3b1fb4eb6 100644
--- a/src/systemc/core/process.hh
+++ b/src/systemc/core/process.hh
@@ -39,6 +39,7 @@
#include "systemc/core/list.hh"
#include "systemc/core/object.hh"
#include "systemc/ext/core/sc_event.hh"
+#include "systemc/ext/core/sc_export.hh"
#include "systemc/ext/core/sc_interface.hh"
#include "systemc/ext/core/sc_module.hh"
#include "systemc/ext/core/sc_port.hh"
@@ -224,6 +225,24 @@ class PendingSensitivityPort : public PendingSensitivity
}
};
+class PendingSensitivityExport : public PendingSensitivity
+{
+ private:
+ const sc_core::sc_export_base *exp;
+
+ public:
+ PendingSensitivityExport(Process *p, const sc_core::sc_export_base *exp) :
+ PendingSensitivity(p), exp(exp)
+ {}
+
+ void
+ finalize(Sensitivities &s) override
+ {
+ s.push_back(new SensitivityEvent(process,
+ &exp->get_interface()->default_event()));
+ }
+};
+
class PendingSensitivityFinder : public PendingSensitivity
{
private: