20#ifndef REALM_RESERVATION_H
21#define REALM_RESERVATION_H
40 bool exists(
void)
const {
return id != 0; }
46 Event wait_on = Event::NO_EVENT)
const;
55 Event wait_on = Event::NO_EVENT)
const;
68 return os << std::hex << r.
id << std::dec;
132 static const State STATE_READER_COUNT_MASK = 0x03ffffff;
133 static const State STATE_SLEEPER = 0x04000000;
134 static const State STATE_WRITER = 0x08000000;
135 static const State STATE_WRITER_WAITING = 0x10000000;
136 static const State STATE_BASE_RSRV = 0x20000000;
137 static const State STATE_BASE_RSRV_WAITING = 0x40000000;
138 static const State STATE_SLOW_FALLBACK = 0x80000000;
147 friend struct FastRsrvState;
151 static const size_t CACHE_LINE_SIZE = 64;
162#include "realm/reservation.inl"
Definition reservation.h:78
State_aligned state
Definition reservation.h:153
bool tryrdlock_slow(void)
Event wrlock(WaitMode mode=SPIN)
Event rdlock_slow(WaitMode mode)
Event wrlock_slow(WaitMode mode)
Event rdlock(WaitMode mode=SPIN)
bool trywrlock_slow(void)
uint32_t State
Definition reservation.h:131
void advise_sleep_exit(void)
WaitMode
Definition reservation.h:90
@ EXTERNAL_WAIT
Definition reservation.h:94
@ SPIN
Definition reservation.h:91
@ ALWAYS_SPIN
Definition reservation.h:92
@ WAIT
Definition reservation.h:93
REALM_ALIGNED_TYPE_CONST(State_aligned, atomic< State >, 16)
FastReservation(Reservation _rsrv=Reservation::NO_RESERVATION)
Event lock(WaitMode mode=SPIN)
void advise_sleep_entry(UserEvent guard_event)
Definition reservation.h:30
bool operator!=(const Reservation &rhs) const
Definition reservation.h:36
bool exists(void) const
Definition reservation.h:40
static const Reservation NO_RESERVATION
Definition reservation.h:38
void release(Event wait_on=Event::NO_EVENT) const
static Reservation create_reservation()
id_t id
Definition reservation.h:33
bool operator<(const Reservation &rhs) const
Definition reservation.h:34
::realm_id_t id_t
Definition reservation.h:32
void destroy_reservation(Event wait_on=Event::NO_EVENT)
Event acquire(unsigned mode=0, bool exclusive=true, Event wait_on=Event::NO_EVENT) const
Event try_acquire(bool retry, unsigned mode=0, bool exclusive=true, Event wait_on=Event::NO_EVENT) const
bool operator==(const Reservation &rhs) const
Definition reservation.h:35
#define REALM_PUBLIC_API
Definition compiler_support.h:217
Definition activemsg.h:38
std::ostream & operator<<(std::ostream &os, const DenseRectangleList< N, T > &drl)
unsigned long long realm_id_t
Definition realm_c.h:64