Lines Matching refs:cond
133 static av_always_inline int pthread_cond_init(pthread_cond_t *cond,
136 DosCreateEventSem(NULL, &cond->event_sem, DCE_POSTONE, FALSE);
137 DosCreateEventSem(NULL, &cond->ack_sem, DCE_POSTONE, FALSE);
139 cond->wait_count = 0;
144 static av_always_inline int pthread_cond_destroy(pthread_cond_t *cond)
146 DosCloseEventSem(cond->event_sem);
147 DosCloseEventSem(cond->ack_sem);
152 static av_always_inline int pthread_cond_signal(pthread_cond_t *cond)
154 if (!__atomic_cmpxchg32(&cond->wait_count, 0, 0)) {
155 DosPostEventSem(cond->event_sem);
156 DosWaitEventSem(cond->ack_sem, SEM_INDEFINITE_WAIT);
162 static av_always_inline int pthread_cond_broadcast(pthread_cond_t *cond)
164 while (!__atomic_cmpxchg32(&cond->wait_count, 0, 0))
165 pthread_cond_signal(cond);
170 static av_always_inline int pthread_cond_timedwait(pthread_cond_t *cond,
177 __atomic_increment(&cond->wait_count);
181 APIRET ret = DosWaitEventSem(cond->event_sem, t);
183 __atomic_decrement(&cond->wait_count);
185 DosPostEventSem(cond->ack_sem);
192 static av_always_inline int pthread_cond_wait(pthread_cond_t *cond,
195 __atomic_increment(&cond->wait_count);
199 DosWaitEventSem(cond->event_sem, SEM_INDEFINITE_WAIT);
201 __atomic_decrement(&cond->wait_count);
203 DosPostEventSem(cond->ack_sem);