systemc: When a thread completes, yield to the scheduler.
authorGabe Black <gabeblack@google.com>
Sat, 25 Aug 2018 00:19:39 +0000 (17:19 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 26 Sep 2018 00:01:37 +0000 (00:01 +0000)
Don't just fall off the end of the fiber and return to gem5. By
calling yield, we ensure that remaining Processes are run and that
bookkeeping is maintained correctly.

Change-Id: Ifbe104e155cad29e40a89767a7c1f986399f784d
Reviewed-on: https://gem5-review.googlesource.com/12264
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/core/process_types.hh

index 7617d41efd7085aa80b8547ed0fed2744dabfe28..2dde4672a5eab6b6aadd50292aab34cb925bfa56 100644 (file)
@@ -94,6 +94,7 @@ class Thread : public Process
             thread->_needsStart = false;
             thread->run();
             thread->terminate();
+            scheduler.yield();
         }
     };
     friend class Context;