systemc: Handle null and omitted event names.

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>
This commit is contained in:
Gabe Black
2018-08-22 21:59:47 -07:00
parent 5a4407b3b6
commit 92d1d2c873

View File

@@ -37,18 +37,23 @@
#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())