diff options
author | Gabe Black <gabeblack@google.com> | 2018-10-06 19:00:56 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-10-16 01:05:58 +0000 |
commit | 7eb6ad4aaa3afb8a5625a4515cbcfd141d5ce45b (patch) | |
tree | 52fe361cfd38edf1ba205f0aaf6da2f5c63f9357 /src/systemc/core | |
parent | 7a2ace7c5da5935eef2cf32527df954547de2d8b (diff) | |
download | gem5-7eb6ad4aaa3afb8a5625a4515cbcfd141d5ce45b.tar.xz |
systemc: Refactor reporting to prep for int based messages.
There's a deprecated reporting mechanism based on integer message ids,
and the reporting mechanism needs to be refactored a bit to make it
easier to support.
Some bookkeeping data structures were moved out to somewhere they
can be accessed by other code, obviating the non-standard get_handler
function.
Change-Id: Id427cd79be9ef0f3275fbac39ff047ab672fb3e0
Reviewed-on: https://gem5-review.googlesource.com/c/13318
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc/core')
-rw-r--r-- | src/systemc/core/sc_main.cc | 5 | ||||
-rw-r--r-- | src/systemc/core/scheduler.cc | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/systemc/core/sc_main.cc b/src/systemc/core/sc_main.cc index 12e129ad3..95e955002 100644 --- a/src/systemc/core/sc_main.cc +++ b/src/systemc/core/sc_main.cc @@ -41,6 +41,7 @@ #include "systemc/core/scheduler.hh" #include "systemc/ext/core/sc_main.hh" #include "systemc/ext/utils/sc_report_handler.hh" +#include "systemc/utils/report.hh" // A weak symbol to detect if sc_main has been defined, and if so where it is. [[gnu::weak]] int sc_main(int argc, char *argv[]); @@ -79,12 +80,12 @@ class ScMainFiber : public Fiber } catch (const sc_report &r) { // There was an exception nobody caught. resultStr = "uncaught sc_report"; - sc_report_handler::get_handler()( + sc_gem5::reportHandlerProc( r, sc_report_handler::get_catch_actions()); } catch (...) { // There was some other type of exception we need to wrap. resultStr = "uncaught exception"; - sc_report_handler::get_handler()( + sc_gem5::reportHandlerProc( ::sc_gem5::reportifyException(), sc_report_handler::get_catch_actions()); } diff --git a/src/systemc/core/scheduler.cc b/src/systemc/core/scheduler.cc index e0a270d4f..969e40155 100644 --- a/src/systemc/core/scheduler.cc +++ b/src/systemc/core/scheduler.cc @@ -36,6 +36,7 @@ #include "systemc/ext/core/sc_main.hh" #include "systemc/ext/utils/sc_report.hh" #include "systemc/ext/utils/sc_report_handler.hh" +#include "systemc/utils/report.hh" #include "systemc/utils/tracefile.hh" namespace sc_gem5 @@ -469,8 +470,7 @@ throwingReportHandler(const ::sc_core::sc_report &r, const ::sc_core::sc_report reportifyException() { - ::sc_core::sc_report_handler_proc old_handler = - ::sc_core::sc_report_handler::get_handler(); + ::sc_core::sc_report_handler_proc old_handler = reportHandlerProc; ::sc_core::sc_report_handler::set_handler(&throwingReportHandler); try { |