Gabe Black has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/12214
Change subject: systemc: Don't run the ready event inline when unpausing.
......................................................................
systemc: Don't run the ready event inline when unpausing.
Now that delta events are handled explicitly by the scheduler, there's
no reason to run the readyEvent inline when returning from a pause. The
delta events will necessarily be run after the evaluate and update
phases.
Change-Id: Iad6d431a87742354e3a46a0fb44c309aa785ea60
---
M src/systemc/core/scheduler.cc
1 file changed, 6 insertions(+), 13 deletions(-)
diff --git a/src/systemc/core/scheduler.cc b/src/systemc/core/scheduler.cc
index bc08d55..ceaa5f4 100644
--- a/src/systemc/core/scheduler.cc
+++ b/src/systemc/core/scheduler.cc
@@ -196,10 +196,8 @@
e->run();
deltas.clear();
- if (runOnce) {
- eq->reschedule(&maxTickEvent, eq->getCurTick());
- runOnce = false;
- }
+ if (runOnce)
+ schedulePause();
}
void
@@ -220,14 +218,6 @@
kernel->status(::sc_core::SC_PAUSED);
runOnce = false;
scMain->run();
-
- // If the ready event is supposed to run now, run it inline so that it
- // preempts any delta notifications which were scheduled while we were
- // paused.
- if (readyEvent.scheduled()) {
- eq->deschedule(&readyEvent);
- runReady();
- }
}
void
@@ -298,13 +288,16 @@
if (!finish_delta) {
// If we're not supposed to finish the delta cycle, flush the list
- // of ready processes and scheduled updates.
+ // of ready processes, scheduled updates, and delta notifications.
Process *p;
while ((p = readyList.getNext()))
p->popListNode();
Channel *c;
while ((c = updateList.getNext()))
c->popListNode();
+ for (auto &e: deltas)
+ e->deschedule();
+ deltas.clear();
}
eq->schedule(&stopEvent, eq->getCurTick());
}
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/12214
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Iad6d431a87742354e3a46a0fb44c309aa785ea60
Gerrit-Change-Number: 12214
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev