Lines Matching refs:_c
197 cond_t *_c; in pthread_cond_init() local
205 if ( !(_c = calloc(1,sizeof(*_c))) ) { in pthread_cond_init()
208 _c->valid = DEAD_COND; in pthread_cond_init()
209 _c->busy = 0; in pthread_cond_init()
210 _c->waiters_count_ = 0; in pthread_cond_init()
211 _c->waiters_count_gone_ = 0; in pthread_cond_init()
212 _c->waiters_count_unblock_ = 0; in pthread_cond_init()
214 _c->sema_q = CreateSemaphore (NULL, /* no security */ in pthread_cond_init()
218 _c->sema_b = CreateSemaphore (NULL, /* no security */ in pthread_cond_init()
222 if (_c->sema_q == NULL || _c->sema_b == NULL) { in pthread_cond_init()
223 if (_c->sema_q != NULL) in pthread_cond_init()
224 CloseHandle (_c->sema_q); in pthread_cond_init()
225 if (_c->sema_b != NULL) in pthread_cond_init()
226 CloseHandle (_c->sema_b); in pthread_cond_init()
227 free (_c); in pthread_cond_init()
230 InitializeCriticalSection(&_c->waiters_count_lock_); in pthread_cond_init()
231 InitializeCriticalSection(&_c->waiters_b_lock_); in pthread_cond_init()
232 InitializeCriticalSection(&_c->waiters_q_lock_); in pthread_cond_init()
233 _c->value_q = 0; in pthread_cond_init()
234 _c->value_b = 1; in pthread_cond_init()
238 _c->valid = LIFE_COND; in pthread_cond_init()
239 *c = (pthread_cond_t)_c; in pthread_cond_init()
249 cond_t *_c; in pthread_cond_destroy() local
266 _c = (cond_t *) *c; in pthread_cond_destroy()
267 r = do_sema_b_wait(_c->sema_b, 0, INFINITE,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_destroy()
270 if (!TryEnterCriticalSection (&_c->waiters_count_lock_)) in pthread_cond_destroy()
272 do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_destroy()
275 if (_c->waiters_count_ > _c->waiters_count_gone_) in pthread_cond_destroy()
277 r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_destroy()
279 LeaveCriticalSection(&_c->waiters_count_lock_); in pthread_cond_destroy()
283 do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_destroy()
285 if (!CloseHandle (_c->sema_q) && !r) in pthread_cond_destroy()
287 if (!CloseHandle (_c->sema_b) && !r) in pthread_cond_destroy()
289 LeaveCriticalSection (&_c->waiters_count_lock_); in pthread_cond_destroy()
290 DeleteCriticalSection(&_c->waiters_count_lock_); in pthread_cond_destroy()
291 DeleteCriticalSection(&_c->waiters_b_lock_); in pthread_cond_destroy()
292 DeleteCriticalSection(&_c->waiters_q_lock_); in pthread_cond_destroy()
293 _c->valid = DEAD_COND; in pthread_cond_destroy()
294 free(_c); in pthread_cond_destroy()
301 cond_t *_c; in pthread_cond_signal() local
306 _c = (cond_t *)*c; in pthread_cond_signal()
307 if (_c == (cond_t *)PTHREAD_COND_INITIALIZER) in pthread_cond_signal()
309 else if (_c->valid != (unsigned int)LIFE_COND) in pthread_cond_signal()
312 EnterCriticalSection (&_c->waiters_count_lock_); in pthread_cond_signal()
314 if (_c->waiters_count_unblock_ != 0) in pthread_cond_signal()
316 if (_c->waiters_count_ == 0) in pthread_cond_signal()
318 LeaveCriticalSection (&_c->waiters_count_lock_); in pthread_cond_signal()
322 _c->waiters_count_ -= 1; in pthread_cond_signal()
323 _c->waiters_count_unblock_ += 1; in pthread_cond_signal()
325 else if (_c->waiters_count_ > _c->waiters_count_gone_) in pthread_cond_signal()
327 r = do_sema_b_wait (_c->sema_b, 1, INFINITE,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_signal()
330 LeaveCriticalSection (&_c->waiters_count_lock_); in pthread_cond_signal()
334 if (_c->waiters_count_gone_ != 0) in pthread_cond_signal()
336 _c->waiters_count_ -= _c->waiters_count_gone_; in pthread_cond_signal()
337 _c->waiters_count_gone_ = 0; in pthread_cond_signal()
339 _c->waiters_count_ -= 1; in pthread_cond_signal()
340 _c->waiters_count_unblock_ = 1; in pthread_cond_signal()
344 LeaveCriticalSection (&_c->waiters_count_lock_); in pthread_cond_signal()
348 LeaveCriticalSection (&_c->waiters_count_lock_); in pthread_cond_signal()
349 r = do_sema_b_release(_c->sema_q, 1,&_c->waiters_q_lock_,&_c->value_q); in pthread_cond_signal()
357 cond_t *_c; in pthread_cond_broadcast() local
363 _c = (cond_t *)*c; in pthread_cond_broadcast()
364 if (_c == (cond_t*)PTHREAD_COND_INITIALIZER) in pthread_cond_broadcast()
366 else if (_c->valid != (unsigned int)LIFE_COND) in pthread_cond_broadcast()
369 EnterCriticalSection (&_c->waiters_count_lock_); in pthread_cond_broadcast()
371 if (_c->waiters_count_unblock_ != 0) in pthread_cond_broadcast()
373 if (_c->waiters_count_ == 0) in pthread_cond_broadcast()
375 LeaveCriticalSection (&_c->waiters_count_lock_); in pthread_cond_broadcast()
379 relCnt = _c->waiters_count_; in pthread_cond_broadcast()
380 _c->waiters_count_ = 0; in pthread_cond_broadcast()
381 _c->waiters_count_unblock_ += relCnt; in pthread_cond_broadcast()
383 else if (_c->waiters_count_ > _c->waiters_count_gone_) in pthread_cond_broadcast()
385 r = do_sema_b_wait (_c->sema_b, 1, INFINITE,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_broadcast()
388 LeaveCriticalSection (&_c->waiters_count_lock_); in pthread_cond_broadcast()
392 if (_c->waiters_count_gone_ != 0) in pthread_cond_broadcast()
394 _c->waiters_count_ -= _c->waiters_count_gone_; in pthread_cond_broadcast()
395 _c->waiters_count_gone_ = 0; in pthread_cond_broadcast()
397 relCnt = _c->waiters_count_; in pthread_cond_broadcast()
398 _c->waiters_count_ = 0; in pthread_cond_broadcast()
399 _c->waiters_count_unblock_ = relCnt; in pthread_cond_broadcast()
403 LeaveCriticalSection (&_c->waiters_count_lock_); in pthread_cond_broadcast()
407 LeaveCriticalSection (&_c->waiters_count_lock_); in pthread_cond_broadcast()
408 r = do_sema_b_release(_c->sema_q, relCnt,&_c->waiters_q_lock_,&_c->value_q); in pthread_cond_broadcast()
417 cond_t *_c; in pthread_cond_wait() local
424 _c = (cond_t *)*c; in pthread_cond_wait()
430 _c = (cond_t *) *c; in pthread_cond_wait()
431 } else if (_c->valid != (unsigned int)LIFE_COND) in pthread_cond_wait()
435 r = do_sema_b_wait (_c->sema_b, 0, INFINITE,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_wait()
439 if (!TryEnterCriticalSection (&_c->waiters_count_lock_)) in pthread_cond_wait()
441 r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_wait()
448 _c->waiters_count_++; in pthread_cond_wait()
449 LeaveCriticalSection(&_c->waiters_count_lock_); in pthread_cond_wait()
450 r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_wait()
454 ch.c = _c; in pthread_cond_wait()
461 r = do_sema_b_wait (_c->sema_q, 0, INFINITE,&_c->waiters_q_lock_,&_c->value_q); in pthread_cond_wait()
473 cond_t *_c; in pthread_cond_timedwait_impl() local
479 _c = (cond_t *)*c; in pthread_cond_timedwait_impl()
480 if (_c == (cond_t *)PTHREAD_COND_INITIALIZER) in pthread_cond_timedwait_impl()
485 _c = (cond_t *) *c; in pthread_cond_timedwait_impl()
486 } else if ((_c)->valid != (unsigned int)LIFE_COND) in pthread_cond_timedwait_impl()
499 r = do_sema_b_wait (_c->sema_b, 0, INFINITE,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_timedwait_impl()
503 if (!TryEnterCriticalSection (&_c->waiters_count_lock_)) in pthread_cond_timedwait_impl()
505 r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_timedwait_impl()
512 _c->waiters_count_++; in pthread_cond_timedwait_impl()
513 LeaveCriticalSection(&_c->waiters_count_lock_); in pthread_cond_timedwait_impl()
514 r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); in pthread_cond_timedwait_impl()
518 ch.c = _c; in pthread_cond_timedwait_impl()
526 r = do_sema_b_wait (_c->sema_q, 0, dwr,&_c->waiters_q_lock_,&_c->value_q); in pthread_cond_timedwait_impl()
550 cond_t *_c; in cleanup_wait() local
552 _c = ch->c; in cleanup_wait()
553 EnterCriticalSection (&_c->waiters_count_lock_); in cleanup_wait()
554 n = _c->waiters_count_unblock_; in cleanup_wait()
556 _c->waiters_count_unblock_ -= 1; in cleanup_wait()
557 else if ((INT_MAX/2) - 1 == _c->waiters_count_gone_) in cleanup_wait()
559 _c->waiters_count_gone_ += 1; in cleanup_wait()
560 r = do_sema_b_wait (_c->sema_b, 1, INFINITE,&_c->waiters_b_lock_,&_c->value_b); in cleanup_wait()
563 LeaveCriticalSection(&_c->waiters_count_lock_); in cleanup_wait()
567 _c->waiters_count_ -= _c->waiters_count_gone_; in cleanup_wait()
568 r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); in cleanup_wait()
571 LeaveCriticalSection(&_c->waiters_count_lock_); in cleanup_wait()
575 _c->waiters_count_gone_ = 0; in cleanup_wait()
578 _c->waiters_count_gone_ += 1; in cleanup_wait()
579 LeaveCriticalSection (&_c->waiters_count_lock_); in cleanup_wait()
583 r = do_sema_b_release (_c->sema_b, 1,&_c->waiters_b_lock_,&_c->value_b); in cleanup_wait()