• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/contrib/ck/include/spinlock/

Lines Matching defs:ticket

78 ck_spinlock_ticket_init(struct ck_spinlock_ticket *ticket)
81 ticket->value = 0;
87 ck_spinlock_ticket_locked(struct ck_spinlock_ticket *ticket)
91 request = CK_SPINLOCK_TICKET_LOAD(&ticket->value);
100 ck_spinlock_ticket_lock(struct ck_spinlock_ticket *ticket)
104 /* Get our ticket number and set next ticket number. */
105 request = CK_SPINLOCK_TICKET_FAA(&ticket->value,
113 position = CK_SPINLOCK_TICKET_LOAD(&ticket->value) &
122 ck_spinlock_ticket_lock_pb(struct ck_spinlock_ticket *ticket, unsigned int c)
127 /* Get our ticket number and set next ticket number. */
128 request = CK_SPINLOCK_TICKET_FAA(&ticket->value,
136 position = CK_SPINLOCK_TICKET_LOAD(&ticket->value) &
149 ck_spinlock_ticket_trylock(struct ck_spinlock_ticket *ticket)
153 snapshot = CK_SPINLOCK_TICKET_LOAD(&ticket->value);
160 if (CK_SPINLOCK_TICKET_CAS(&ticket->value,
170 ck_spinlock_ticket_unlock(struct ck_spinlock_ticket *ticket)
174 CK_SPINLOCK_TICKET_INC((CK_SPINLOCK_TICKET_TYPE_BASE *)(void *)&ticket->value);
200 ck_spinlock_ticket_init(struct ck_spinlock_ticket *ticket)
203 ticket->next = 0;
204 ticket->position = 0;
211 ck_spinlock_ticket_locked(struct ck_spinlock_ticket *ticket)
215 r = ck_pr_load_uint(&ticket->position) !=
216 ck_pr_load_uint(&ticket->next);
222 ck_spinlock_ticket_lock(struct ck_spinlock_ticket *ticket)
226 /* Get our ticket number and set next ticket number. */
227 request = ck_pr_faa_uint(&ticket->next, 1);
230 * Busy-wait until our ticket number is current.
234 while (ck_pr_load_uint(&ticket->position) != request)
242 ck_spinlock_ticket_lock_pb(struct ck_spinlock_ticket *ticket, unsigned int c)
247 request = ck_pr_faa_uint(&ticket->next, 1);
250 position = ck_pr_load_uint(&ticket->position);
271 ck_spinlock_ticket_unlock(struct ck_spinlock_ticket *ticket)
278 * Update current ticket value so next lock request can proceed.
282 update = ck_pr_load_uint(&ticket->position);
283 ck_pr_store_uint(&ticket->position, update + 1);