diff options
Diffstat (limited to 'src/systemc')
-rw-r--r-- | src/systemc/core/process.hh | 5 | ||||
-rw-r--r-- | src/systemc/core/sc_module.cc | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/systemc/core/process.hh b/src/systemc/core/process.hh index 85a7a27a8..9bddbdd04 100644 --- a/src/systemc/core/process.hh +++ b/src/systemc/core/process.hh @@ -36,6 +36,7 @@ #include "base/fiber.hh" #include "systemc/core/list.hh" +#include "systemc/core/module.hh" #include "systemc/core/object.hh" #include "systemc/core/sched_event.hh" #include "systemc/core/sensitivity.hh" @@ -131,6 +132,8 @@ class Process : public ::sc_core::sc_process_b, public ListNode void waitCount(int count) { _waitCount = count; } + const char *uniqueName(const char *seed) { return nameGen.gen(seed); } + protected: void timeout(); @@ -191,6 +194,8 @@ class Process : public ::sc_core::sc_process_b, public ListNode std::unique_ptr<::sc_core::sc_report> _lastReport; std::vector<::sc_core::sc_join *> joinWaiters; + + UniqueNameGen nameGen; }; } // namespace sc_gem5 diff --git a/src/systemc/core/sc_module.cc b/src/systemc/core/sc_module.cc index 1c3b54b98..fe4b5cdb6 100644 --- a/src/systemc/core/sc_module.cc +++ b/src/systemc/core/sc_module.cc @@ -799,8 +799,12 @@ const char * sc_gen_unique_name(const char *seed) { auto mod = sc_gem5::pickParentModule(); - return mod ? mod->uniqueName(seed) : - ::sc_gem5::nameGen.gen(seed); + if (mod) + return mod->uniqueName(seed); + sc_gem5::Process *p = sc_gem5::scheduler.current(); + if (p) + return p->uniqueName(seed); + return ::sc_gem5::nameGen.gen(seed); } bool |