30 #ifndef __SYSTEMC_CORE_PROCESS_HH__ 31 #define __SYSTEMC_CORE_PROCESS_HH__ 76 void scheduled(
bool new_val) { _scheduled = new_val; }
78 void forEachKid(
const std::function<
void(
Process *)> &work);
83 void suspend(
bool inc_kids);
84 void resume(
bool inc_kids);
86 void enable(
bool inc_kids);
88 void kill(
bool inc_kids);
89 void reset(
bool inc_kids);
95 void syncResetOn(
bool inc_kids);
96 void syncResetOff(
bool inc_kids);
98 void signalReset(
bool set,
bool sync);
113 void addReset(
Reset *);
117 void cancelTimeout();
131 bool internal() {
return _internal; }
133 bool inReset() {
return _syncReset || syncResetCount || asyncResetCount; }
142 const char *
uniqueName(
const char *seed) {
return nameGen.gen(seed); }
155 for (
auto s: staticSensitivities) {
212 _process(p), _signal(nullptr), _sync(s), _value(v)
220 if (_signal->_addReset(
this)) {
221 _process->addReset(
this);
222 if (_signal->read() == _value)
228 void update() { _process->signalReset(_signal->read() == _value, _sync); }
248 #endif //__SYSTEMC_CORE_PROCESS_HH__
std::unique_ptr<::sc_core::sc_report > _lastReport
const std::string & name()
void waitCount(int count)
InternalScEvent _resetEvent
std::vector<::sc_core::sc_join * > joinWaiters
Reset(Process *p, bool s, bool v)
void dontInitialize(bool di)
static Process * newest()
static Fiber * primaryFiber()
Get a pointer to the primary Fiber.
void newReset(const sc_core::sc_port_base *pb, Process *p, bool s, bool v)
DynamicSensitivity * dynamicSensitivity
const sc_core::sc_signal_in_if< bool > * _signal
void setStackSize(size_t size)
bool hasStaticSensitivities()
ProcessFuncWrapper * func
const sc_core::sc_signal_in_if< bool > * signal()
InternalScEvent _terminatedEvent
::sc_core::sc_event & resetEvent()
std::vector< Reset * > resets
::sc_core::sc_event & terminatedEvent()
ExceptionWrapperBase * excWrapper
const char * uniqueName(const char *seed)
This class represents a fiber, which is a light weight sort of thread which is cooperatively schedule...
StaticSensitivities staticSensitivities
void joinWait(::sc_core::sc_join *join)
void scheduled(bool new_val)
bool install(const sc_core::sc_signal_in_if< bool > *s)