|
gem5
v22.0.0.2
|
The global event to schedule periodic dist sync. More...
Public Member Functions | |
| SyncEvent () | |
| Only the firstly instantiated DistIface object will call this constructor. More... | |
| ~SyncEvent () | |
| void | start () |
| Schedule the first periodic sync event. More... | |
| void | process () override |
| This is a global event so process() will only be called by exactly one simulation thread. More... | |
| bool | draining () const |
| void | draining (bool fl) |
Public Member Functions inherited from gem5::GlobalSyncEvent | |
| GlobalSyncEvent (Priority p, Flags f) | |
| GlobalSyncEvent (Tick when, Tick _repeat, Priority p, Flags f) | |
| void | process () |
| const char * | description () const |
Public Member Functions inherited from gem5::BaseGlobalEvent | |
| BaseGlobalEvent (Priority p, Flags f) | |
| virtual | ~BaseGlobalEvent () |
| void | schedule (Tick when) |
| bool | scheduled () const |
| Tick | when () const |
| void | deschedule () |
| void | reschedule (Tick when) |
Private Attributes | |
| bool | _draining |
| Flag to set when the system is draining. More... | |
Additional Inherited Members | |
Public Types inherited from gem5::GlobalSyncEvent | |
| typedef BaseGlobalEventTemplate< GlobalSyncEvent > | Base |
Public Types inherited from gem5::EventBase | |
| typedef int8_t | Priority |
Public Attributes inherited from gem5::GlobalSyncEvent | |
| Tick | repeat |
Static Public Attributes inherited from gem5::EventBase | |
| static const Priority | Minimum_Pri = SCHAR_MIN |
| Event priorities, to provide tie-breakers for events scheduled at the same cycle. More... | |
| static const Priority | Debug_Enable_Pri = -101 |
| If we enable tracing on a particular cycle, do that as the very first thing so we don't miss any of the events on that cycle (even if we enter the debugger). More... | |
| static const Priority | Debug_Break_Pri = -100 |
| Breakpoints should happen before anything else (except enabling trace output), so we don't miss any action when debugging. More... | |
| static const Priority | CPU_Switch_Pri = -31 |
| CPU switches schedule the new CPU's tick event for the same cycle (after unscheduling the old CPU's tick event). More... | |
| static const Priority | Delayed_Writeback_Pri = -1 |
| For some reason "delayed" inter-cluster writebacks are scheduled before regular writebacks (which have default priority). More... | |
| static const Priority | Default_Pri = 0 |
| Default is zero for historical reasons. More... | |
| static const Priority | DVFS_Update_Pri = 31 |
| DVFS update event leads to stats dump therefore given a lower priority to ensure all relevant states have been updated. More... | |
| static const Priority | Serialize_Pri = 32 |
| Serailization needs to occur before tick events also, so that a serialize/unserialize is identical to an on-line CPU switch. More... | |
| static const Priority | CPU_Tick_Pri = 50 |
| CPU ticks must come after other associated CPU events (such as writebacks). More... | |
| static const Priority | CPU_Exit_Pri = 64 |
| If we want to exit a thread in a CPU, it comes after CPU_Tick_Pri. More... | |
| static const Priority | Stat_Event_Pri = 90 |
| Statistics events (dump, reset, etc.) come after everything else, but before exit. More... | |
| static const Priority | Progress_Event_Pri = 95 |
| Progress events come at the end. More... | |
| static const Priority | Sim_Exit_Pri = 100 |
| If we want to exit on this cycle, it's the very last thing we do. More... | |
| static const Priority | Maximum_Pri = SCHAR_MAX |
| Maximum priority. More... | |
Protected Types inherited from gem5::EventBase | |
| typedef unsigned short | FlagsType |
| typedef ::gem5::Flags< FlagsType > | Flags |
Protected Member Functions inherited from gem5::BaseGlobalEventTemplate< GlobalSyncEvent > | |
| BaseGlobalEventTemplate (Priority p, Flags f) | |
Protected Attributes inherited from gem5::BaseGlobalEvent | |
| Barrier | barrier |
| The barrier that all threads wait on before performing the global event. More... | |
| std::vector< BarrierEvent * > | barrierEvent |
| The individual local event instances (one per thread/event queue). More... | |
Static Protected Attributes inherited from gem5::EventBase | |
| static const FlagsType | PublicRead = 0x003f |
| static const FlagsType | PublicWrite = 0x001d |
| static const FlagsType | Squashed = 0x0001 |
| static const FlagsType | Scheduled = 0x0002 |
| static const FlagsType | Managed = 0x0004 |
| static const FlagsType | AutoDelete = Managed |
| static const FlagsType | Reserved0 = 0x0008 |
| This used to be AutoSerialize. More... | |
| static const FlagsType | IsExitEvent = 0x0010 |
| static const FlagsType | IsMainQueue = 0x0020 |
| static const FlagsType | Initialized = 0x7a40 |
| static const FlagsType | InitMask = 0xffc0 |
The global event to schedule periodic dist sync.
It is used as a singleton object.
The periodic synchronisation works as follows.
Definition at line 297 of file dist_iface.hh.
|
inline |
Only the firstly instantiated DistIface object will call this constructor.
Definition at line 309 of file dist_iface.hh.
|
inline |
Definition at line 311 of file dist_iface.hh.
|
inline |
Definition at line 323 of file dist_iface.hh.
References _draining.
Referenced by gem5::DistIface::drain(), and gem5::DistIface::drainResume().
|
inline |
Definition at line 324 of file dist_iface.hh.
References _draining.
|
overridevirtual |
This is a global event so process() will only be called by exactly one simulation thread.
(See further comments in the .cc file.)
Implements gem5::BaseGlobalEvent.
Definition at line 368 of file dist_iface.cc.
References gem5::curEventQueue(), gem5::curTick(), gem5::DistIface::Sync::doStopSync, gem5::exitSimLoop(), inform, gem5::DistIface::isSwitch, gem5::DistIface::Sync::nextRepeat, panic_if, gem5::DistIface::primary, gem5::MipsISA::sr, gem5::ThreadContext::Suspended, gem5::DistIface::sync, gem5::DistIface::sys, gem5::System::threads, and warn_once.
| void gem5::DistIface::SyncEvent::start | ( | ) |
Schedule the first periodic sync event.
Definition at line 334 of file dist_iface.cc.
References gem5::curTick(), inform, gem5::DistIface::Sync::nextRepeat, panic, and gem5::DistIface::sync.
Referenced by gem5::DistIface::readyToExit(), gem5::DistIface::startup(), and gem5::DistIface::toggleSync().
|
private |
Flag to set when the system is draining.
Definition at line 303 of file dist_iface.hh.
Referenced by draining().