Lines Matching refs:cv

173 void __kmp_win32_cond_init(kmp_win32_cond_t *cv) {  in __kmp_win32_cond_init()  argument
174 cv->waiters_count_ = 0; in __kmp_win32_cond_init()
175 cv->wait_generation_count_ = 0; in __kmp_win32_cond_init()
176 cv->release_count_ = 0; in __kmp_win32_cond_init()
179 __kmp_win32_mutex_init(&cv->waiters_count_lock_); in __kmp_win32_cond_init()
182 cv->event_ = CreateEvent(NULL, // no security in __kmp_win32_cond_init()
187 __kmp_itt_system_object_created(cv->event_, "Event"); in __kmp_win32_cond_init()
191 void __kmp_win32_cond_destroy(kmp_win32_cond_t *cv) { in __kmp_win32_cond_destroy() argument
192 __kmp_win32_mutex_destroy(&cv->waiters_count_lock_); in __kmp_win32_cond_destroy()
193 __kmp_free_handle(cv->event_); in __kmp_win32_cond_destroy()
194 memset(cv, '\0', sizeof(*cv)); in __kmp_win32_cond_destroy()
201 static void __kmp_win32_cond_wait(kmp_win32_cond_t *cv, kmp_win32_mutex_t *mx, in __kmp_win32_cond_wait() argument
207 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
210 cv->waiters_count_++; in __kmp_win32_cond_wait()
213 my_generation = cv->wait_generation_count_; in __kmp_win32_cond_wait()
215 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
222 res = WaitForSingleObject(cv->event_, timeout); in __kmp_win32_cond_wait()
226 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
230 wait_done = (cv->release_count_ > 0) && in __kmp_win32_cond_wait()
231 (cv->wait_generation_count_ != my_generation); in __kmp_win32_cond_wait()
232 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
250 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
251 KMP_DEBUG_ASSERT(cv->waiters_count_ > 0); in __kmp_win32_cond_wait()
252 cv->release_count_ = cv->waiters_count_; in __kmp_win32_cond_wait()
253 cv->wait_generation_count_++; in __kmp_win32_cond_wait()
255 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
266 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
268 cv->waiters_count_--; in __kmp_win32_cond_wait()
269 cv->release_count_--; in __kmp_win32_cond_wait()
271 last_waiter = (cv->release_count_ == 0); in __kmp_win32_cond_wait()
273 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
277 ResetEvent(cv->event_); in __kmp_win32_cond_wait()
281 void __kmp_win32_cond_broadcast(kmp_win32_cond_t *cv) { in __kmp_win32_cond_broadcast() argument
282 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_broadcast()
284 if (cv->waiters_count_ > 0) { in __kmp_win32_cond_broadcast()
285 SetEvent(cv->event_); in __kmp_win32_cond_broadcast()
288 cv->release_count_ = cv->waiters_count_; in __kmp_win32_cond_broadcast()
291 cv->wait_generation_count_++; in __kmp_win32_cond_broadcast()
294 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_broadcast()
297 void __kmp_win32_cond_signal(kmp_win32_cond_t *cv) { in __kmp_win32_cond_signal() argument
298 __kmp_win32_cond_broadcast(cv); in __kmp_win32_cond_signal()