Lines Matching refs:cond
130 CONDITION_VARIABLE *cond = mm_malloc(sizeof(CONDITION_VARIABLE)); in evthread_win32_condvar_alloc() local
131 if (!cond) in evthread_win32_condvar_alloc()
133 InitializeConditionVariable_fn(cond); in evthread_win32_condvar_alloc()
134 return cond; in evthread_win32_condvar_alloc()
140 CONDITION_VARIABLE *cond = cond_; in evthread_win32_condvar_free() local
142 mm_free(cond); in evthread_win32_condvar_free()
146 evthread_win32_condvar_signal(void *cond, int broadcast) in evthread_win32_condvar_signal() argument
148 CONDITION_VARIABLE *cond = cond_; in evthread_win32_condvar_signal() local
150 WakeAllConditionVariable_fn(cond); in evthread_win32_condvar_signal()
152 WakeConditionVariable_fn(cond); in evthread_win32_condvar_signal()
159 CONDITION_VARIABLE *cond = cond_; in evthread_win32_condvar_wait() local
168 result = SleepConditionVariableCS_fn(cond, lock, ms); in evthread_win32_condvar_wait()
192 struct evthread_win32_cond *cond; in evthread_win32_cond_alloc() local
193 if (!(cond = mm_malloc(sizeof(struct evthread_win32_cond)))) in evthread_win32_cond_alloc()
195 if (InitializeCriticalSectionAndSpinCount(&cond->lock, SPIN_COUNT)==0) { in evthread_win32_cond_alloc()
196 mm_free(cond); in evthread_win32_cond_alloc()
199 if ((cond->event = CreateEvent(NULL,TRUE,FALSE,NULL)) == NULL) { in evthread_win32_cond_alloc()
200 DeleteCriticalSection(&cond->lock); in evthread_win32_cond_alloc()
201 mm_free(cond); in evthread_win32_cond_alloc()
204 cond->n_waiting = cond->n_to_wake = cond->generation = 0; in evthread_win32_cond_alloc()
205 return cond; in evthread_win32_cond_alloc()
211 struct evthread_win32_cond *cond = cond_; in evthread_win32_cond_free() local
212 DeleteCriticalSection(&cond->lock); in evthread_win32_cond_free()
213 CloseHandle(cond->event); in evthread_win32_cond_free()
214 mm_free(cond); in evthread_win32_cond_free()
220 struct evthread_win32_cond *cond = cond_; in evthread_win32_cond_signal() local
221 EnterCriticalSection(&cond->lock); in evthread_win32_cond_signal()
223 cond->n_to_wake = cond->n_waiting; in evthread_win32_cond_signal()
225 ++cond->n_to_wake; in evthread_win32_cond_signal()
226 cond->generation++; in evthread_win32_cond_signal()
227 SetEvent(cond->event); in evthread_win32_cond_signal()
228 LeaveCriticalSection(&cond->lock); in evthread_win32_cond_signal()
235 struct evthread_win32_cond *cond = cond_; in evthread_win32_cond_wait() local
244 EnterCriticalSection(&cond->lock); in evthread_win32_cond_wait()
245 ++cond->n_waiting; in evthread_win32_cond_wait()
246 generation_at_start = cond->generation; in evthread_win32_cond_wait()
247 LeaveCriticalSection(&cond->lock); in evthread_win32_cond_wait()
254 res = WaitForSingleObject(cond->event, ms); in evthread_win32_cond_wait()
255 EnterCriticalSection(&cond->lock); in evthread_win32_cond_wait()
256 if (cond->n_to_wake && in evthread_win32_cond_wait()
257 cond->generation != generation_at_start) { in evthread_win32_cond_wait()
258 --cond->n_to_wake; in evthread_win32_cond_wait()
259 --cond->n_waiting; in evthread_win32_cond_wait()
265 --cond->n_waiting; in evthread_win32_cond_wait()
272 --cond->n_waiting; in evthread_win32_cond_wait()
280 if (cond->n_to_wake == 0) { in evthread_win32_cond_wait()
283 ResetEvent(cond->event); in evthread_win32_cond_wait()
286 LeaveCriticalSection(&cond->lock); in evthread_win32_cond_wait()
291 EnterCriticalSection(&cond->lock); in evthread_win32_cond_wait()
292 if (!cond->n_waiting) in evthread_win32_cond_wait()
293 ResetEvent(cond->event); in evthread_win32_cond_wait()
294 LeaveCriticalSection(&cond->lock); in evthread_win32_cond_wait()