Lines Matching refs:cond
32 __condvar_load_wseq_relaxed (pthread_cond_t *cond) in __condvar_load_wseq_relaxed() argument
34 return __atomic_wide_counter_load_relaxed (&cond->__data.__wseq); in __condvar_load_wseq_relaxed()
38 __condvar_fetch_add_wseq_acquire (pthread_cond_t *cond, unsigned int val) in __condvar_fetch_add_wseq_acquire() argument
40 return __atomic_wide_counter_fetch_add_acquire (&cond->__data.__wseq, val); in __condvar_fetch_add_wseq_acquire()
44 __condvar_load_g1_start_relaxed (pthread_cond_t *cond) in __condvar_load_g1_start_relaxed() argument
46 return __atomic_wide_counter_load_relaxed (&cond->__data.__g1_start); in __condvar_load_g1_start_relaxed()
50 __condvar_add_g1_start_relaxed (pthread_cond_t *cond, unsigned int val) in __condvar_add_g1_start_relaxed() argument
52 __atomic_wide_counter_add_relaxed (&cond->__data.__g1_start, val); in __condvar_add_g1_start_relaxed()
58 __condvar_fetch_xor_wseq_release (pthread_cond_t *cond, unsigned int val) in __condvar_fetch_xor_wseq_release() argument
60 return atomic_fetch_xor_release (&cond->__data.__wseq.__value64, val); in __condvar_fetch_xor_wseq_release()
76 __condvar_fetch_xor_wseq_release (pthread_cond_t *cond, unsigned int val) in __condvar_fetch_xor_wseq_release() argument
82 h = atomic_load_acquire (&cond->__data.__wseq.__value32.__high); in __condvar_fetch_xor_wseq_release()
83 l = atomic_load_acquire (&cond->__data.__wseq.__value32.__low); in __condvar_fetch_xor_wseq_release()
84 h2 = atomic_load_relaxed (&cond->__data.__wseq.__value32.__high); in __condvar_fetch_xor_wseq_release()
97 = (atomic_fetch_xor_release (&cond->__data.__wseq.__value32.__low, val) in __condvar_fetch_xor_wseq_release()
114 __condvar_acquire_lock (pthread_cond_t *cond, int private) in __condvar_acquire_lock() argument
116 unsigned int s = atomic_load_relaxed (&cond->__data.__g1_orig_size); in __condvar_acquire_lock()
119 if (atomic_compare_exchange_weak_acquire (&cond->__data.__g1_orig_size, in __condvar_acquire_lock()
132 (&cond->__data.__g1_orig_size, &s, (s & ~(unsigned int) 3) | 2)) in __condvar_acquire_lock()
140 futex_wait_simple (&cond->__data.__g1_orig_size, in __condvar_acquire_lock()
143 s = atomic_load_relaxed (&cond->__data.__g1_orig_size); in __condvar_acquire_lock()
149 __condvar_release_lock (pthread_cond_t *cond, int private) in __condvar_release_lock() argument
151 if ((atomic_fetch_and_release (&cond->__data.__g1_orig_size, in __condvar_release_lock()
154 futex_wake (&cond->__data.__g1_orig_size, 1, private); in __condvar_release_lock()
159 __condvar_get_orig_size (pthread_cond_t *cond) in __condvar_get_orig_size() argument
161 return atomic_load_relaxed (&cond->__data.__g1_orig_size) >> 2; in __condvar_get_orig_size()
166 __condvar_set_orig_size (pthread_cond_t *cond, unsigned int size) in __condvar_set_orig_size() argument
174 s = (atomic_load_relaxed (&cond->__data.__g1_orig_size) & 3) in __condvar_set_orig_size()
176 if ((atomic_exchange_relaxed (&cond->__data.__g1_orig_size, s) & 3) in __condvar_set_orig_size()
178 atomic_store_relaxed (&cond->__data.__g1_orig_size, (size << 2) | 2); in __condvar_set_orig_size()
201 __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, in __condvar_quiesce_and_switch_g1() argument
212 unsigned int old_orig_size = __condvar_get_orig_size (cond); in __condvar_quiesce_and_switch_g1()
213 uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond) >> 1; in __condvar_quiesce_and_switch_g1()
215 + cond->__data.__g_size[g1 ^ 1]) == 0) in __condvar_quiesce_and_switch_g1()
241 atomic_fetch_or_relaxed (cond->__data.__g_signals + g1, 1); in __condvar_quiesce_and_switch_g1()
256 unsigned r = atomic_fetch_or_release (cond->__data.__g_refs + g1, 0); in __condvar_quiesce_and_switch_g1()
262 r = atomic_load_relaxed (cond->__data.__g_refs + g1); in __condvar_quiesce_and_switch_g1()
273 r = atomic_fetch_or_relaxed (cond->__data.__g_refs + g1, 1) | 1; in __condvar_quiesce_and_switch_g1()
276 futex_wait_simple (cond->__data.__g_refs + g1, r, private); in __condvar_quiesce_and_switch_g1()
279 r = atomic_load_relaxed (cond->__data.__g_refs + g1); in __condvar_quiesce_and_switch_g1()
294 __condvar_add_g1_start_relaxed (cond, in __condvar_quiesce_and_switch_g1()
302 atomic_store_release (cond->__data.__g_signals + g1, 0); in __condvar_quiesce_and_switch_g1()
310 wseq = __condvar_fetch_xor_wseq_release (cond, 1) >> 1; in __condvar_quiesce_and_switch_g1()
317 __condvar_set_orig_size (cond, orig_size); in __condvar_quiesce_and_switch_g1()
320 cond->__data.__g_size[g1] += orig_size; in __condvar_quiesce_and_switch_g1()
325 if (cond->__data.__g_size[g1] == 0) in __condvar_quiesce_and_switch_g1()