systemc: sc_spawn can create static or dynamic processes.

Their status depends on when sc_spawn is run.

Change-Id: I826adf9d5c905687e705642130ca5ad725ce92af
Reviewed-on: https://gem5-review.googlesource.com/c/12441
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
Gabe Black
2018-08-28 23:32:50 -07:00
parent b6ad37a88e
commit e1cf6b3e47

View File

@@ -31,6 +31,7 @@
#include "systemc/core/process.hh"
#include "systemc/core/process_types.hh"
#include "systemc/core/scheduler.hh"
#include "systemc/ext/core/sc_main.hh"
#include "systemc/ext/core/sc_module.hh"
#include "systemc/ext/core/sc_spawn.hh"
@@ -59,11 +60,15 @@ spawnWork(ProcessFuncWrapper *func, const char *name,
name = ::sc_core::sc_gen_unique_name("thread_p");
}
bool dynamic =
(::sc_core::sc_get_status() >
::sc_core::SC_BEFORE_END_OF_ELABORATION);
Process *proc;
if (method)
proc = new Method(name, func, true);
proc = new Method(name, func, dynamic);
else
proc = new Thread(name, func, true);
proc = new Thread(name, func, dynamic);
if (opts) {
for (auto e: opts->_events)