summaryrefslogtreecommitdiff
path: root/src/systemc/core/scheduler.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemc/core/scheduler.hh')
-rw-r--r--src/systemc/core/scheduler.hh14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/systemc/core/scheduler.hh b/src/systemc/core/scheduler.hh
index 3ac7f419f..73d660e9e 100644
--- a/src/systemc/core/scheduler.hh
+++ b/src/systemc/core/scheduler.hh
@@ -187,7 +187,11 @@ class Scheduler
schedule(::Event *event, Tick tick)
{
pendingTicks[tick]++;
- eq->schedule(event, tick);
+
+ if (initReady)
+ eq->schedule(event, tick);
+ else
+ eventsToSchedule[event] = tick;
}
// For descheduling delayed/timed notifications/timeouts.
@@ -197,7 +201,11 @@ class Scheduler
auto it = pendingTicks.find(event->when());
if (--it->second == 0)
pendingTicks.erase(it);
- eq->deschedule(event);
+
+ if (initReady)
+ eq->deschedule(event);
+ else
+ eventsToSchedule.erase(event);
}
// Tell the scheduler than an event fired for bookkeeping purposes.
@@ -302,6 +310,8 @@ class Scheduler
ProcessList readyList;
ChannelList updateList;
+
+ std::map<::Event *, Tick> eventsToSchedule;
};
extern Scheduler scheduler;