Go to the documentation of this file.
47 eq(nullptr), readyEvent(this, false, ReadyPriority),
48 pauseEvent(this, false, PausePriority),
49 stopEvent(this, false, StopPriority), _throwUp(nullptr),
50 starvationEvent(this, false, StarvationPriority),
51 _elaborationDone(false), _started(false), _stopNow(false),
52 _status(StatusOther), maxTick(::
MaxTick),
53 maxTickEvent(this, false, MaxTickPriority),
54 timeAdvancesEvent(this, false, TimeAdvancesPriority), _numCycles(0),
55 _changeStamp(0), _current(nullptr), initDone(false), runToTime(true),
71 deltas.front()->deschedule();
76 while (!
ts->events.empty())
77 ts->events.front()->deschedule();
117 if (
p->dontInitialize()) {
118 if (!
p->hasStaticSensitivities() && !
p->internal()) {
151 if (!
p->dontInitialize())
241 was_ready = (
p->nextListNode !=
nullptr);
372 fatal(
"Pausing systemc after sc_main completed.");
392 fatal(
"Stopping systemc after sc_main completed.");
430 const ::sc_core::sc_report *to_throw =
_throwUp;
495 throwingReportHandler(const ::sc_core::sc_report &
r,
503 const ::sc_core::sc_report
514 }
catch (const ::sc_core::sc_report &) {
517 }
catch (const ::sc_core::sc_unwind_exception &) {
518 panic(
"Kill/reset exception escaped a Process::run()");
519 }
catch (
const std::exception &
e) {
522 }
catch (
const char *msg) {
528 "UNKNOWN EXCEPTION");
530 }
catch (const ::sc_core::sc_report &
r) {
534 panic(
"No exception thrown in reportifyException.");
#define fatal(...)
This implements a cprintf based fatal() function.
EventWrapper< Scheduler, &Scheduler::runReady > readyEvent
const ::sc_core::sc_report reportifyException()
void scheduleTimeAdvancesEvent()
void scheduleStop(bool finish_delta)
void deschedule(ScEvent *event)
::sc_core::sc_event & resetEvent()
bool finished() const
Returns whether the "main" function of this fiber has finished.
void asyncRequestUpdate(Channel *c)
uint64_t Tick
Tick count type.
static scfx_rep_node * list
const ::sc_core::sc_report * _throwUp
void reset(bool inc_kids)
std::mutex asyncListMutex
EventWrapper< Scheduler, &Scheduler::maxTickFunc > maxTickEvent
void scheduleReadyEvent()
static Fiber * primaryFiber()
Get a pointer to the primary Fiber.
ExceptionWrapperBase * excWrapper
EventWrapper< Scheduler, &Scheduler::pause > pauseEvent
#define SC_REPORT_ERROR(msg_type, msg)
static sc_actions get_catch_actions()
sc_core::sc_report_handler_proc reportHandlerProc
Process * getCurrentProcess()
ProcessList readyListMethods
void run()
Start executing the fiber represented by this object.
void scheduleStarvationEvent()
EventWrapper< Scheduler, &Scheduler::stop > stopEvent
std::map<::Event *, Tick > eventsToSchedule
#define SC_REPORT_WARNING(msg_type, msg)
void schedule(Event *event, Tick when, bool global=false)
Schedule the given event on this queue.
const char SC_ID_DISABLE_WILL_ORPHAN_PROCESS_[]
void requestUpdate(Channel *c)
void(* sc_report_handler_proc)(const sc_report &, const sc_actions &)
bool listContains(ListNode *list, ListNode *target)
void exitSimLoopNow(const std::string &message, int exit_code, Tick repeat, bool serialize)
Schedule an event as above, but make it high priority so it runs before any normal events which are s...
static void set_handler(sc_report_handler_proc)
virtual void throw_it()=0
EventWrapper< Scheduler, &Scheduler::timeAdvances > timeAdvancesEvent
void start(Tick max_tick, bool run_to_time)
void schedule(ScEvent *event, const ::sc_core::sc_time &delay)
ChannelList asyncUpdateList
const char SC_ID_SIMULATION_UNCAUGHT_EXCEPTION_[]
static sc_core::sc_status status()
ProcessList readyListThreads
EventWrapper< Scheduler, &Scheduler::pause > starvationEvent
std::set< TraceFile * > traceFiles
#define panic(...)
This implements a cprintf based panic() function.
Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17