rl_q_entry
static struct rl_q_entry *rl_e_unmark(const struct rl_q_entry *e);
struct rl_q_entry *rl_q_next;
struct rl_q_entry *rl_q_free;
static void rangelock_free_free(struct rl_q_entry *free);
rl_entry_zone = uma_zcreate("rl_entry", sizeof(struct rl_q_entry),
NULL, NULL, NULL, NULL, UMA_ALIGNOF(struct rl_q_entry),
static struct rl_q_entry *
struct rl_q_entry *e;
rl_e_is_marked(const struct rl_q_entry *e)
static struct rl_q_entry *
rl_e_unmark_unchecked(const struct rl_q_entry *e)
return ((struct rl_q_entry *)((uintptr_t)e & ~1));
static struct rl_q_entry *
rl_e_unmark(const struct rl_q_entry *e)
rl_e_mark(struct rl_q_entry *e)
static struct rl_q_entry *
rl_q_load(struct rl_q_entry **p)
return ((struct rl_q_entry *)atomic_load_acq_ptr((uintptr_t *)p));
rl_e_is_rlock(const struct rl_q_entry *e)
rangelock_free_free(struct rl_q_entry *free)
struct rl_q_entry *x, *xp;
rangelock_unlock_int(struct rangelock *lock, struct rl_q_entry *e)
rl_e_compare(const struct rl_q_entry *e1, const struct rl_q_entry *e2)
rl_q_cas(struct rl_q_entry **prev, struct rl_q_entry *old,
struct rl_q_entry *new)
struct rl_q_entry *cur, *free, *next, **prev;
prev = (struct rl_q_entry **)&lock->head;
rl_conflict(struct rangelock *lock, struct rl_q_entry *cur, struct rl_q_entry *e,
rl_r_validate(struct rangelock *lock, struct rl_q_entry *e, bool trylock,
struct rl_q_entry **free)
struct rl_q_entry *cur, *next, **prev;
rl_w_validate(struct rangelock *lock, struct rl_q_entry *e,
bool trylock, struct rl_q_entry **free)
struct rl_q_entry *cur, *next, **prev;
prev = (struct rl_q_entry **)&lock->head;
rl_insert(struct rangelock *lock, struct rl_q_entry *e, bool trylock,
struct rl_q_entry **free)
struct rl_q_entry *cur, *next, **prev;
prev = (struct rl_q_entry **)&lock->head;
static struct rl_q_entry *
struct rl_q_entry *e, *free;
struct rl_q_entry *e, *x;
for (e = (struct rl_q_entry *)(lock->head);;) {
struct rl_q_entry;