Lines Matching +full:config +full:- +full:cond

3  * Copyright (C) 1998-2001  Internet Software Consortium.
20 #include <config.h>
32 isc_condition_init(isc_condition_t *cond) { in isc_condition_init() argument
35 REQUIRE(cond != NULL); in isc_condition_init()
37 cond->waiters = 0; in isc_condition_init()
46 cond->events[LSIGNAL] = h; in isc_condition_init()
52 ISC_LIST_INIT(cond->threadlist); in isc_condition_init()
74 * Create the thread-specific handle in register_thread()
85 newthread->handle[LSIGNAL] = gblcond->events[LSIGNAL]; in register_thread()
86 newthread->handle[LBROADCAST] = hc; in register_thread()
87 newthread->th = thrd; in register_thread()
92 ISC_LIST_APPEND(gblcond->threadlist, newthread, link); in register_thread()
98 find_thread_condition(unsigned long thrd, isc_condition_t *cond, in find_thread_condition() argument
108 for (threadcond = ISC_LIST_HEAD(cond->threadlist); in find_thread_condition()
112 if (threadcond->th == thrd) { in find_thread_condition()
121 return (register_thread(thrd, cond, threadcondp)); in find_thread_condition()
125 isc_condition_signal(isc_condition_t *cond) { in isc_condition_signal() argument
131 REQUIRE(cond != NULL); in isc_condition_signal()
133 if (!SetEvent(cond->events[LSIGNAL])) { in isc_condition_signal()
142 isc_condition_broadcast(isc_condition_t *cond) { in isc_condition_broadcast() argument
151 REQUIRE(cond != NULL); in isc_condition_broadcast()
156 for (threadcond = ISC_LIST_HEAD(cond->threadlist); in isc_condition_broadcast()
160 if (!SetEvent(threadcond->handle[LBROADCAST])) in isc_condition_broadcast()
171 isc_condition_destroy(isc_condition_t *cond) { in isc_condition_destroy() argument
175 REQUIRE(cond != NULL); in isc_condition_destroy()
176 REQUIRE(cond->waiters == 0); in isc_condition_destroy()
178 (void)CloseHandle(cond->events[LSIGNAL]); in isc_condition_destroy()
183 threadcond = ISC_LIST_HEAD(cond->threadlist); in isc_condition_destroy()
187 DEQUEUE(cond->threadlist, threadcond, link); in isc_condition_destroy()
188 (void) CloseHandle(threadcond->handle[LBROADCAST]); in isc_condition_destroy()
206 wait(isc_condition_t *cond, isc_mutex_t *mutex, DWORD milliseconds) { in wait() argument
214 tresult = find_thread_condition(isc_thread_self(), cond, &threadcond); in wait()
218 cond->waiters++; in wait()
220 result = WaitForMultipleObjects(2, threadcond->handle, FALSE, in wait()
223 cond->waiters--; in wait()
235 isc_condition_wait(isc_condition_t *cond, isc_mutex_t *mutex) { in isc_condition_wait() argument
236 return (wait(cond, mutex, INFINITE)); in isc_condition_wait()
240 isc_condition_waituntil(isc_condition_t *cond, isc_mutex_t *mutex, in isc_condition_waituntil() argument
257 return (wait(cond, mutex, milliseconds)); in isc_condition_waituntil()