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>
#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
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