Go to the documentation of this file.
28 #ifndef __SYSTEMC_CORE_SCHEDULER_HH__
29 #define __SYSTEMC_CORE_SCHEDULER_HH__
167 const std::string
name()
const {
return "systemc_scheduler"; }
245 if (delay.value() == 0) {
246 event->schedule(
deltas, tick);
258 event->schedule(
ts->events, tick);
275 "Descheduling event at time with no events.");
278 assert(
on == &events);
282 if (events.empty()) {
337 void start(
Tick max_tick,
bool run_to_time);
492 void trace(
bool delta);
525 #endif // __SYSTEMC_CORE_SCHEDULER_H__
EventWrapper< Scheduler, &Scheduler::runReady > readyEvent
const ::sc_core::sc_report reportifyException()
static const FlagsType AutoDelete
Tick delayed(const ::sc_core::sc_time &delay)
static Priority DefaultPriority
void scheduleTimeAdvancesEvent()
void scheduleStop(bool finish_delta)
void deschedule(ScEvent *event)
static Priority ReadyPriority
static Priority MaxTickPriority
void asyncRequestUpdate(Channel *c)
void elaborationDone(bool b)
uint64_t Tick
Tick count type.
const typedef EventBase::Priority Priority
const ::sc_core::sc_report * _throwUp
std::mutex asyncListMutex
static Priority StarvationPriority
Tick getCurTick() const
While curTick() is useful for any object assigned to this event queue, if an object that is assigned ...
EventWrapper< Scheduler, &Scheduler::maxTickFunc > maxTickEvent
std::list< ScEvent * > ScEvents
void scheduleReadyEvent()
void deschedule(::Event *event)
EventWrapper< Scheduler, &Scheduler::pause > pauseEvent
This class represents a fiber, which is a light weight sort of thread which is cooperatively schedule...
std::map< Tick, TimeSlot * > TimeSlots
Process * getCurrentProcess()
void unregisterTraceFile(TraceFile *tf)
static const Priority Maximum_Pri
Maximum priority.
static Priority StopPriority
ProcessList readyListMethods
void schedule(::Event *event)
void scheduleStarvationEvent()
void schedule(::Event *event, Tick tick)
EventWrapper< Scheduler, &Scheduler::stop > stopEvent
std::map<::Event *, Tick > eventsToSchedule
void schedule(Event *event, Tick when, bool global=false)
Schedule the given event on this queue.
const std::string name() const
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
void requestUpdate(Channel *c)
NodeList< Channel > ChannelList
static Priority TimeAdvancesPriority
void deschedule(Event *event)
Deschedule the specified event.
static const Priority Default_Pri
Default is zero for historical reasons.
void setEventQueue(EventQueue *_eq)
EventWrapper< Scheduler, &Scheduler::timeAdvances > timeAdvancesEvent
void start(Tick max_tick, bool run_to_time)
void completeTimeSlot(TimeSlot *ts)
static Priority PausePriority
void schedule(ScEvent *event, const ::sc_core::sc_time &delay)
ChannelList asyncUpdateList
Queue of events sorted in time order.
void registerTraceFile(TraceFile *tf)
ProcessList readyListThreads
EventWrapper< Scheduler, &Scheduler::pause > starvationEvent
std::set< TraceFile * > traceFiles
NodeList< Process > ProcessList
Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17