Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
Realm::CompQueueImpl Class Reference

#include <comp_queue_impl.h>

Collaboration diagram for Realm::CompQueueImpl:

Classes

class  CompQueueWaiter
 
class  CompQueueWaiterBatch
 
class  DeferredDestroy
 
class  RemotePopRequest
 

Public Member Functions

 CompQueueImpl ()=default
 
 ~CompQueueImpl ()
 
void init (ID _me, int _owner)
 
void set_capacity (size_t _max_size, bool _resizable)
 
size_t get_capacity () const
 
size_t get_pending_events () const
 
void destroy (void)
 
void add_event (Event event, bool faultaware)
 
void add_event (Event event, EventImpl *ev_impl, bool faultaware)
 
Event get_local_progress_event (void)
 
void add_remote_progress_event (Event event)
 
size_t pop_events (Event *events, size_t max_to_pop)
 

Static Public Member Functions

static ID make_id (const CompQueueImpl &dummy, int owner, ID::IDType index)
 

Public Attributes

CompletionQueue me
 
int owner
 
CompQueueImplnext_free
 
DeferredDestroy deferred_destroy
 

Protected Member Functions

void add_completed_event (Event event, CompQueueWaiter *waiter, TimeLimit work_until)
 

Protected Attributes

Mutex mutex
 
bool resizable = false
 
size_t max_events = 0
 
atomic< size_t > wr_ptr = atomic<size_t>(0)
 
atomic< size_t > rd_ptr = atomic<size_t>(0)
 
atomic< size_t > pending_events = atomic<size_t>(0)
 
atomic< size_t > commit_ptr = atomic<size_t>(0)
 
atomic< size_t > consume_ptr = atomic<size_t>(0)
 
size_t cur_events = 0
 
std::unique_ptr< Event[]> completed_events = nullptr
 
atomic< bool > has_progress_events = atomic<bool>(0)
 
GenEventImpllocal_progress_event = nullptr
 
EventImpl::gen_t local_progress_event_gen = 0
 
std::vector< Eventremote_progress_events
 
atomic< CompQueueWaiter * > first_free_waiter = atomic<CompQueueWaiter *>(nullptr)
 
CompQueueWaiterBatchbatches = nullptr
 

Static Protected Attributes

static const size_t CQWAITER_BATCH_SIZE = 16
 

Constructor & Destructor Documentation

◆ CompQueueImpl()

Realm::CompQueueImpl::CompQueueImpl ( )
default

◆ ~CompQueueImpl()

Realm::CompQueueImpl::~CompQueueImpl ( )

Member Function Documentation

◆ add_completed_event()

void Realm::CompQueueImpl::add_completed_event ( Event  event,
CompQueueWaiter waiter,
TimeLimit  work_until 
)
protected

◆ add_event() [1/2]

void Realm::CompQueueImpl::add_event ( Event  event,
bool  faultaware 
)

◆ add_event() [2/2]

void Realm::CompQueueImpl::add_event ( Event  event,
EventImpl ev_impl,
bool  faultaware 
)

◆ add_remote_progress_event()

void Realm::CompQueueImpl::add_remote_progress_event ( Event  event)

◆ destroy()

void Realm::CompQueueImpl::destroy ( void  )

◆ get_capacity()

size_t Realm::CompQueueImpl::get_capacity ( ) const

◆ get_local_progress_event()

Event Realm::CompQueueImpl::get_local_progress_event ( void  )

◆ get_pending_events()

size_t Realm::CompQueueImpl::get_pending_events ( ) const

◆ init()

void Realm::CompQueueImpl::init ( ID  _me,
int  _owner 
)

◆ make_id()

static ID Realm::CompQueueImpl::make_id ( const CompQueueImpl dummy,
int  owner,
ID::IDType  index 
)
inlinestatic

◆ pop_events()

size_t Realm::CompQueueImpl::pop_events ( Event events,
size_t  max_to_pop 
)

◆ set_capacity()

void Realm::CompQueueImpl::set_capacity ( size_t  _max_size,
bool  _resizable 
)

Member Data Documentation

◆ batches

CompQueueWaiterBatch* Realm::CompQueueImpl::batches = nullptr
protected

◆ commit_ptr

atomic<size_t> Realm::CompQueueImpl::commit_ptr = atomic<size_t>(0)
protected

◆ completed_events

std::unique_ptr<Event[]> Realm::CompQueueImpl::completed_events = nullptr
protected

◆ consume_ptr

atomic<size_t> Realm::CompQueueImpl::consume_ptr = atomic<size_t>(0)
protected

◆ CQWAITER_BATCH_SIZE

const size_t Realm::CompQueueImpl::CQWAITER_BATCH_SIZE = 16
staticprotected

◆ cur_events

size_t Realm::CompQueueImpl::cur_events = 0
protected

◆ deferred_destroy

DeferredDestroy Realm::CompQueueImpl::deferred_destroy

◆ first_free_waiter

atomic<CompQueueWaiter *> Realm::CompQueueImpl::first_free_waiter = atomic<CompQueueWaiter *>(nullptr)
protected

◆ has_progress_events

atomic<bool> Realm::CompQueueImpl::has_progress_events = atomic<bool>(0)
protected

◆ local_progress_event

GenEventImpl* Realm::CompQueueImpl::local_progress_event = nullptr
protected

◆ local_progress_event_gen

EventImpl::gen_t Realm::CompQueueImpl::local_progress_event_gen = 0
protected

◆ max_events

size_t Realm::CompQueueImpl::max_events = 0
protected

◆ me

CompletionQueue Realm::CompQueueImpl::me

◆ mutex

Mutex Realm::CompQueueImpl::mutex
protected

◆ next_free

CompQueueImpl* Realm::CompQueueImpl::next_free

◆ owner

int Realm::CompQueueImpl::owner

◆ pending_events

atomic<size_t> Realm::CompQueueImpl::pending_events = atomic<size_t>(0)
protected

◆ rd_ptr

atomic<size_t> Realm::CompQueueImpl::rd_ptr = atomic<size_t>(0)
protected

◆ remote_progress_events

std::vector<Event> Realm::CompQueueImpl::remote_progress_events
protected

◆ resizable

bool Realm::CompQueueImpl::resizable = false
protected

◆ wr_ptr

atomic<size_t> Realm::CompQueueImpl::wr_ptr = atomic<size_t>(0)
protected

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