Lines Matching refs:isem
31 __sem_wait_32_finish (struct new_sem *isem);
37 struct new_sem *isem = arg; in __sem_wait_cleanup() local
40 atomic_fetch_add_relaxed (&isem->data, -((uint64_t) 1 << SEM_NWAITERS_SHIFT)); in __sem_wait_cleanup()
42 __sem_wait_32_finish (isem); in __sem_wait_cleanup()
51 struct new_sem *isem = (struct new_sem *) sem; in __sem_timedwait_internal() local
53 int flags = isem->pshared ? GSYNC_SHARED : 0; in __sem_timedwait_internal()
57 if (__sem_waitfast (isem, 0) == 0) in __sem_timedwait_internal()
66 pthread_cleanup_push (__sem_wait_cleanup, isem); in __sem_timedwait_internal()
90 __sem_wait_cleanup (isem); in __sem_timedwait_internal()
114 atomic_fetch_add_acquire (&isem->nwaiters, 1); in __sem_timedwait_internal()
116 pthread_cleanup_push (__sem_wait_cleanup, isem); in __sem_timedwait_internal()
118 v = atomic_load_relaxed (&isem->value); in __sem_timedwait_internal()
128 while (!atomic_compare_exchange_weak_release (&isem->value, in __sem_timedwait_internal()
135 err = __lll_abstimed_wait_intr (&isem->value, in __sem_timedwait_internal()
138 err = __lll_wait_intr (&isem->value, in __sem_timedwait_internal()
153 v = atomic_load_relaxed (&isem->value); in __sem_timedwait_internal()
158 while (!atomic_compare_exchange_weak_acquire (&isem->value, in __sem_timedwait_internal()
164 __sem_wait_32_finish (isem); in __sem_timedwait_internal()
175 __sem_wait_32_finish (struct new_sem *isem) in __sem_wait_32_finish() argument
177 unsigned int wguess = atomic_load_relaxed (&isem->nwaiters); in __sem_wait_32_finish()
179 atomic_fetch_and_acquire (&isem->value, ~SEM_NWAITERS_MASK); in __sem_wait_32_finish()
181 unsigned int wfinal = atomic_fetch_add_release (&isem->nwaiters, -1); in __sem_wait_32_finish()
184 unsigned int v = atomic_fetch_or_relaxed (&isem->value, in __sem_wait_32_finish()
188 __lll_wake (&isem->value, isem->pshared ? GSYNC_SHARED : 0); in __sem_wait_32_finish()