summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/systemc/core/event.cc10
-rw-r--r--src/systemc/core/event.hh1
-rw-r--r--src/systemc/core/sc_event.cc12
3 files changed, 21 insertions, 2 deletions
diff --git a/src/systemc/core/event.cc b/src/systemc/core/event.cc
index 120b51476..2e356bdb6 100644
--- a/src/systemc/core/event.cc
+++ b/src/systemc/core/event.cc
@@ -179,6 +179,16 @@ Event::notify(const sc_core::sc_time &t)
}
void
+Event::notifyDelayed(const sc_core::sc_time &t)
+{
+ if (delayedNotify.scheduled()) {
+ SC_REPORT_ERROR("(E531) notify_delayed() cannot be called on events "
+ "that have pending notifications", "");
+ }
+ notify(t);
+}
+
+void
Event::cancel()
{
if (delayedNotify.scheduled())
diff --git a/src/systemc/core/event.hh b/src/systemc/core/event.hh
index 532d98343..75687729f 100644
--- a/src/systemc/core/event.hh
+++ b/src/systemc/core/event.hh
@@ -82,6 +82,7 @@ class Event
{
notify(sc_core::sc_time(d, u));
}
+ void notifyDelayed(const sc_core::sc_time &t);
void cancel();
bool triggered() const;
diff --git a/src/systemc/core/sc_event.cc b/src/systemc/core/sc_event.cc
index 318fea624..b2dc0e525 100644
--- a/src/systemc/core/sc_event.cc
+++ b/src/systemc/core/sc_event.cc
@@ -342,8 +342,16 @@ void sc_event::notify(const sc_time &t) { _gem5_event->notify(t); }
void sc_event::notify(double d, sc_time_unit u) { _gem5_event->notify(d, u); }
void sc_event::cancel() { _gem5_event->cancel(); }
bool sc_event::triggered() const { return _gem5_event->triggered(); }
-void sc_event::notify_delayed() { _gem5_event->notify(SC_ZERO_TIME); }
-void sc_event::notify_delayed(const sc_time &t) { _gem5_event->notify(t); }
+void
+sc_event::notify_delayed()
+{
+ _gem5_event->notifyDelayed(SC_ZERO_TIME);
+}
+void
+sc_event::notify_delayed(const sc_time &t)
+{
+ _gem5_event->notifyDelayed(t);
+}
sc_event_and_expr
sc_event::operator & (const sc_event &e) const