Lines Matching full:slots
48 struct ck_spinlock_anderson_thread *slots; member
59 struct ck_spinlock_anderson_thread *slots, in ck_spinlock_anderson_init() argument
64 slots[0].locked = false; in ck_spinlock_anderson_init()
65 slots[0].position = 0; in ck_spinlock_anderson_init()
67 slots[i].locked = true; in ck_spinlock_anderson_init()
68 slots[i].position = i; in ck_spinlock_anderson_init()
71 lock->slots = slots; in ck_spinlock_anderson_init()
97 r = ck_pr_load_uint(&lock->slots[position].locked); in ck_spinlock_anderson_locked()
111 * to reallocate beginning slots to more than one thread. To avoid this in ck_spinlock_anderson_lock()
138 while (ck_pr_load_uint(&lock->slots[position].locked) == true) in ck_spinlock_anderson_lock()
142 ck_pr_store_uint(&lock->slots[position].locked, true); in ck_spinlock_anderson_lock()
145 *slot = lock->slots + position; in ck_spinlock_anderson_lock()
163 ck_pr_store_uint(&lock->slots[position].locked, false); in ck_spinlock_anderson_unlock()