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