gem5
v20.1.0.0
|
The main global event class. More...
#include <global_event.hh>
Classes | |
class | BarrierEvent |
Public Types | |
typedef BaseGlobalEventTemplate< GlobalEvent > | Base |
Public Types inherited from EventBase | |
typedef int8_t | Priority |
Public Member Functions | |
GlobalEvent (Priority p, Flags f) | |
GlobalEvent (Tick when, Priority p, Flags f) | |
virtual void | process ()=0 |
Public Member Functions inherited from BaseGlobalEvent | |
BaseGlobalEvent (Priority p, Flags f) | |
virtual | ~BaseGlobalEvent () |
virtual const char * | description () const =0 |
void | schedule (Tick when) |
bool | scheduled () const |
Tick | when () const |
void | deschedule () |
void | reschedule (Tick when) |
Additional Inherited Members | |
Static Public Attributes inherited from 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 EventBase | |
typedef unsigned short | FlagsType |
typedef ::Flags< FlagsType > | Flags |
Protected Member Functions inherited from BaseGlobalEventTemplate< GlobalEvent > | |
BaseGlobalEventTemplate (Priority p, Flags f) | |
Protected Attributes inherited from 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 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 main global event class.
Ordinary global events should derive from this class, and define process() to specify the action to be taken when the event is reached. All threads will synchronize at a barrier, exactly one of the threads will execute the process() method, then the threads will synchronize again so that none of them continue until process() is complete.
Definition at line 173 of file global_event.hh.
Definition at line 176 of file global_event.hh.
Definition at line 187 of file global_event.hh.
Definition at line 191 of file global_event.hh.
References BaseGlobalEvent::schedule(), and BaseGlobalEvent::when().
|
pure virtual |
Implements BaseGlobalEvent.
Implemented in Stats::StatEvent, GlobalSimLoopExitEvent, and DebugBreakEvent.