Skip to content

Commit abab390

Browse files
Merge pull request #7015 from lealem47/zd17088
Reworking MinGW mutex/threading
2 parents a1e74d9 + e1ac56f commit abab390

4 files changed

Lines changed: 13 additions & 10 deletions

File tree

examples/benchmark/tls_bench.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,7 +1203,7 @@ static THREAD_RETURN WOLFSSL_THREAD_NO_JOIN client_thread(void* args)
12031203
THREAD_CHECK_RET(wolfSSL_CondSignal(&info->to_server.cond));
12041204
THREAD_CHECK_RET(wolfSSL_CondEnd(&info->to_server.cond));
12051205

1206-
WOLFSSL_RETURN_FROM_THREAD(NULL);
1206+
WOLFSSL_RETURN_FROM_THREAD(0);
12071207
}
12081208
#endif /* !SINGLE_THREADED */
12091209
#endif /* !NO_WOLFSSL_CLIENT */
@@ -1663,7 +1663,7 @@ static THREAD_RETURN WOLFSSL_THREAD_NO_JOIN server_thread(void* args)
16631663
THREAD_CHECK_RET(wolfSSL_CondSignal(&info->to_client.cond));
16641664
THREAD_CHECK_RET(wolfSSL_CondEnd(&info->to_client.cond));
16651665

1666-
WOLFSSL_RETURN_FROM_THREAD(NULL);
1666+
WOLFSSL_RETURN_FROM_THREAD(0);
16671667
}
16681668
#endif /* !SINGLE_THREADED */
16691669
#endif /* !NO_WOLFSSL_SERVER */

wolfcrypt/src/wc_port.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1489,7 +1489,7 @@ int wolfSSL_CryptHwMutexUnLock(void)
14891489
return 0;
14901490
}
14911491

1492-
#elif defined(USE_WINDOWS_API)
1492+
#elif defined(USE_WINDOWS_API) && !defined(WOLFSSL_PTHREADS)
14931493

14941494
int wc_InitMutex(wolfSSL_Mutex* m)
14951495
{
@@ -3426,7 +3426,7 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
34263426

34273427
#ifndef SINGLE_THREADED
34283428

3429-
#ifdef _MSC_VER
3429+
#if defined(USE_WINDOWS_API) && !defined(WOLFSSL_PTHREADS)
34303430
int wolfSSL_NewThread(THREAD_TYPE* thread,
34313431
THREAD_CB cb, void* arg)
34323432
{
@@ -3450,6 +3450,7 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
34503450
return 0;
34513451
}
34523452

3453+
#ifdef WOLFSSL_THREAD_NO_JOIN
34533454
int wolfSSL_NewThreadNoJoin(THREAD_CB_NOJOIN cb, void* arg)
34543455
{
34553456
THREAD_TYPE thread;
@@ -3464,6 +3465,7 @@ char* mystrnstr(const char* s1, const char* s2, unsigned int n)
34643465

34653466
return 0;
34663467
}
3468+
#endif
34673469

34683470
int wolfSSL_JoinThread(THREAD_TYPE thread)
34693471
{

wolfssl/wolfcrypt/types.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,7 +1377,7 @@ typedef struct w64wrapper {
13771377
typedef unsigned int THREAD_RETURN;
13781378
typedef size_t THREAD_TYPE;
13791379
#define WOLFSSL_THREAD
1380-
#elif (defined(_POSIX_THREADS) || defined(HAVE_PTHREAD))
1380+
#elif defined(WOLFSSL_PTHREADS)
13811381
#ifndef __MACH__
13821382
#include <pthread.h>
13831383
typedef struct COND_TYPE {
@@ -1402,7 +1402,7 @@ typedef struct w64wrapper {
14021402
typedef unsigned int THREAD_RETURN;
14031403
typedef TaskHandle_t THREAD_TYPE;
14041404
#define WOLFSSL_THREAD
1405-
#elif defined(_MSC_VER)
1405+
#elif defined(USE_WINDOWS_API)
14061406
typedef unsigned THREAD_RETURN;
14071407
typedef uintptr_t THREAD_TYPE;
14081408
typedef struct COND_TYPE {
@@ -1412,7 +1412,9 @@ typedef struct w64wrapper {
14121412
#define WOLFSSL_COND
14131413
#define INVALID_THREAD_VAL ((THREAD_TYPE)(INVALID_HANDLE_VALUE))
14141414
#define WOLFSSL_THREAD __stdcall
1415-
#define WOLFSSL_THREAD_NO_JOIN __cdecl
1415+
#if !defined(__MINGW32__)
1416+
#define WOLFSSL_THREAD_NO_JOIN __cdecl
1417+
#endif
14161418
#else
14171419
typedef unsigned int THREAD_RETURN;
14181420
typedef size_t THREAD_TYPE;

wolfssl/wolfcrypt/wc_port.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@
6060

6161
/* THREADING/MUTEX SECTION */
6262
#ifdef USE_WINDOWS_API
63-
#if defined(__MINGW32__) && !defined(SINGLE_THREADED)
64-
#define WOLFSSL_PTHREADS
63+
#if defined(WOLFSSL_PTHREADS)
6564
#include <pthread.h>
6665
#endif
6766
#ifdef WOLFSSL_GAME_BUILD
@@ -231,7 +230,7 @@
231230
signed char mutexBuffer[portQUEUE_OVERHEAD_BYTES];
232231
xSemaphoreHandle mutex;
233232
} wolfSSL_Mutex;
234-
#elif defined(USE_WINDOWS_API)
233+
#elif defined(USE_WINDOWS_API) && !defined(WOLFSSL_PTHREADS)
235234
typedef CRITICAL_SECTION wolfSSL_Mutex;
236235
#elif defined(MAXQ10XX_MUTEX)
237236
#include <sys/mman.h>

0 commit comments

Comments
 (0)