Lines Matching refs:mutex

28 __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)
33 lll_mutex_unlock_optimized (pthread_mutex_t *mutex) in lll_mutex_unlock_optimized() argument
39 int private = PTHREAD_MUTEX_PSHARED (mutex); in lll_mutex_unlock_optimized()
41 mutex->__data.__lock = 0; in lll_mutex_unlock_optimized()
43 lll_unlock (mutex->__data.__lock, private); in lll_mutex_unlock_optimized()
47 __pthread_mutex_unlock_usercnt (pthread_mutex_t *mutex, int decr) in __pthread_mutex_unlock_usercnt() argument
51 int type = PTHREAD_MUTEX_TYPE_ELISION (mutex); in __pthread_mutex_unlock_usercnt()
55 return __pthread_mutex_unlock_full (mutex, decr); in __pthread_mutex_unlock_usercnt()
62 mutex->__data.__owner = 0; in __pthread_mutex_unlock_usercnt()
65 --mutex->__data.__nusers; in __pthread_mutex_unlock_usercnt()
68 lll_mutex_unlock_optimized (mutex); in __pthread_mutex_unlock_usercnt()
70 LIBC_PROBE (mutex_release, 1, mutex); in __pthread_mutex_unlock_usercnt()
77 return lll_unlock_elision (mutex->__data.__lock, mutex->__data.__elision, in __pthread_mutex_unlock_usercnt()
78 PTHREAD_MUTEX_PSHARED (mutex)); in __pthread_mutex_unlock_usercnt()
80 else if (__builtin_expect (PTHREAD_MUTEX_TYPE (mutex) in __pthread_mutex_unlock_usercnt()
84 if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid)) in __pthread_mutex_unlock_usercnt()
87 if (--mutex->__data.__count != 0) in __pthread_mutex_unlock_usercnt()
92 else if (__builtin_expect (PTHREAD_MUTEX_TYPE (mutex) in __pthread_mutex_unlock_usercnt()
99 if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid) in __pthread_mutex_unlock_usercnt()
100 || ! lll_islocked (mutex->__data.__lock)) in __pthread_mutex_unlock_usercnt()
109 __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr) in libc_hidden_def()
114 switch (PTHREAD_MUTEX_TYPE (mutex)) in libc_hidden_def()
118 if ((mutex->__data.__lock & FUTEX_TID_MASK) in libc_hidden_def()
120 && __builtin_expect (mutex->__data.__owner in libc_hidden_def()
123 if (--mutex->__data.__count != 0) in libc_hidden_def()
130 if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid)) in libc_hidden_def()
133 if (--mutex->__data.__count != 0) in libc_hidden_def()
142 if ((mutex->__data.__lock & FUTEX_TID_MASK) in libc_hidden_def()
144 || ! lll_islocked (mutex->__data.__lock)) in libc_hidden_def()
150 if (__builtin_expect (mutex->__data.__owner in libc_hidden_def()
158 &mutex->__data.__list.__next); in libc_hidden_def()
162 DEQUEUE_MUTEX (mutex); in libc_hidden_def()
164 mutex->__data.__owner = newowner; in libc_hidden_def()
167 --mutex->__data.__nusers; in libc_hidden_def()
173 private = PTHREAD_ROBUST_MUTEX_PSHARED (mutex); in libc_hidden_def()
174 if (__glibc_unlikely ((atomic_exchange_rel (&mutex->__data.__lock, 0) in libc_hidden_def()
176 futex_wake ((unsigned int *) &mutex->__data.__lock, 1, private); in libc_hidden_def()
195 if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid)) in libc_hidden_def()
198 if (--mutex->__data.__count != 0) in libc_hidden_def()
205 if ((mutex->__data.__lock & FUTEX_TID_MASK) in libc_hidden_def()
207 && __builtin_expect (mutex->__data.__owner in libc_hidden_def()
210 if (--mutex->__data.__count != 0) in libc_hidden_def()
217 if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid)) in libc_hidden_def()
220 if (--mutex->__data.__count != 0) in libc_hidden_def()
232 if ((mutex->__data.__lock & FUTEX_TID_MASK) in libc_hidden_def()
234 || ! lll_islocked (mutex->__data.__lock)) in libc_hidden_def()
242 if ((atomic_load_relaxed (&(mutex->__data.__kind)) in libc_hidden_def()
244 && __builtin_expect (mutex->__data.__owner in libc_hidden_def()
251 if ((atomic_load_relaxed (&(mutex->__data.__kind)) in libc_hidden_def()
258 (void *) (((uintptr_t) &mutex->__data.__list.__next) in libc_hidden_def()
263 DEQUEUE_MUTEX (mutex); in libc_hidden_def()
267 mutex->__data.__owner = newowner; in libc_hidden_def()
270 --mutex->__data.__nusers; in libc_hidden_def()
277 int robust = atomic_load_relaxed (&(mutex->__data.__kind)) in libc_hidden_def()
280 ? PTHREAD_ROBUST_MUTEX_PSHARED (mutex) in libc_hidden_def()
281 : PTHREAD_MUTEX_PSHARED (mutex)); in libc_hidden_def()
286 int l = atomic_load_relaxed (&mutex->__data.__lock); in libc_hidden_def()
292 futex_unlock_pi ((unsigned int *) &mutex->__data.__lock, in libc_hidden_def()
297 while (!atomic_compare_exchange_weak_release (&mutex->__data.__lock, in libc_hidden_def()
309 if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid)) in libc_hidden_def()
312 if (--mutex->__data.__count != 0) in libc_hidden_def()
319 if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid) in libc_hidden_def()
320 || (mutex->__data.__lock & ~ PTHREAD_MUTEX_PRIO_CEILING_MASK) == 0) in libc_hidden_def()
328 mutex->__data.__owner = 0; in libc_hidden_def()
332 --mutex->__data.__nusers; in libc_hidden_def()
337 int oldval = atomic_load_relaxed (&mutex->__data.__lock); in libc_hidden_def()
342 while (!atomic_compare_exchange_weak_release (&mutex->__data.__lock, in libc_hidden_def()
346 futex_wake ((unsigned int *)&mutex->__data.__lock, 1, in libc_hidden_def()
347 PTHREAD_MUTEX_PSHARED (mutex)); in libc_hidden_def()
351 LIBC_PROBE (mutex_release, 1, mutex); in libc_hidden_def()
360 LIBC_PROBE (mutex_release, 1, mutex); in libc_hidden_def()
366 ___pthread_mutex_unlock (pthread_mutex_t *mutex) in ___pthread_mutex_unlock() argument
368 return __pthread_mutex_unlock_usercnt (mutex, 1); in ___pthread_mutex_unlock()