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

#include <reservation.h>

Inheritance diagram for Realm::FastReservation:

Public Types

enum  WaitMode { SPIN , ALWAYS_SPIN , WAIT , EXTERNAL_WAIT }
 
typedef uint32_t State
 

Public Member Functions

 FastReservation (Reservation _rsrv=Reservation::NO_RESERVATION)
 
 ~FastReservation (void)
 
Event lock (WaitMode mode=SPIN)
 
Event wrlock (WaitMode mode=SPIN)
 
Event rdlock (WaitMode mode=SPIN)
 
void unlock (void)
 
bool trylock (void)
 
bool trywrlock (void)
 
bool tryrdlock (void)
 
void advise_sleep_entry (UserEvent guard_event)
 
void advise_sleep_exit (void)
 

Static Public Attributes

static const State STATE_READER_COUNT_MASK = 0x03ffffff
 
static const State STATE_SLEEPER = 0x04000000
 
static const State STATE_WRITER = 0x08000000
 
static const State STATE_WRITER_WAITING = 0x10000000
 
static const State STATE_BASE_RSRV = 0x20000000
 
static const State STATE_BASE_RSRV_WAITING = 0x40000000
 
static const State STATE_SLOW_FALLBACK = 0x80000000
 

Protected Member Functions

Event wrlock_slow (WaitMode mode)
 
Event rdlock_slow (WaitMode mode)
 
void unlock_slow (void)
 
bool trywrlock_slow (void)
 
bool tryrdlock_slow (void)
 
 REALM_ALIGNED_TYPE_CONST (State_aligned, atomic< State >, 16)
 

Protected Attributes

State_aligned state
 
char opaque [CACHE_LINE_SIZE *4 - sizeof(atomic< State >)]
 

Static Protected Attributes

static const size_t CACHE_LINE_SIZE = 64
 

Friends

struct FastRsrvState
 

Member Typedef Documentation

◆ State

Member Enumeration Documentation

◆ WaitMode

Enumerator
SPIN 
ALWAYS_SPIN 
WAIT 
EXTERNAL_WAIT 

Constructor & Destructor Documentation

◆ FastReservation()

Realm::FastReservation::FastReservation ( Reservation  _rsrv = Reservation::NO_RESERVATION)

◆ ~FastReservation()

Realm::FastReservation::~FastReservation ( void  )

Member Function Documentation

◆ advise_sleep_entry()

void Realm::FastReservation::advise_sleep_entry ( UserEvent  guard_event)

◆ advise_sleep_exit()

void Realm::FastReservation::advise_sleep_exit ( void  )

◆ lock()

Event Realm::FastReservation::lock ( WaitMode  mode = SPIN)

◆ rdlock()

Event Realm::FastReservation::rdlock ( WaitMode  mode = SPIN)

◆ rdlock_slow()

Event Realm::FastReservation::rdlock_slow ( WaitMode  mode)
protected

◆ REALM_ALIGNED_TYPE_CONST()

Realm::FastReservation::REALM_ALIGNED_TYPE_CONST ( State_aligned  ,
atomic< State ,
16   
)
protected

◆ trylock()

bool Realm::FastReservation::trylock ( void  )

◆ tryrdlock()

bool Realm::FastReservation::tryrdlock ( void  )

◆ tryrdlock_slow()

bool Realm::FastReservation::tryrdlock_slow ( void  )
protected

◆ trywrlock()

bool Realm::FastReservation::trywrlock ( void  )

◆ trywrlock_slow()

bool Realm::FastReservation::trywrlock_slow ( void  )
protected

◆ unlock()

void Realm::FastReservation::unlock ( void  )

◆ unlock_slow()

void Realm::FastReservation::unlock_slow ( void  )
protected

◆ wrlock()

Event Realm::FastReservation::wrlock ( WaitMode  mode = SPIN)

◆ wrlock_slow()

Event Realm::FastReservation::wrlock_slow ( WaitMode  mode)
protected

Friends And Related Symbol Documentation

◆ FastRsrvState

friend struct FastRsrvState
friend

Member Data Documentation

◆ CACHE_LINE_SIZE

const size_t Realm::FastReservation::CACHE_LINE_SIZE = 64
staticprotected

◆ opaque

char Realm::FastReservation::opaque[CACHE_LINE_SIZE *4 - sizeof(atomic< State >)]
protected

◆ state

State_aligned Realm::FastReservation::state
protected

◆ STATE_BASE_RSRV

const State Realm::FastReservation::STATE_BASE_RSRV = 0x20000000
static

◆ STATE_BASE_RSRV_WAITING

const State Realm::FastReservation::STATE_BASE_RSRV_WAITING = 0x40000000
static

◆ STATE_READER_COUNT_MASK

const State Realm::FastReservation::STATE_READER_COUNT_MASK = 0x03ffffff
static

◆ STATE_SLEEPER

const State Realm::FastReservation::STATE_SLEEPER = 0x04000000
static

◆ STATE_SLOW_FALLBACK

const State Realm::FastReservation::STATE_SLOW_FALLBACK = 0x80000000
static

◆ STATE_WRITER

const State Realm::FastReservation::STATE_WRITER = 0x08000000
static

◆ STATE_WRITER_WAITING

const State Realm::FastReservation::STATE_WRITER_WAITING = 0x10000000
static

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