|
gem5 [DEVELOP-FOR-25.0]
|
#include <scheduler.hh>
Classes | |
| class | TimeSlot |
Public Types | |
| enum | Status { StatusOther = 0 , StatusEvaluate , StatusUpdate , StatusDelta , StatusTiming , StatusPaused , StatusStopped } |
| typedef std::list< ScEvent * > | ScEvents |
| typedef std::list< TimeSlot * > | TimeSlots |
Private Types | |
| typedef const gem5::EventBase::Priority | Priority |
Private Member Functions | |
| void | schedule (gem5::Event *event, gem5::Tick tick) |
| void | schedule (gem5::Event *event) |
| void | deschedule (gem5::Event *event) |
| Process * | getNextReady () |
| void | runReady () |
| void | scheduleReadyEvent () |
| void | pause () |
| void | stop () |
| bool | starved () |
| void | scheduleStarvationEvent () |
| void | maxTickFunc () |
| void | timeAdvances () |
| void | scheduleTimeAdvancesEvent () |
| void | trace (bool delta) |
Static Private Attributes | |
| static Priority | DefaultPriority = gem5::EventBase::Default_Pri |
| static Priority | StopPriority = DefaultPriority - 1 |
| static Priority | PausePriority = DefaultPriority + 1 |
| static Priority | MaxTickPriority = DefaultPriority + 2 |
| static Priority | ReadyPriority = DefaultPriority + 3 |
| static Priority | StarvationPriority = ReadyPriority |
| static Priority | TimeAdvancesPriority = gem5::EventBase::Maximum_Pri |
Definition at line 147 of file scheduler.hh.
|
private |
Definition at line 423 of file scheduler.hh.
| typedef std::list<ScEvent *> sc_gem5::Scheduler::ScEvents |
Definition at line 150 of file scheduler.hh.
| typedef std::list<TimeSlot *> sc_gem5::Scheduler::TimeSlots |
Definition at line 175 of file scheduler.hh.
| Enumerator | |
|---|---|
| StatusOther | |
| StatusEvaluate | |
| StatusUpdate | |
| StatusDelta | |
| StatusTiming | |
| StatusPaused | |
| StatusStopped | |
Definition at line 367 of file scheduler.hh.
| sc_gem5::Scheduler::Scheduler | ( | ) |
Definition at line 46 of file scheduler.cc.
References _changeStamp, _current, _elaborationDone, _numCycles, _started, _status, _stopNow, _throwUp, eq, initDone, maxTick, maxTickEvent, MaxTickPriority, pauseEvent, PausePriority, readyEvent, ReadyPriority, runOnce, runToTime, starvationEvent, StarvationPriority, StatusOther, stopEvent, StopPriority, timeAdvancesEvent, and TimeAdvancesPriority.
Referenced by sc_gem5::Scheduler::TimeSlot::TimeSlot().
| sc_gem5::Scheduler::~Scheduler | ( | ) |
Definition at line 59 of file scheduler.cc.
References clear().
|
inline |
Definition at line 402 of file scheduler.hh.
References freeTimeSlots, and gem5::ArmISA::ts.
Referenced by schedule().
| void sc_gem5::Scheduler::asyncRequestUpdate | ( | Channel * | c | ) |
Definition at line 258 of file scheduler.cc.
References asyncListMutex, asyncUpdateList, c, and hasAsyncUpdate.
|
inline |
Definition at line 388 of file scheduler.hh.
References _changeStamp.
| void sc_gem5::Scheduler::clear | ( | ) |
Definition at line 67 of file scheduler.cc.
References c, deltas, deschedule(), initList, maxTickEvent, pauseEvent, readyEvent, readyListMethods, readyListThreads, starvationEvent, stopEvent, timeAdvancesEvent, timeSlots, and updateList.
Referenced by scheduleStop(), stop(), and ~Scheduler().
|
inline |
Definition at line 313 of file scheduler.hh.
References runToTime, scheduleStarvationEvent(), scheduleTimeAdvancesEvent(), starved(), timeSlots, and gem5::ArmISA::ts.
|
inline |
Definition at line 185 of file scheduler.hh.
References _current.
|
inline |
|
inlineprivate |
Definition at line 448 of file scheduler.hh.
References eq, gem5::MipsISA::event, eventsToSchedule, and initDone.
|
inline |
Definition at line 280 of file scheduler.hh.
References deltas, deschedule(), gem5::MipsISA::event, gem5::MipsISA::on, panic_if, timeSlots, and gem5::ArmISA::ts.
Referenced by clear(), deschedule(), scheduleReadyEvent(), scheduleStarvationEvent(), and start().
|
inline |
Definition at line 378 of file scheduler.hh.
References _elaborationDone.
|
inline |
Definition at line 379 of file scheduler.hh.
References _elaborationDone, and b.
|
inline |
Definition at line 243 of file scheduler.hh.
References eq.
Referenced by delayed(), maxTickFunc(), runReady(), schedule(), schedule(), start(), and timeToPending().
|
inlineprivate |
Definition at line 461 of file scheduler.hh.
References gem5::MipsISA::p, readyListMethods, and readyListThreads.
Referenced by runReady(), and yield().
|
inline |
Definition at line 385 of file scheduler.hh.
References status(), and StatusDelta.
|
inline |
Definition at line 383 of file scheduler.hh.
References status(), and StatusEvaluate.
Referenced by ready(), requestUpdate(), runNext(), and schedule().
| void sc_gem5::Scheduler::initPhase | ( | ) |
Definition at line 109 of file scheduler.cc.
References _started, eq, eventsToSchedule, initDone, initList, sc_gem5::kernel, runDelta(), runToTime, runUpdate(), sc_core::SC_ID_DISABLE_WILL_ORPHAN_PROCESS_, SC_REPORT_WARNING, sc_core::SC_RUNNING, scheduleStarvationEvent(), scheduleTimeAdvancesEvent(), starved(), status(), and StatusOther.
|
inline |
Definition at line 386 of file scheduler.hh.
References status(), and StatusTiming.
|
inline |
Definition at line 384 of file scheduler.hh.
References status(), and StatusUpdate.
Referenced by schedule().
|
inlineprivate |
Definition at line 499 of file scheduler.hh.
References _changeStamp, getCurTick(), lastReadyTick, and pause().
|
inline |
Definition at line 182 of file scheduler.hh.
|
inline |
Definition at line 184 of file scheduler.hh.
References _numCycles.
| void sc_gem5::Scheduler::oneCycle | ( | ) |
Definition at line 442 of file scheduler.cc.
References gem5::MaxTick, runOnce, scheduleReadyEvent(), and start().
|
private |
Definition at line 363 of file scheduler.cc.
References gem5::exitSimLoopNow(), fatal, sc_gem5::kernel, runOnce, sc_core::SC_PAUSED, sc_gem5::scMainFiber, status(), and StatusPaused.
Referenced by maxTickFunc().
|
inline |
Definition at line 381 of file scheduler.hh.
References status(), and StatusPaused.
|
inline |
Definition at line 331 of file scheduler.hh.
References deltas, readyListMethods, readyListThreads, and updateList.
Referenced by timeToPending().
|
inline |
| void sc_gem5::Scheduler::ready | ( | Process * | p | ) |
Definition at line 199 of file scheduler.cc.
References _stopNow, inEvaluate(), readyListMethods, readyListThreads, sc_core::SC_METHOD_PROC_, and scheduleReadyEvent().
Referenced by resume().
| void sc_gem5::Scheduler::reg | ( | Process * | p | ) |
Definition at line 146 of file scheduler.cc.
|
inline |
Definition at line 398 of file scheduler.hh.
References gem5::X86ISA::tf, and traceFiles.
|
inline |
Definition at line 417 of file scheduler.hh.
References freeTimeSlots, and gem5::ArmISA::ts.
| void sc_gem5::Scheduler::requestUpdate | ( | Channel * | c | ) |
Definition at line 250 of file scheduler.cc.
References c, inEvaluate(), scheduleReadyEvent(), and updateList.
| void sc_gem5::Scheduler::resume | ( | Process * | p | ) |
Definition at line 216 of file scheduler.cc.
| void sc_gem5::Scheduler::runDelta | ( | ) |
Definition at line 350 of file scheduler.cc.
References deltas, status(), StatusDelta, and throwUp().
Referenced by initPhase(), and runReady().
|
inline |
Definition at line 230 of file scheduler.hh.
References inEvaluate(), readyListMethods, and scheduleReadyEvent().
|
inline |
Definition at line 213 of file scheduler.hh.
References _current, readyListMethods, and yield().
|
private |
Definition at line 287 of file scheduler.cc.
References _changeStamp, _current, _numCycles, _stopNow, getCurTick(), getNextReady(), lastReadyTick, readyListMethods, readyListThreads, runDelta(), runOnce, runToTime, runUpdate(), schedulePause(), scheduleStarvationEvent(), scheduleTimeAdvancesEvent(), starved(), status(), StatusEvaluate, StatusOther, trace(), traceFiles, and yield().
| void sc_gem5::Scheduler::runUpdate | ( | ) |
Definition at line 326 of file scheduler.cc.
References asyncListMutex, asyncUpdateList, hasAsyncUpdate, sc_gem5::ListNode::popListNode(), status(), StatusUpdate, throwUp(), sc_gem5::Channel::update(), and updateList.
Referenced by initPhase(), and runReady().
|
inlineprivate |
Definition at line 445 of file scheduler.hh.
References gem5::MipsISA::event, getCurTick(), and schedule().
Referenced by schedule().
|
inlineprivate |
Definition at line 437 of file scheduler.hh.
References eq, gem5::MipsISA::event, eventsToSchedule, and initDone.
|
inline |
Definition at line 253 of file scheduler.hh.
References acquireTimeSlot(), delayed(), deltas, getCurTick(), inEvaluate(), inUpdate(), schedule(), scheduleReadyEvent(), and timeSlots.
Referenced by schedule(), schedulePause(), scheduleReadyEvent(), scheduleStarvationEvent(), scheduleStop(), scheduleTimeAdvancesEvent(), and start().
| void sc_gem5::Scheduler::schedulePause | ( | ) |
Definition at line 450 of file scheduler.cc.
References pauseEvent, and schedule().
Referenced by runReady().
|
private |
Definition at line 266 of file scheduler.cc.
References deschedule(), readyEvent, schedule(), and starvationEvent.
Referenced by oneCycle(), ready(), requestUpdate(), runNext(), and schedule().
|
private |
Definition at line 277 of file scheduler.cc.
References deschedule(), readyEvent, schedule(), and starvationEvent.
Referenced by completeTimeSlot(), initPhase(), runReady(), and start().
| void sc_gem5::Scheduler::scheduleStop | ( | bool | finish_delta | ) |
Definition at line 473 of file scheduler.cc.
References _stopNow, clear(), schedule(), and stopEvent.
|
inlineprivate |
Definition at line 510 of file scheduler.hh.
References schedule(), timeAdvancesEvent, and traceFiles.
Referenced by completeTimeSlot(), initPhase(), runReady(), and start().
|
inline |
Definition at line 240 of file scheduler.hh.
References eq.
| void sc_gem5::Scheduler::start | ( | gem5::Tick | max_tick, |
| bool | run_to_time ) |
Definition at line 404 of file scheduler.cc.
References _started, _throwUp, deschedule(), getCurTick(), initDone, sc_gem5::kernel, lastReadyTick, maxTick, maxTickEvent, pauseEvent, gem5::Fiber::primaryFiber(), gem5::Fiber::run(), runToTime, sc_core::SC_RUNNING, schedule(), scheduleStarvationEvent(), scheduleTimeAdvancesEvent(), starvationEvent, starved(), status(), StatusOther, and stopEvent.
Referenced by oneCycle().
|
inlineprivate |
Definition at line 479 of file scheduler.hh.
References deltas, initList, maxTick, readyListMethods, readyListThreads, timeSlots, and updateList.
Referenced by completeTimeSlot(), initPhase(), runReady(), and start().
|
inline |
Definition at line 395 of file scheduler.hh.
References _status.
Referenced by inDelta(), inEvaluate(), initPhase(), inTiming(), inUpdate(), pause(), paused(), runDelta(), runReady(), runUpdate(), start(), stop(), stopped(), and throwUp().
|
inline |
Definition at line 396 of file scheduler.hh.
References _status, and gem5::ArmISA::s.
|
inline |
Definition at line 389 of file scheduler.hh.
References _changeStamp.
|
private |
Definition at line 382 of file scheduler.cc.
References clear(), gem5::exitSimLoopNow(), fatal, sc_gem5::kernel, runOnce, sc_gem5::scMainFiber, status(), and StatusStopped.
|
inline |
Definition at line 382 of file scheduler.hh.
References status(), and StatusStopped.
| bool sc_gem5::Scheduler::suspend | ( | Process * | p | ) |
Definition at line 235 of file scheduler.cc.
References initDone.
| void sc_gem5::Scheduler::throwUp | ( | ) |
Definition at line 459 of file scheduler.cc.
References _throwUp, sc_core::sc_report_handler::get_catch_actions(), sc_gem5::reportHandlerProc, sc_gem5::reportifyException(), sc_gem5::scMainFiber, status(), and StatusOther.
Referenced by runDelta(), runUpdate(), and yield().
|
inlineprivate |
Definition at line 507 of file scheduler.hh.
References trace().
|
inline |
Definition at line 346 of file scheduler.hh.
References getCurTick(), gem5::MaxTick, pendingCurr(), pendingFuture(), and timeSlots.
|
private |
Definition at line 488 of file scheduler.cc.
References gem5::X86ISA::tf, and traceFiles.
Referenced by runReady(), and timeAdvances().
|
inline |
Definition at line 399 of file scheduler.hh.
References gem5::X86ISA::tf, and traceFiles.
| void sc_gem5::Scheduler::yield | ( | ) |
Definition at line 160 of file scheduler.cc.
References _current, getNextReady(), gem5::Fiber::primaryFiber(), gem5::Fiber::run(), and throwUp().
Referenced by runNow(), and runReady().
|
private |
Definition at line 517 of file scheduler.hh.
Referenced by changeStamp(), maxTickFunc(), runReady(), Scheduler(), and stepChangeStamp().
|
private |
Definition at line 519 of file scheduler.hh.
Referenced by current(), runNow(), runReady(), Scheduler(), and yield().
|
private |
Definition at line 490 of file scheduler.hh.
Referenced by elaborationDone(), elaborationDone(), and Scheduler().
|
private |
Definition at line 516 of file scheduler.hh.
Referenced by numCycles(), runReady(), and Scheduler().
|
private |
Definition at line 491 of file scheduler.hh.
Referenced by initPhase(), Scheduler(), and start().
|
private |
Definition at line 494 of file scheduler.hh.
Referenced by Scheduler(), status(), and status().
|
private |
Definition at line 492 of file scheduler.hh.
Referenced by ready(), runReady(), Scheduler(), and scheduleStop().
|
private |
Definition at line 476 of file scheduler.hh.
Referenced by Scheduler(), start(), and throwUp().
|
private |
Definition at line 533 of file scheduler.hh.
Referenced by asyncRequestUpdate(), and runUpdate().
|
private |
Definition at line 532 of file scheduler.hh.
Referenced by asyncRequestUpdate(), and runUpdate().
|
staticprivate |
Definition at line 424 of file scheduler.hh.
|
private |
Definition at line 456 of file scheduler.hh.
Referenced by clear(), deschedule(), pendingCurr(), runDelta(), schedule(), and starved().
|
private |
Definition at line 433 of file scheduler.hh.
Referenced by deschedule(), getCurTick(), initPhase(), schedule(), Scheduler(), and setEventQueue().
|
private |
Definition at line 536 of file scheduler.hh.
Referenced by deschedule(), initPhase(), and schedule().
|
private |
Definition at line 458 of file scheduler.hh.
Referenced by acquireTimeSlot(), and releaseTimeSlot().
|
private |
Definition at line 534 of file scheduler.hh.
Referenced by asyncRequestUpdate(), and runUpdate().
|
private |
Definition at line 521 of file scheduler.hh.
Referenced by deschedule(), initPhase(), reg(), resume(), schedule(), Scheduler(), start(), and suspend().
|
private |
Definition at line 525 of file scheduler.hh.
Referenced by clear(), initPhase(), reg(), resume(), and starved().
|
private |
Definition at line 497 of file scheduler.hh.
Referenced by maxTickFunc(), runReady(), and start().
|
private |
Definition at line 496 of file scheduler.hh.
Referenced by Scheduler(), start(), and starved().
|
private |
Definition at line 505 of file scheduler.hh.
Referenced by clear(), Scheduler(), and start().
|
staticprivate |
Definition at line 428 of file scheduler.hh.
Referenced by Scheduler().
|
private |
Definition at line 473 of file scheduler.hh.
Referenced by clear(), schedulePause(), Scheduler(), and start().
|
staticprivate |
Definition at line 427 of file scheduler.hh.
Referenced by Scheduler().
|
private |
Definition at line 468 of file scheduler.hh.
Referenced by clear(), Scheduler(), scheduleReadyEvent(), and scheduleStarvationEvent().
|
private |
Definition at line 527 of file scheduler.hh.
Referenced by clear(), getNextReady(), pendingCurr(), ready(), runNext(), runNow(), runReady(), and starved().
|
private |
Definition at line 528 of file scheduler.hh.
Referenced by clear(), getNextReady(), pendingCurr(), ready(), runReady(), and starved().
|
staticprivate |
Definition at line 429 of file scheduler.hh.
Referenced by Scheduler().
|
private |
Definition at line 523 of file scheduler.hh.
Referenced by oneCycle(), pause(), runReady(), Scheduler(), and stop().
|
private |
Definition at line 522 of file scheduler.hh.
Referenced by completeTimeSlot(), initPhase(), runReady(), Scheduler(), and start().
|
private |
Definition at line 487 of file scheduler.hh.
Referenced by clear(), Scheduler(), scheduleReadyEvent(), scheduleStarvationEvent(), and start().
|
staticprivate |
Definition at line 430 of file scheduler.hh.
Referenced by Scheduler().
|
private |
Definition at line 474 of file scheduler.hh.
Referenced by clear(), Scheduler(), scheduleStop(), and start().
|
staticprivate |
Definition at line 426 of file scheduler.hh.
Referenced by Scheduler().
|
private |
Definition at line 508 of file scheduler.hh.
Referenced by clear(), Scheduler(), and scheduleTimeAdvancesEvent().
|
staticprivate |
Definition at line 431 of file scheduler.hh.
Referenced by Scheduler().
|
private |
Definition at line 457 of file scheduler.hh.
Referenced by clear(), completeTimeSlot(), deschedule(), pendingFuture(), schedule(), starved(), and timeToPending().
|
private |
Definition at line 538 of file scheduler.hh.
Referenced by registerTraceFile(), runReady(), scheduleTimeAdvancesEvent(), trace(), and unregisterTraceFile().
|
private |
Definition at line 530 of file scheduler.hh.
Referenced by clear(), pendingCurr(), requestUpdate(), runUpdate(), and starved().