Merge pull request #5668 from dgarske/smallstack_fixes

This commit is contained in:
Hayden Roche
2022-10-06 14:29:41 -07:00
committed by GitHub
2 changed files with 18 additions and 24 deletions

View File

@@ -672,17 +672,17 @@ static WC_INLINE int StackSizeCheck_launch(struct func_args* args,
unsigned char* myStack = NULL; unsigned char* myStack = NULL;
size_t stackSize = 1024*1024*2; size_t stackSize = 1024*1024*2;
pthread_attr_t myAttr; pthread_attr_t myAttr;
struct stack_size_debug_context* shim_args;
#ifdef PTHREAD_STACK_MIN #ifdef PTHREAD_STACK_MIN
if (stackSize < PTHREAD_STACK_MIN) if (stackSize < PTHREAD_STACK_MIN)
stackSize = PTHREAD_STACK_MIN; stackSize = PTHREAD_STACK_MIN;
#endif #endif
struct stack_size_debug_context *shim_args = shim_args = (struct stack_size_debug_context *)malloc(sizeof *shim_args);
(struct stack_size_debug_context *)malloc(sizeof *shim_args); if (shim_args == NULL) {
if (! shim_args) {
perror("malloc"); perror("malloc");
exit(EXIT_FAILURE); return -1;
} }
ret = posix_memalign((void**)&myStack, sysconf(_SC_PAGESIZE), stackSize); ret = posix_memalign((void**)&myStack, sysconf(_SC_PAGESIZE), stackSize);
@@ -697,6 +697,8 @@ static WC_INLINE int StackSizeCheck_launch(struct func_args* args,
ret = pthread_attr_init(&myAttr); ret = pthread_attr_init(&myAttr);
if (ret != 0) { if (ret != 0) {
fprintf(stderr, "attr_init failed\n"); fprintf(stderr, "attr_init failed\n");
free(shim_args);
free(myStack);
return ret; return ret;
} }

View File

@@ -1236,39 +1236,24 @@ typedef struct w64wrapper {
#ifdef SINGLE_THREADED #ifdef SINGLE_THREADED
#if defined(WC_32BIT_CPU) #if defined(WC_32BIT_CPU)
typedef void* THREAD_RETURN; typedef void* THREAD_RETURN;
#else #else
typedef unsigned int THREAD_RETURN; typedef unsigned int THREAD_RETURN;
#endif #endif
typedef void* THREAD_TYPE; typedef void* THREAD_TYPE;
#define WOLFSSL_THREAD #define WOLFSSL_THREAD
#elif (defined(_POSIX_THREADS) || defined(HAVE_PTHREAD)) && \
!defined(__MINGW32__)
typedef void* THREAD_RETURN;
typedef pthread_t THREAD_TYPE;
#define WOLFSSL_THREAD
#define INFINITE (-1)
#define WAIT_OBJECT_0 0L
#elif defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) || \ #elif defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) || \
defined(FREESCALE_MQX) defined(FREESCALE_MQX)
typedef unsigned int THREAD_RETURN; typedef unsigned int THREAD_RETURN;
typedef int THREAD_TYPE; typedef int THREAD_TYPE;
#define WOLFSSL_THREAD #define WOLFSSL_THREAD
#elif defined(WOLFSSL_TIRTOS) #elif defined(WOLFSSL_TIRTOS)
typedef void THREAD_RETURN; typedef void THREAD_RETURN;
typedef Task_Handle THREAD_TYPE; typedef Task_Handle THREAD_TYPE;
#ifdef HAVE_STACK_SIZE
#undef EXIT_TEST
#define EXIT_TEST(ret)
#endif
#define WOLFSSL_THREAD #define WOLFSSL_THREAD
#elif defined(WOLFSSL_ZEPHYR) #elif defined(WOLFSSL_ZEPHYR)
typedef void THREAD_RETURN; typedef void THREAD_RETURN;
typedef struct k_thread THREAD_TYPE; typedef struct k_thread THREAD_TYPE;
#ifdef HAVE_STACK_SIZE
#undef EXIT_TEST
#define EXIT_TEST(ret)
#endif
#define WOLFSSL_THREAD #define WOLFSSL_THREAD
#elif defined(NETOS) #elif defined(NETOS)
typedef UINT THREAD_RETURN; typedef UINT THREAD_RETURN;
@@ -1280,9 +1265,16 @@ 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)) && \
!defined(__MINGW32__)
typedef void* THREAD_RETURN;
typedef pthread_t THREAD_TYPE;
#define WOLFSSL_THREAD
#define INFINITE (-1)
#define WAIT_OBJECT_0 0L
#else #else
typedef unsigned int THREAD_RETURN; typedef unsigned int THREAD_RETURN;
typedef size_t THREAD_TYPE; typedef size_t THREAD_TYPE;
#define WOLFSSL_THREAD __stdcall #define WOLFSSL_THREAD __stdcall
#endif #endif