summaryrefslogtreecommitdiff
path: root/src/systemc
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemc')
-rw-r--r--src/systemc/core/process.hh5
-rw-r--r--src/systemc/core/sc_module.cc8
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