search for: ticket_lock_unlock_inc

Displaying 2 results from an estimated 2 matches for "ticket_lock_unlock_inc".

2014 Jun 28
2
[RFC PATCH v2] Implement Batched (group) ticket lock
...CKET_LOCK_LOCK_INC)) { + new.head = inc.head | TICKET_LOCK_LOCK_INC; + if (cmpxchg(&lock->tickets.head, inc.head, + new.head) == inc.head) + break; + } + cpu_relax(); + inc.head = ACCESS_ONCE(lock->tickets.head); + } + } else { + add_smp(&lock->tickets.head, TICKET_LOCK_UNLOCK_INC); + } +} + #else /* !CONFIG_PARAVIRT_SPINLOCKS */ +static inline void __ticket_lock_batch_spin(arch_spinlock_t *lock, + __ticket_t ticket) +{ +} + static __always_inline void __ticket_lock_spinning(arch_spinlock_t *lock, __ticket_t ticket) { @@ -59,6 +95,10 @@ static inline void _...
2014 Jun 28
2
[RFC PATCH v2] Implement Batched (group) ticket lock
...CKET_LOCK_LOCK_INC)) { + new.head = inc.head | TICKET_LOCK_LOCK_INC; + if (cmpxchg(&lock->tickets.head, inc.head, + new.head) == inc.head) + break; + } + cpu_relax(); + inc.head = ACCESS_ONCE(lock->tickets.head); + } + } else { + add_smp(&lock->tickets.head, TICKET_LOCK_UNLOCK_INC); + } +} + #else /* !CONFIG_PARAVIRT_SPINLOCKS */ +static inline void __ticket_lock_batch_spin(arch_spinlock_t *lock, + __ticket_t ticket) +{ +} + static __always_inline void __ticket_lock_spinning(arch_spinlock_t *lock, __ticket_t ticket) { @@ -59,6 +95,10 @@ static inline void _...