Lines Matching refs:lock
63 void internal_function __pthread_lock(struct _pthread_fastlock * lock, in __pthread_lock() argument
77 __pthread_acquire(&lock->__spinlock); in __pthread_lock()
85 if (lock->__status == 0 && __compare_and_swap (&lock->__status, 0, 1)) in __pthread_lock()
94 int max_count = lock->__spinlock * 2 + 10; in __pthread_lock()
100 if (((oldstatus = lock->__status) & 1) == 0) { in __pthread_lock()
101 if(__compare_and_swap(&lock->__status, oldstatus, oldstatus | 1)) in __pthread_lock()
104 lock->__spinlock += (spin_count - lock->__spinlock) / 8; in __pthread_lock()
112 __asm__ __volatile__ ("" : "=m" (lock->__status) : "m" (lock->__status)); in __pthread_lock()
115 lock->__spinlock += (spin_count - lock->__spinlock) / 8; in __pthread_lock()
123 oldstatus = lock->__status; in __pthread_lock()
141 } while(! __compare_and_swap(&lock->__status, oldstatus, newstatus)); in __pthread_lock()
170 int __pthread_unlock(struct _pthread_fastlock * lock) in __pthread_unlock() argument
183 __pthread_release(&lock->__spinlock); in __pthread_unlock()
192 while ((oldstatus = lock->__status) == 1) { in __pthread_unlock()
193 if (__compare_and_swap_with_release_semantics(&lock->__status, in __pthread_unlock()
199 ptr = (pthread_descr *) &lock->__status; in __pthread_unlock()
224 if (maxptr == (pthread_descr *) &lock->__status) { in __pthread_unlock()
232 (&lock->__status, oldstatus, (long)(thr->p_nextlock) & ~1L)) in __pthread_unlock()
246 oldstatus = lock->__status; in __pthread_unlock()
247 } while (!__compare_and_swap_with_release_semantics(&lock->__status, in __pthread_unlock()
360 void __pthread_alt_lock(struct _pthread_fastlock * lock, in __pthread_alt_lock() argument
374 __pthread_acquire(&lock->__spinlock); in __pthread_alt_lock()
376 if (lock->__status == 0) in __pthread_alt_lock()
377 lock->__status = 1; in __pthread_alt_lock()
383 wait_node.next = (struct wait_node *) lock->__status; in __pthread_alt_lock()
385 lock->__status = (long) &wait_node; in __pthread_alt_lock()
389 __pthread_release(&lock->__spinlock); in __pthread_alt_lock()
399 oldstatus = lock->__status; in __pthread_alt_lock()
413 } while(! __compare_and_swap(&lock->__status, oldstatus, newstatus)); in __pthread_alt_lock()
429 int __pthread_alt_timedlock(struct _pthread_fastlock * lock, in __pthread_alt_timedlock() argument
440 __pthread_alt_lock(lock, self); in __pthread_alt_timedlock()
449 __pthread_acquire(&lock->__spinlock); in __pthread_alt_timedlock()
451 if (lock->__status == 0) in __pthread_alt_timedlock()
452 lock->__status = 1; in __pthread_alt_timedlock()
458 p_wait_node->next = (struct wait_node *) lock->__status; in __pthread_alt_timedlock()
460 lock->__status = (long) p_wait_node; in __pthread_alt_timedlock()
464 __pthread_release(&lock->__spinlock); in __pthread_alt_timedlock()
471 oldstatus = lock->__status; in __pthread_alt_timedlock()
485 } while(! __compare_and_swap(&lock->__status, oldstatus, newstatus)); in __pthread_alt_timedlock()
517 void __pthread_alt_unlock(struct _pthread_fastlock *lock) in __pthread_alt_unlock() argument
520 struct wait_node ** const pp_head = (struct wait_node **) &lock->__status; in __pthread_alt_unlock()
530 __pthread_acquire(&lock->__spinlock); in __pthread_alt_unlock()
543 if (lock->__status == 0 || lock->__status == 1) { in __pthread_alt_unlock()
544 lock->__status = 0; in __pthread_alt_unlock()
556 long oldstatus = lock->__status; in __pthread_alt_unlock()
558 if (__compare_and_swap_with_release_semantics (&lock->__status, oldstatus, 0)) in __pthread_alt_unlock()
650 __pthread_release(&lock->__spinlock); in __pthread_alt_unlock()
665 __pthread_release(&lock->__spinlock); in __pthread_alt_unlock()