diff options
author | Gabe Black <gabeblack@google.com> | 2018-07-26 15:15:20 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-09-11 21:49:30 +0000 |
commit | a2ab1052c91ad82fa0bb564cb39a8be6dc496120 (patch) | |
tree | 3d6426e79708618292e8da20248758449844c614 /src | |
parent | 6a198f29234a6a037f73cefd15f784bd18017d1a (diff) | |
download | gem5-a2ab1052c91ad82fa0bb564cb39a8be6dc496120.tar.xz |
systemc: Detect a process control corner case and report an error.
This error reporting results in an exception being thrown, and one (or
more) of the tests depend on that behavior.
Change-Id: I858aa14fbb80b0648392179a6a8d2055c91aedf8
Reviewed-on: https://gem5-review.googlesource.com/12050
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/systemc/core/process.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/systemc/core/process.cc b/src/systemc/core/process.cc index 6b4c42766..a54d5c24c 100644 --- a/src/systemc/core/process.cc +++ b/src/systemc/core/process.cc @@ -178,6 +178,14 @@ Process::disable(bool inc_kids) if (inc_kids) forEachKid([](Process *p) { p->disable(true); }); + if (!::sc_core::sc_allow_process_control_corners && + dynamic_cast<SensitivityTimeout *>(dynamicSensitivity)) { + std::string message("attempt to disable a thread with timeout wait: "); + message += name(); + SC_REPORT_ERROR("Undefined process control interaction", + message.c_str()); + } + _disabled = true; } |