systemc: Handle null and omitted event names.
authorGabe Black <gabeblack@google.com>
Thu, 23 Aug 2018 04:59:47 +0000 (21:59 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 25 Sep 2018 23:59:50 +0000 (23:59 +0000)
If the simulation isn't running, these should be replaced with versions
generated by sc_gen_unique_name().

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

src/systemc/core/event.cc

index 77e47fba68c9e933dbe17e3912b4f3dba9720a7e..4f3d4f9c1083579a807b9cf4ed64a626e0d02f41 100644 (file)
 #include "sim/core.hh"
 #include "systemc/core/module.hh"
 #include "systemc/core/scheduler.hh"
+#include "systemc/ext/core/sc_main.hh"
+#include "systemc/ext/core/sc_module.hh"
 
 namespace sc_gem5
 {
 
-Event::Event(sc_core::sc_event *_sc_event) : Event(_sc_event, "") {}
+Event::Event(sc_core::sc_event *_sc_event) : Event(_sc_event, nullptr) {}
 
-Event::Event(sc_core::sc_event *_sc_event, const char *_basename) :
-    _sc_event(_sc_event), _basename(_basename),
+Event::Event(sc_core::sc_event *_sc_event, const char *_basename_cstr) :
+    _sc_event(_sc_event), _basename(_basename_cstr ? _basename_cstr : ""),
     delayedNotify([this]() { this->notify(); })
 {
     Module *p = currentModule();
 
+    if (_basename == "" && ::sc_core::sc_is_running())
+        _basename = ::sc_core::sc_gen_unique_name("event");
+
     if (p)
         parent = p->obj()->sc_obj();
     else if (scheduler.current())