Lines Matching refs:head
49 set_bit(0, (volatile unsigned long *)&lock->tickets.head); in __ticket_enter_slowpath()
69 __ticket_t head) in __ticket_check_and_clear_slowpath() argument
71 if (head & TICKET_SLOWPATH_FLAG) { in __ticket_check_and_clear_slowpath()
74 old.tickets.head = head; in __ticket_check_and_clear_slowpath()
75 new.tickets.head = head & ~TICKET_SLOWPATH_FLAG; in __ticket_check_and_clear_slowpath()
76 old.tickets.tail = new.tickets.head + TICKET_LOCK_INC; in __ticket_check_and_clear_slowpath()
86 return __tickets_equal(lock.tickets.head, lock.tickets.tail); in arch_spin_value_unlocked()
107 if (likely(inc.head == inc.tail)) in arch_spin_lock()
114 inc.head = READ_ONCE(lock->tickets.head); in arch_spin_lock()
115 if (__tickets_equal(inc.head, inc.tail)) in arch_spin_lock()
122 __ticket_check_and_clear_slowpath(lock, inc.head); in arch_spin_lock()
132 if (!__tickets_equal(old.tickets.head, old.tickets.tail)) in arch_spin_trylock()
146 __ticket_t head; in arch_spin_unlock() local
150 head = xadd(&lock->tickets.head, TICKET_LOCK_INC); in arch_spin_unlock()
152 if (unlikely(head & TICKET_SLOWPATH_FLAG)) { in arch_spin_unlock()
153 head &= ~TICKET_SLOWPATH_FLAG; in arch_spin_unlock()
154 __ticket_unlock_kick(lock, (head + TICKET_LOCK_INC)); in arch_spin_unlock()
157 __add(&lock->tickets.head, TICKET_LOCK_INC, UNLOCK_LOCK_PREFIX); in arch_spin_unlock()
164 return !__tickets_equal(tmp.tail, tmp.head); in arch_spin_is_locked()
171 tmp.head &= ~TICKET_SLOWPATH_FLAG; in arch_spin_is_contended()
172 return (__ticket_t)(tmp.tail - tmp.head) > TICKET_LOCK_INC; in arch_spin_is_contended()
184 __ticket_t head = READ_ONCE(lock->tickets.head); in arch_spin_unlock_wait() local
192 if (__tickets_equal(tmp.head, tmp.tail) || in arch_spin_unlock_wait()
193 !__tickets_equal(tmp.head, head)) in arch_spin_unlock_wait()