summaryrefslogtreecommitdiff
path: root/usr.sbin/bind/lib/isc/win32/condition.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/bind/lib/isc/win32/condition.c')
-rw-r--r--usr.sbin/bind/lib/isc/win32/condition.c151
1 files changed, 0 insertions, 151 deletions
diff --git a/usr.sbin/bind/lib/isc/win32/condition.c b/usr.sbin/bind/lib/isc/win32/condition.c
deleted file mode 100644
index 11783269d81..00000000000
--- a/usr.sbin/bind/lib/isc/win32/condition.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 1998-2001 Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* $ISC: condition.c,v 1.17 2001/07/08 05:08:56 mayer Exp $ */
-
-#include <config.h>
-
-#include <isc/condition.h>
-#include <isc/assertions.h>
-#include <isc/util.h>
-#include <isc/time.h>
-
-#define LSIGNAL 0
-#define LBROADCAST 1
-
-isc_result_t
-isc_condition_init(isc_condition_t *cond) {
- HANDLE h;
-
- REQUIRE(cond != NULL);
-
- cond->waiters = 0;
- h = CreateEvent(NULL, FALSE, FALSE, NULL);
- if (h == NULL) {
- /* XXX */
- return (ISC_R_UNEXPECTED);
- }
- cond->events[LSIGNAL] = h;
- h = CreateEvent(NULL, TRUE, FALSE, NULL);
- if (h == NULL) {
- (void)CloseHandle(cond->events[LSIGNAL]);
- /* XXX */
- return (ISC_R_UNEXPECTED);
- }
- cond->events[LBROADCAST] = h;
-
- return (ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_condition_signal(isc_condition_t *cond) {
-
- /*
- * Unlike pthreads, the caller MUST hold the lock associated with
- * the condition variable when calling us.
- */
- REQUIRE(cond != NULL);
-
- if (cond->waiters > 0 &&
- !SetEvent(cond->events[LSIGNAL])) {
- /* XXX */
- return (ISC_R_UNEXPECTED);
- }
-
- return (ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_condition_broadcast(isc_condition_t *cond) {
-
- /*
- * Unlike pthreads, the caller MUST hold the lock associated with
- * the condition variable when calling us.
- */
- REQUIRE(cond != NULL);
-
- if (cond->waiters > 0 &&
- !SetEvent(cond->events[LBROADCAST])) {
- /* XXX */
- return (ISC_R_UNEXPECTED);
- }
-
- return (ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_condition_destroy(isc_condition_t *cond) {
-
- REQUIRE(cond != NULL);
-
- (void)CloseHandle(cond->events[LSIGNAL]);
- (void)CloseHandle(cond->events[LBROADCAST]);
-
- return (ISC_R_SUCCESS);
-}
-
-static isc_result_t
-wait(isc_condition_t *cond, isc_mutex_t *mutex, DWORD milliseconds) {
- DWORD result;
-
- cond->waiters++;
- LeaveCriticalSection(mutex);
- result = WaitForMultipleObjects(2, cond->events, FALSE, milliseconds);
- if (result == WAIT_FAILED) {
- /* XXX */
- return (ISC_R_UNEXPECTED);
- }
- EnterCriticalSection(mutex);
- cond->waiters--;
- if (cond->waiters == 0 &&
- !ResetEvent(cond->events[LBROADCAST])) {
- /* XXX */
- LeaveCriticalSection(mutex);
- return (ISC_R_UNEXPECTED);
- }
-
- if (result == WAIT_TIMEOUT)
- return (ISC_R_TIMEDOUT);
-
- return (ISC_R_SUCCESS);
-}
-
-isc_result_t
-isc_condition_wait(isc_condition_t *cond, isc_mutex_t *mutex) {
- return (wait(cond, mutex, INFINITE));
-}
-
-isc_result_t
-isc_condition_waituntil(isc_condition_t *cond, isc_mutex_t *mutex,
- isc_time_t *t) {
- DWORD milliseconds;
- isc_uint64_t microseconds;
- isc_time_t now;
-
- if (isc_time_now(&now) != ISC_R_SUCCESS) {
- /* XXX */
- return (ISC_R_UNEXPECTED);
- }
-
- microseconds = isc_time_microdiff(t, &now);
- if (microseconds > 0xFFFFFFFFi64 * 1000)
- milliseconds = 0xFFFFFFFF;
- else
- milliseconds = (DWORD)(microseconds / 1000);
-
- return (wait(cond, mutex, milliseconds));
-}