gem5 v24.0.0.0
Loading...
Searching...
No Matches
gem5::GlobalSyncEvent Class Reference

A special global event that synchronizes all threads and forces them to process asynchronously enqueued events. More...

#include <global_event.hh>

Inheritance diagram for gem5::GlobalSyncEvent:
gem5::BaseGlobalEventTemplate< GlobalSyncEvent > gem5::BaseGlobalEvent gem5::EventBase gem5::DistIface::SyncEvent

Classes

class  BarrierEvent
 

Public Types

typedef BaseGlobalEventTemplate< GlobalSyncEventBase
 
- Public Types inherited from gem5::EventBase
typedef int8_t Priority
 

Public Member Functions

 GlobalSyncEvent (Priority p, Flags f)
 
 GlobalSyncEvent (Tick when, Tick _repeat, Priority p, Flags f)
 
virtual ~GlobalSyncEvent ()
 
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)
 

Public Attributes

Tick repeat
 

Additional Inherited Members

- 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.
 
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).
 
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.
 
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).
 
static const Priority Delayed_Writeback_Pri = -1
 For some reason "delayed" inter-cluster writebacks are scheduled before regular writebacks (which have default priority).
 
static const Priority Default_Pri = 0
 Default is zero for historical reasons.
 
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.
 
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.
 
static const Priority CPU_Tick_Pri = 50
 CPU ticks must come after other associated CPU events (such as writebacks).
 
static const Priority CPU_Exit_Pri = 64
 If we want to exit a thread in a CPU, it comes after CPU_Tick_Pri.
 
static const Priority Stat_Event_Pri = 90
 Statistics events (dump, reset, etc.) come after everything else, but before exit.
 
static const Priority Progress_Event_Pri = 95
 Progress events come at the end.
 
static const Priority Sim_Exit_Pri = 100
 If we want to exit on this cycle, it's the very last thing we do.
 
static const Priority Maximum_Pri = SCHAR_MAX
 Maximum priority.
 
- Protected Types inherited from gem5::EventBase
typedef unsigned short FlagsType
 
typedef ::gem5::Flags< FlagsTypeFlags
 
- Protected Member Functions inherited from gem5::BaseGlobalEventTemplate< GlobalSyncEvent >
 BaseGlobalEventTemplate (Priority p, Flags f)
 
virtual ~BaseGlobalEventTemplate ()
 
- Protected Attributes inherited from gem5::BaseGlobalEvent
Barrier barrier
 The barrier that all threads wait on before performing the global event.
 
std::vector< BarrierEvent * > barrierEvent
 The individual local event instances (one per thread/event queue).
 
- 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.
 
static const FlagsType IsExitEvent = 0x0010
 
static const FlagsType IsMainQueue = 0x0020
 
static const FlagsType Initialized = 0x7a40
 
static const FlagsType InitMask = 0xffc0
 

Detailed Description

A special global event that synchronizes all threads and forces them to process asynchronously enqueued events.

Useful for separating quanta in a quantum-based parallel simulation.

Definition at line 210 of file global_event.hh.

Member Typedef Documentation

◆ Base

Constructor & Destructor Documentation

◆ GlobalSyncEvent() [1/2]

gem5::GlobalSyncEvent::GlobalSyncEvent ( Priority p,
Flags f )
inline

Definition at line 224 of file global_event.hh.

◆ GlobalSyncEvent() [2/2]

gem5::GlobalSyncEvent::GlobalSyncEvent ( Tick when,
Tick _repeat,
Priority p,
Flags f )
inline

◆ ~GlobalSyncEvent()

virtual gem5::GlobalSyncEvent::~GlobalSyncEvent ( )
inlinevirtual

Definition at line 234 of file global_event.hh.

Member Function Documentation

◆ description()

const char * gem5::GlobalSyncEvent::description ( ) const
virtual

Implements gem5::BaseGlobalEvent.

Definition at line 166 of file global_event.cc.

◆ process()

void gem5::GlobalSyncEvent::process ( )
virtual

Implements gem5::BaseGlobalEvent.

Reimplemented in gem5::DistIface::SyncEvent.

Definition at line 158 of file global_event.cc.

References gem5::curTick(), and gem5::BaseGlobalEvent::schedule().

Member Data Documentation

◆ repeat

Tick gem5::GlobalSyncEvent::repeat

Definition at line 240 of file global_event.hh.

Referenced by gem5::DistIface::RecvScheduler::pushPacket().


The documentation for this class was generated from the following files:

Generated on Tue Jun 18 2024 16:24:11 for gem5 by doxygen 1.11.0