From: Gabe Black Date: Thu, 26 Jul 2018 22:15:20 +0000 (-0700) Subject: systemc: Detect a process control corner case and report an error. X-Git-Tag: v19.0.0.0~1820 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a2ab1052c91ad82fa0bb564cb39a8be6dc496120;p=gem5.git 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 Maintainer: Gabe Black --- 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(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; }