119 std::string message(
"attempt to disable a thread with timeout wait: ");
270 std::cout <<
"Terminating process " <<
name() << std::endl;
271 }
catch(const ::sc_core::sc_unwind_exception &exc) {
272 reset = exc.is_reset();
369 _lastReport = std::unique_ptr<::sc_core::sc_report>(
370 new ::sc_core::sc_report(*report));
379 ::
sc_core::sc_process_b(
name), excWrapper(nullptr),
380 timeoutEvent([this]() { this->
timeout(); }),
381 func(func), _internal(internal), _timedOut(
false), _dontInitialize(
false),
382 _needsStart(
true), _isUnwinding(
false), _terminated(
false),
383 _scheduled(
false), _suspended(
false), _disabled(
false),
384 _syncReset(
false), syncResetCount(0), asyncResetCount(0), _waitCount(0),
386 dynamicSensitivity(
nullptr)
421 p->throw_it(exc, inc_kids);
435 if (!reset->install(sig))
const char * name() const
virtual const std::vector< sc_object * > & get_child_objects() const
void addReset(Reset *reset)
static Port * fromPort(const ::sc_core::sc_port_base *pb)
virtual::sc_core::sc_curr_proc_kind procKind() const =0
void suspend(bool inc_kids)
void forEachKid(const std::function< void(Process *)> &work)
DynamicSensitivity * dynamicSensitivity
void resume(bool inc_kids)
void disable(bool inc_kids)
std::unique_ptr<::sc_core::sc_report > _lastReport
void syncResetOn(bool inc_kids)
std::vector<::sc_core::sc_join * > joinWaiters
void satisfySensitivity(Sensitivity *)
::sc_core::sc_report * lastReport() const
std::vector< Reset * > resets
void signalReset(bool set, bool sync)
void waitCount(int count)
StaticSensitivities staticSensitivities
InternalScEvent _resetEvent
void setTimeout(::sc_core::sc_time t)
InternalScEvent _terminatedEvent
ProcessFuncWrapper * func
void setDynamic(DynamicSensitivity *)
void addStatic(StaticSensitivity *)
Process(const char *name, ProcessFuncWrapper *func, bool internal=false)
void reset(bool inc_kids)
void throw_it(ExceptionWrapperBase &exc, bool inc_kids)
ExceptionWrapperBase * excWrapper
void syncResetOff(bool inc_kids)
void injectException(ExceptionWrapperBase &exc)
void enable(bool inc_kids)
void deschedule(ScEvent *event)
void schedule(ScEvent *event, const ::sc_core::sc_time &delay)
static const size_t DefaultStackSize
const char SC_ID_THROW_IT_IGNORED_[]
const char SC_ID_RESET_PROCESS_WHILE_NOT_RUNNING_[]
sc_status sc_get_status()
@ SC_BEFORE_END_OF_ELABORATION
const char SC_ID_PROCESS_CONTROL_CORNER_CASE_[]
const char SC_ID_THROW_IT_WHILE_NOT_RUNNING_[]
const char SC_ID_KILL_PROCESS_WHILE_UNITIALIZED_[]
bool sc_allow_process_control_corners
BuiltinExceptionWrapper< UnwindExceptionReset > resetException
void newReset(const sc_core::sc_port_base *pb, Process *p, bool s, bool v)
void throw_it_wrapper(Process *p, ExceptionWrapperBase &exc, bool inc_kids)
BuiltinExceptionWrapper< UnwindExceptionKill > killException
#define SC_REPORT_WARNING(msg_type, msg)
#define SC_REPORT_ERROR(msg_type, msg)
const std::string & name()