systemc: If sc_main returns, don't do any more systemc stuff.
authorGabe Black <gabeblack@google.com>
Thu, 23 Aug 2018 00:52:19 +0000 (17:52 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 25 Sep 2018 23:56:18 +0000 (23:56 +0000)
commita0f2391fc143cbe505c2cedffb477713bbc85cbe
treebcd4ae171b6e7012338685363a55ac9dc469456b
parent382066d462d11728a0c9598d1698765da7a05293
systemc: If sc_main returns, don't do any more systemc stuff.

When sc_main returns, clear out any pending work in the scheduler and
also block the systemc kernel from doing actions which correspond with
the start of simulation.

It's most likely that work like oustanding timeouts might survive past
the end of sc_main, especially if it never officially called sc_stop.
It's also possible for sc_main to return and never actually call
sc_start. In that case, the kernel should not call callbacks of the
various objects (which may no longer even exist), or go through the
initialization phase.

If sc_main is never called at all, then the kernel's actions aren't
gated.

Change-Id: I49bf094be3283a92d846d2f3da224950bd893a5c
Reviewed-on: https://gem5-review.googlesource.com/12249
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
src/systemc/core/kernel.cc
src/systemc/core/kernel.hh
src/systemc/core/sc_main.cc