From 405f5e13e8e9bf9523ecbc4f3e7f1f49327d92a2 Mon Sep 17 00:00:00 2001 From: Lammert Bies Date: Sun, 11 Dec 2016 18:57:28 +0100 Subject: [PATCH] Moved WIN32 pthread_cond_signal to own file --- Makefile | 1 + src/libhttp.c | 20 --------------- src/pthread_cond_signal.c | 52 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 20 deletions(-) create mode 100644 src/pthread_cond_signal.c diff --git a/Makefile b/Makefile index 45e38a3b..b91afa78 100644 --- a/Makefile +++ b/Makefile @@ -235,6 +235,7 @@ LIB_SOURCES = src/libhttp.c \ src/httplib_write.c \ src/md5.c \ src/pthread_cond_init.c \ + src/pthread_cond_signal.c \ src/pthread_cond_timedwait.c \ src/pthread_cond_wait.c \ src/pthread_mutex_destroy.c \ diff --git a/src/libhttp.c b/src/libhttp.c index df66f5de..56259c2a 100644 --- a/src/libhttp.c +++ b/src/libhttp.c @@ -869,26 +869,6 @@ int clock_gettime( clockid_t clk_id, struct timespec *tp ) { } /* clock_gettime */ #endif -int pthread_cond_signal( pthread_cond_t *cv ) { - - HANDLE wkup = NULL; - BOOL ok = FALSE; - - EnterCriticalSection(&cv->threadIdSec); - if (cv->waiting_thread) { - wkup = cv->waiting_thread->pthread_cond_helper_mutex; - cv->waiting_thread = cv->waiting_thread->next_waiting_thread; - - ok = SetEvent(wkup); - assert(ok); - } - LeaveCriticalSection(&cv->threadIdSec); - - return ok ? 0 : 1; - -} /* pthread_cond_signal */ - - int pthread_cond_broadcast( pthread_cond_t *cv ) { EnterCriticalSection(&cv->threadIdSec); diff --git a/src/pthread_cond_signal.c b/src/pthread_cond_signal.c new file mode 100644 index 00000000..41966c11 --- /dev/null +++ b/src/pthread_cond_signal.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2016 Lammert Bies + * Copyright (c) 2013-2016 the Civetweb developers + * Copyright (c) 2004-2013 Sergey Lyubka + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + + +#include "libhttp-private.h" + + + +#if defined(_WIN32) + +int pthread_cond_signal( pthread_cond_t *cv ) { + + HANDLE wkup = NULL; + BOOL ok = FALSE; + + EnterCriticalSection(&cv->threadIdSec); + if (cv->waiting_thread) { + wkup = cv->waiting_thread->pthread_cond_helper_mutex; + cv->waiting_thread = cv->waiting_thread->next_waiting_thread; + + ok = SetEvent(wkup); + assert(ok); + } + LeaveCriticalSection(&cv->threadIdSec); + + return ok ? 0 : 1; + +} /* pthread_cond_signal */ + +#endif /* _WIN32 */