forked from wolfSSL/wolfssl
Reworking MINGW mutex/threading
This commit is contained in:
@@ -1203,7 +1203,7 @@ static THREAD_RETURN WOLFSSL_THREAD_NO_JOIN client_thread(void* args)
|
|||||||
THREAD_CHECK_RET(wolfSSL_CondSignal(&info->to_server.cond));
|
THREAD_CHECK_RET(wolfSSL_CondSignal(&info->to_server.cond));
|
||||||
THREAD_CHECK_RET(wolfSSL_CondEnd(&info->to_server.cond));
|
THREAD_CHECK_RET(wolfSSL_CondEnd(&info->to_server.cond));
|
||||||
|
|
||||||
WOLFSSL_RETURN_FROM_THREAD(NULL);
|
WOLFSSL_RETURN_FROM_THREAD(0);
|
||||||
}
|
}
|
||||||
#endif /* !SINGLE_THREADED */
|
#endif /* !SINGLE_THREADED */
|
||||||
#endif /* !NO_WOLFSSL_CLIENT */
|
#endif /* !NO_WOLFSSL_CLIENT */
|
||||||
@@ -1663,7 +1663,7 @@ static THREAD_RETURN WOLFSSL_THREAD_NO_JOIN server_thread(void* args)
|
|||||||
THREAD_CHECK_RET(wolfSSL_CondSignal(&info->to_client.cond));
|
THREAD_CHECK_RET(wolfSSL_CondSignal(&info->to_client.cond));
|
||||||
THREAD_CHECK_RET(wolfSSL_CondEnd(&info->to_client.cond));
|
THREAD_CHECK_RET(wolfSSL_CondEnd(&info->to_client.cond));
|
||||||
|
|
||||||
WOLFSSL_RETURN_FROM_THREAD(NULL);
|
WOLFSSL_RETURN_FROM_THREAD(0);
|
||||||
}
|
}
|
||||||
#endif /* !SINGLE_THREADED */
|
#endif /* !SINGLE_THREADED */
|
||||||
#endif /* !NO_WOLFSSL_SERVER */
|
#endif /* !NO_WOLFSSL_SERVER */
|
||||||
|
@@ -1489,7 +1489,7 @@ int wolfSSL_CryptHwMutexUnLock(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(USE_WINDOWS_API)
|
#elif defined(USE_WINDOWS_API) && !defined(WOLFSSL_PTHREADS)
|
||||||
|
|
||||||
int wc_InitMutex(wolfSSL_Mutex* m)
|
int wc_InitMutex(wolfSSL_Mutex* m)
|
||||||
{
|
{
|
||||||
@@ -3426,7 +3426,7 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
|
|||||||
|
|
||||||
#ifndef SINGLE_THREADED
|
#ifndef SINGLE_THREADED
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#if defined(USE_WINDOWS_API) && !defined(WOLFSSL_PTHREADS)
|
||||||
int wolfSSL_NewThread(THREAD_TYPE* thread,
|
int wolfSSL_NewThread(THREAD_TYPE* thread,
|
||||||
THREAD_CB cb, void* arg)
|
THREAD_CB cb, void* arg)
|
||||||
{
|
{
|
||||||
@@ -3450,6 +3450,7 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_THREAD_NO_JOIN
|
||||||
int wolfSSL_NewThreadNoJoin(THREAD_CB_NOJOIN cb, void* arg)
|
int wolfSSL_NewThreadNoJoin(THREAD_CB_NOJOIN cb, void* arg)
|
||||||
{
|
{
|
||||||
THREAD_TYPE thread;
|
THREAD_TYPE thread;
|
||||||
@@ -3464,6 +3465,7 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int wolfSSL_JoinThread(THREAD_TYPE thread)
|
int wolfSSL_JoinThread(THREAD_TYPE thread)
|
||||||
{
|
{
|
||||||
|
@@ -1377,7 +1377,7 @@ typedef struct w64wrapper {
|
|||||||
typedef unsigned int THREAD_RETURN;
|
typedef unsigned int THREAD_RETURN;
|
||||||
typedef size_t THREAD_TYPE;
|
typedef size_t THREAD_TYPE;
|
||||||
#define WOLFSSL_THREAD
|
#define WOLFSSL_THREAD
|
||||||
#elif (defined(_POSIX_THREADS) || defined(HAVE_PTHREAD))
|
#elif defined(WOLFSSL_PTHREADS)
|
||||||
#ifndef __MACH__
|
#ifndef __MACH__
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
typedef struct COND_TYPE {
|
typedef struct COND_TYPE {
|
||||||
@@ -1402,7 +1402,7 @@ typedef struct w64wrapper {
|
|||||||
typedef unsigned int THREAD_RETURN;
|
typedef unsigned int THREAD_RETURN;
|
||||||
typedef TaskHandle_t THREAD_TYPE;
|
typedef TaskHandle_t THREAD_TYPE;
|
||||||
#define WOLFSSL_THREAD
|
#define WOLFSSL_THREAD
|
||||||
#elif defined(_MSC_VER)
|
#elif defined(USE_WINDOWS_API)
|
||||||
typedef unsigned THREAD_RETURN;
|
typedef unsigned THREAD_RETURN;
|
||||||
typedef uintptr_t THREAD_TYPE;
|
typedef uintptr_t THREAD_TYPE;
|
||||||
typedef struct COND_TYPE {
|
typedef struct COND_TYPE {
|
||||||
@@ -1412,7 +1412,9 @@ typedef struct w64wrapper {
|
|||||||
#define WOLFSSL_COND
|
#define WOLFSSL_COND
|
||||||
#define INVALID_THREAD_VAL ((THREAD_TYPE)(INVALID_HANDLE_VALUE))
|
#define INVALID_THREAD_VAL ((THREAD_TYPE)(INVALID_HANDLE_VALUE))
|
||||||
#define WOLFSSL_THREAD __stdcall
|
#define WOLFSSL_THREAD __stdcall
|
||||||
#define WOLFSSL_THREAD_NO_JOIN __cdecl
|
#if !defined(__MINGW32__)
|
||||||
|
#define WOLFSSL_THREAD_NO_JOIN __cdecl
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
typedef unsigned int THREAD_RETURN;
|
typedef unsigned int THREAD_RETURN;
|
||||||
typedef size_t THREAD_TYPE;
|
typedef size_t THREAD_TYPE;
|
||||||
|
@@ -60,8 +60,7 @@
|
|||||||
|
|
||||||
/* THREADING/MUTEX SECTION */
|
/* THREADING/MUTEX SECTION */
|
||||||
#ifdef USE_WINDOWS_API
|
#ifdef USE_WINDOWS_API
|
||||||
#if defined(__MINGW32__) && !defined(SINGLE_THREADED)
|
#if defined(WOLFSSL_PTHREADS)
|
||||||
#define WOLFSSL_PTHREADS
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef WOLFSSL_GAME_BUILD
|
#ifdef WOLFSSL_GAME_BUILD
|
||||||
@@ -231,7 +230,7 @@
|
|||||||
signed char mutexBuffer[portQUEUE_OVERHEAD_BYTES];
|
signed char mutexBuffer[portQUEUE_OVERHEAD_BYTES];
|
||||||
xSemaphoreHandle mutex;
|
xSemaphoreHandle mutex;
|
||||||
} wolfSSL_Mutex;
|
} wolfSSL_Mutex;
|
||||||
#elif defined(USE_WINDOWS_API)
|
#elif defined(USE_WINDOWS_API) && !defined(WOLFSSL_PTHREADS)
|
||||||
typedef CRITICAL_SECTION wolfSSL_Mutex;
|
typedef CRITICAL_SECTION wolfSSL_Mutex;
|
||||||
#elif defined(MAXQ10XX_MUTEX)
|
#elif defined(MAXQ10XX_MUTEX)
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
Reference in New Issue
Block a user