30#ifndef __SIM_GLOBAL_EVENT_HH__
31#define __SIM_GLOBAL_EVENT_HH__
155template <
class Derived>
Funky intermediate class to support CRTP so that we can have a common constructor to create the local...
BaseGlobalEventTemplate(Priority p, Flags f)
virtual ~BaseGlobalEventTemplate()
The base class for the local events that will synchronize threads to perform the global event.
virtual BaseGlobalEvent * globalEvent()
If this is part of a GlobalEvent, return the pointer to the Global Event.
BarrierEvent(BaseGlobalEvent *global_event, Priority p, Flags f)
BaseGlobalEvent * _globalEvent
Common base class for GlobalEvent and GlobalSyncEvent.
virtual ~BaseGlobalEvent()
BaseGlobalEvent(Priority p, Flags f)
static std::mutex globalQMutex
Mutex variable for providing exculsive right to schedule global events.
Barrier barrier
The barrier that all threads wait on before performing the global event.
virtual const char * description() const =0
std::vector< BarrierEvent * > barrierEvent
The individual local event instances (one per thread/event queue).
void reschedule(Tick when)
Common base class for Event and GlobalEvent, so they can share flag and priority definitions and acce...
void release()
Managed event removed from the event queue.
BarrierEvent(Base *global_event, Priority p, Flags f)
The main global event class.
GlobalEvent(Tick when, Priority p, Flags f)
GlobalEvent(Priority p, Flags f)
BaseGlobalEventTemplate< GlobalEvent > Base
BarrierEvent(Base *global_event, Priority p, Flags f)
A special global event that synchronizes all threads and forces them to process asynchronously enqueu...
virtual ~GlobalSyncEvent()
const char * description() const
GlobalSyncEvent(Priority p, Flags f)
GlobalSyncEvent(Tick when, Tick _repeat, Priority p, Flags f)
BaseGlobalEventTemplate< GlobalSyncEvent > Base
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Tick
Tick count type.
uint32_t numMainEventQueues
Current number of allocated main event queues.
EventQueue * curEventQueue()