gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes
global_event.hh File Reference

Global events and related declarations. More...

#include <mutex>
#include <vector>
#include "base/barrier.hh"
#include "sim/eventq_impl.hh"

Go to the source code of this file.

Classes

class  BaseGlobalEvent
 Common base class for GlobalEvent and GlobalSyncEvent. More...
 
class  BaseGlobalEvent::BarrierEvent
 The base class for the local events that will synchronize threads to perform the global event. More...
 
class  BaseGlobalEventTemplate< Derived >
 Funky intermediate class to support CRTP so that we can have a common constructor to create the local events, even though the types of the local events are defined in the derived classes. More...
 
class  GlobalEvent
 The main global event class. More...
 
class  GlobalEvent::BarrierEvent
 
class  GlobalSyncEvent
 A special global event that synchronizes all threads and forces them to process asynchronously enqueued events. More...
 
class  GlobalSyncEvent::BarrierEvent
 

Detailed Description

Global events and related declarations.

A global event is an event that occurs across all threads, i.e., globally. It consists of a set of "local" (regular) Events, one per thread/event queue, a barrier object, and common state. The local events are scheduled for the same tick. The local event process() method enters the barrier to wait for other threads; once all threads reach that tick (and enter the associated barrier), the global event is triggered and its associated activity is performed.

There are two basic global event patterns, GlobalEvent and GlobalSyncEvent. GlobalEvent is the base class for typical global events, while GlobalSyncEvent is optimized for global synchronization operations.

Definition in file global_event.hh.


Generated on Fri Jun 9 2017 13:03:59 for gem5 by doxygen 1.8.6