From 137b4993a4710a247d79cdc0194dfa107b080f98 Mon Sep 17 00:00:00 2001 From: Gabe Black <gabeblack@google.com> Date: Mon, 8 Oct 2018 23:08:27 -0700 Subject: systemc: Don't re-schedule a process which is already scheduled. Change-Id: I8e12713c49aad03d0bfb779883adcbfa8fd4b42e Reviewed-on: https://gem5-review.googlesource.com/c/13334 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com> --- src/systemc/core/scheduler.cc | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/systemc/core/scheduler.cc') diff --git a/src/systemc/core/scheduler.cc b/src/systemc/core/scheduler.cc index ec91c795a..52bf7ec31 100644 --- a/src/systemc/core/scheduler.cc +++ b/src/systemc/core/scheduler.cc @@ -165,6 +165,7 @@ Scheduler::yield() Fiber::primaryFiber()->run(); } else { _current->popListNode(); + _current->scheduled(false); // Switch to whatever Fiber is supposed to run this process. All // Fibers which aren't running should be parked at this line. _current->fiber()->run(); @@ -199,6 +200,8 @@ Scheduler::ready(Process *p) if (_stopNow) return; + p->scheduled(true); + if (p->procKind() == ::sc_core::SC_METHOD_PROC_) readyListMethods.pushLast(p); else -- cgit v1.2.3