Lines Matching refs:cv

174 void __kmp_win32_cond_init(kmp_win32_cond_t *cv) {  in __kmp_win32_cond_init()  argument
175 cv->waiters_count_ = 0; in __kmp_win32_cond_init()
176 cv->wait_generation_count_ = 0; in __kmp_win32_cond_init()
177 cv->release_count_ = 0; in __kmp_win32_cond_init()
180 __kmp_win32_mutex_init(&cv->waiters_count_lock_); in __kmp_win32_cond_init()
183 cv->event_ = CreateEvent(NULL, // no security in __kmp_win32_cond_init()
188 __kmp_itt_system_object_created(cv->event_, "Event"); in __kmp_win32_cond_init()
192 void __kmp_win32_cond_destroy(kmp_win32_cond_t *cv) { in __kmp_win32_cond_destroy() argument
193 __kmp_win32_mutex_destroy(&cv->waiters_count_lock_); in __kmp_win32_cond_destroy()
194 __kmp_free_handle(cv->event_); in __kmp_win32_cond_destroy()
195 memset(cv, '\0', sizeof(*cv)); in __kmp_win32_cond_destroy()
202 static void __kmp_win32_cond_wait(kmp_win32_cond_t *cv, kmp_win32_mutex_t *mx, in __kmp_win32_cond_wait() argument
208 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
211 cv->waiters_count_++; in __kmp_win32_cond_wait()
214 my_generation = cv->wait_generation_count_; in __kmp_win32_cond_wait()
216 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
223 res = WaitForSingleObject(cv->event_, timeout); in __kmp_win32_cond_wait()
227 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
231 wait_done = (cv->release_count_ > 0) && in __kmp_win32_cond_wait()
232 (cv->wait_generation_count_ != my_generation); in __kmp_win32_cond_wait()
233 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
251 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
252 KMP_DEBUG_ASSERT(cv->waiters_count_ > 0); in __kmp_win32_cond_wait()
253 cv->release_count_ = cv->waiters_count_; in __kmp_win32_cond_wait()
254 cv->wait_generation_count_++; in __kmp_win32_cond_wait()
256 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
267 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
269 cv->waiters_count_--; in __kmp_win32_cond_wait()
270 cv->release_count_--; in __kmp_win32_cond_wait()
272 last_waiter = (cv->release_count_ == 0); in __kmp_win32_cond_wait()
274 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_wait()
278 ResetEvent(cv->event_); in __kmp_win32_cond_wait()
282 void __kmp_win32_cond_broadcast(kmp_win32_cond_t *cv) { in __kmp_win32_cond_broadcast() argument
283 __kmp_win32_mutex_lock(&cv->waiters_count_lock_); in __kmp_win32_cond_broadcast()
285 if (cv->waiters_count_ > 0) { in __kmp_win32_cond_broadcast()
286 SetEvent(cv->event_); in __kmp_win32_cond_broadcast()
289 cv->release_count_ = cv->waiters_count_; in __kmp_win32_cond_broadcast()
292 cv->wait_generation_count_++; in __kmp_win32_cond_broadcast()
295 __kmp_win32_mutex_unlock(&cv->waiters_count_lock_); in __kmp_win32_cond_broadcast()
298 void __kmp_win32_cond_signal(kmp_win32_cond_t *cv) { in __kmp_win32_cond_signal() argument
299 __kmp_win32_cond_broadcast(cv); in __kmp_win32_cond_signal()