summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2018-07-16 20:23:21 -0700
committerGabe Black <gabeblack@google.com>2018-09-05 06:07:32 +0000
commit746c1eaa72dbce46899459f988336485190897c2 (patch)
tree8a34b6de21bb90726863268f26f56590ce4de7b0
parente02b2a3d3b0d2d56e7a968269da022cbe68f7ca2 (diff)
downloadgem5-746c1eaa72dbce46899459f988336485190897c2.tar.xz
systemc: Implement sc_get_current_process_handle's other personality.
When run during simulation, sc_get_current_process_handle returns a handle for the currently running process or a invalid handle if no process is running (ie sc_main is running). When run during elaboration, it returns a handle to the most recently created process. This second context is what this change handles. Change-Id: I3fb247b9b7bf83891c782966cfef474753159158 Reviewed-on: https://gem5-review.googlesource.com/12030 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
-rw-r--r--src/systemc/core/sc_process_handle.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/systemc/core/sc_process_handle.cc b/src/systemc/core/sc_process_handle.cc
index c4014b747..e0f6a8186 100644
--- a/src/systemc/core/sc_process_handle.cc
+++ b/src/systemc/core/sc_process_handle.cc
@@ -30,6 +30,7 @@
#include "base/logging.hh"
#include "systemc/core/process.hh"
#include "systemc/core/scheduler.hh"
+#include "systemc/ext/core/sc_main.hh"
#include "systemc/ext/core/sc_process_handle.hh"
namespace sc_core
@@ -292,7 +293,10 @@ sc_process_handle::sync_reset_off(
sc_process_handle
sc_get_current_process_handle()
{
- return sc_process_handle(::sc_gem5::scheduler.current());
+ if (sc_is_running())
+ return sc_process_handle(::sc_gem5::scheduler.current());
+ else
+ return sc_process_handle(::sc_gem5::Process::newest());
}
bool