48 const ::sc_core::sc_spawn_options *opts)
51 bool dontInitialize =
false;
53 if (opts->_spawnMethod)
55 if (opts->_dontInitialize)
56 dontInitialize =
true;
57 if (opts->_stackSize != -1)
58 warn(
"Ignoring request to set stack size.\n");
61 if (!name || name[0] ==
'\0') {
70 proc =
new Method(name, func);
72 proc =
new Thread(name, func);
77 for (
auto e: opts->_events)
80 for (
auto p: opts->_ports)
83 for (
auto e: opts->_exports)
86 for (
auto i: opts->_interfaces)
89 for (
auto f: opts->_finders)
92 for (
auto p: opts->_in_resets)
95 for (
auto p: opts->_inout_resets)
98 for (
auto p: opts->_out_resets)
101 for (
auto i: opts->_if_resets)
105 if (opts && opts->_dontInitialize &&
106 opts->_events.empty() && opts->_ports.empty() &&
107 opts->_exports.empty() && opts->_interfaces.empty() &&
108 opts->_finders.empty()) {
123 sc_spawn_options::sc_spawn_options() :
124 _spawnMethod(false), _dontInitialize(false), _stackSize(-1)
226 _if_resets.emplace_back(&iface, value,
false);
Process * spawnWork(ProcessFuncWrapper *func, const char *name, const ::sc_core::sc_spawn_options *opts)
std::vector< sc_interface * > _interfaces
const std::string & name()
std::vector< sc_port_base * > _ports
void newStaticSensitivityInterface(Process *p, const sc_core::sc_interface *i)
std::vector< Reset< const sc_out< bool > > > _out_resets
const char * sc_gen_unique_name(const char *seed)
std::vector< Reset< const sc_in< bool > > > _in_resets
std::vector< const sc_event * > _events
const char * name() const
void newStaticSensitivityExport(Process *p, const sc_core::sc_export_base *exp)
void reset_signal_is(const sc_in< bool > &, bool)
void newReset(const sc_core::sc_port_base *pb, Process *p, bool s, bool v)
#define SC_REPORT_WARNING(msg_type, msg)
void newStaticSensitivityPort(Process *p, const sc_core::sc_port_base *pb)
void newStaticSensitivityFinder(Process *p, const sc_core::sc_event_finder *f)
void newStaticSensitivityEvent(Process *p, const sc_core::sc_event *e)
void set_sensitivity(const sc_event *)
void async_reset_signal_is(const sc_in< bool > &, bool)
const char SC_ID_DISABLE_WILL_ORPHAN_PROCESS_[]
std::vector< sc_export_base * > _exports
std::vector< Reset< const sc_signal_in_if< bool > > > _if_resets
std::vector< Reset< const sc_inout< bool > > > _inout_resets
std::vector< sc_event_finder * > _finders