diff --git a/arch/arc/core/thread.c b/arch/arc/core/thread.c index 5b25b79a039..d6c40cf7f18 100644 --- a/arch/arc/core/thread.c +++ b/arch/arc/core/thread.c @@ -54,11 +54,12 @@ struct init_stack_frame { * * @return N/A */ -void _new_thread(struct k_thread *thread, char *pStackMem, size_t stackSize, - _thread_entry_t pEntry, +void _new_thread(struct k_thread *thread, k_thread_stack_t stack, + size_t stackSize, _thread_entry_t pEntry, void *parameter1, void *parameter2, void *parameter3, int priority, unsigned int options) { + char *pStackMem = K_THREAD_STACK_BUFFER(stack); _ASSERT_VALID_PRIO(priority, pEntry); char *stackEnd = pStackMem + stackSize; diff --git a/arch/arc/include/v2/irq.h b/arch/arc/include/v2/irq.h index 8c3fe82f76d..a1edb5fc800 100644 --- a/arch/arc/include/v2/irq.h +++ b/arch/arc/include/v2/irq.h @@ -33,7 +33,7 @@ extern "C" { #ifndef _ASMLANGUAGE extern void _firq_stack_setup(void); -extern char _interrupt_stack[]; +extern K_THREAD_STACK_DEFINE(_interrupt_stack, CONFIG_ISR_STACK_SIZE); /* * _irq_setup @@ -54,7 +54,8 @@ static ALWAYS_INLINE void _irq_setup(void) k_cpu_sleep_mode = _ARC_V2_WAKE_IRQ_LEVEL; _arc_v2_aux_reg_write(_ARC_V2_AUX_IRQ_CTRL, aux_irq_ctrl_value); - _kernel.irq_stack = _interrupt_stack + CONFIG_ISR_STACK_SIZE; + _kernel.irq_stack = + K_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE; _firq_stack_setup(); } diff --git a/arch/arm/core/thread.c b/arch/arm/core/thread.c index 9ae5572b2a0..a608a0852c7 100644 --- a/arch/arm/core/thread.c +++ b/arch/arm/core/thread.c @@ -49,11 +49,13 @@ * @return N/A */ -void _new_thread(struct k_thread *thread, char *pStackMem, size_t stackSize, - _thread_entry_t pEntry, +void _new_thread(struct k_thread *thread, k_thread_stack_t stack, + size_t stackSize, _thread_entry_t pEntry, void *parameter1, void *parameter2, void *parameter3, int priority, unsigned int options) { + char *pStackMem = K_THREAD_STACK_BUFFER(stack); + _ASSERT_VALID_PRIO(priority, pEntry); __ASSERT(!((u32_t)pStackMem & (STACK_ALIGN - 1)), diff --git a/arch/arm/include/cortex_m/stack.h b/arch/arm/include/cortex_m/stack.h index 7a7046cbe95..d3d143ab1a2 100644 --- a/arch/arm/include/cortex_m/stack.h +++ b/arch/arm/include/cortex_m/stack.h @@ -33,7 +33,7 @@ extern "C" { #else -extern char _interrupt_stack[CONFIG_ISR_STACK_SIZE]; +extern K_THREAD_STACK_DEFINE(_interrupt_stack, CONFIG_ISR_STACK_SIZE); /** * @@ -46,7 +46,8 @@ extern char _interrupt_stack[CONFIG_ISR_STACK_SIZE]; */ static ALWAYS_INLINE void _InterruptStackSetup(void) { - u32_t msp = (u32_t)(_interrupt_stack + CONFIG_ISR_STACK_SIZE); + u32_t msp = (u32_t)(K_THREAD_STACK_BUFFER(_interrupt_stack) + + CONFIG_ISR_STACK_SIZE); _MspSet(msp); } diff --git a/arch/arm/include/kernel_arch_func.h b/arch/arm/include/kernel_arch_func.h index eff05ccdfc5..466ee964465 100644 --- a/arch/arm/include/kernel_arch_func.h +++ b/arch/arm/include/kernel_arch_func.h @@ -38,13 +38,15 @@ static ALWAYS_INLINE void kernel_arch_init(void) } static ALWAYS_INLINE void -_arch_switch_to_main_thread(struct k_thread *main_thread, char *main_stack, +_arch_switch_to_main_thread(struct k_thread *main_thread, + k_thread_stack_t main_stack, size_t main_stack_size, _thread_entry_t _main) { /* get high address of the stack, i.e. its start (stack grows down) */ char *start_of_main_stack; - start_of_main_stack = main_stack + main_stack_size; + start_of_main_stack = + K_THREAD_STACK_BUFFER(main_stack) + main_stack_size; start_of_main_stack = (void *)STACK_ROUND_DOWN(start_of_main_stack); _current = main_thread; diff --git a/arch/nios2/core/thread.c b/arch/nios2/core/thread.c index 121132a2f13..dc324356e18 100644 --- a/arch/nios2/core/thread.c +++ b/arch/nios2/core/thread.c @@ -31,11 +31,12 @@ struct init_stack_frame { }; -void _new_thread(struct k_thread *thread, char *stack_memory, size_t stack_size, - _thread_entry_t thread_func, +void _new_thread(struct k_thread *thread, k_thread_stack_t stack, + size_t stack_size, _thread_entry_t thread_func, void *arg1, void *arg2, void *arg3, int priority, unsigned int options) { + char *stack_memory = K_THREAD_STACK_BUFFER(stack); _ASSERT_VALID_PRIO(priority, thread_func); struct init_stack_frame *iframe; diff --git a/arch/nios2/include/kernel_arch_data.h b/arch/nios2/include/kernel_arch_data.h index 3f566e53248..c8d6e31636f 100644 --- a/arch/nios2/include/kernel_arch_data.h +++ b/arch/nios2/include/kernel_arch_data.h @@ -53,7 +53,7 @@ struct _kernel_arch { typedef struct _kernel_arch _kernel_arch_t; -extern char _interrupt_stack[CONFIG_ISR_STACK_SIZE]; +extern K_THREAD_STACK_DEFINE(_interrupt_stack, CONFIG_ISR_STACK_SIZE); #endif /* _ASMLANGUAGE */ diff --git a/arch/nios2/include/kernel_arch_func.h b/arch/nios2/include/kernel_arch_func.h index bf8d5b5d134..d18d3218a34 100644 --- a/arch/nios2/include/kernel_arch_func.h +++ b/arch/nios2/include/kernel_arch_func.h @@ -31,7 +31,8 @@ void k_cpu_atomic_idle(unsigned int key); static ALWAYS_INLINE void kernel_arch_init(void) { - _kernel.irq_stack = _interrupt_stack + CONFIG_ISR_STACK_SIZE; + _kernel.irq_stack = + K_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE; } static ALWAYS_INLINE void diff --git a/arch/riscv32/core/thread.c b/arch/riscv32/core/thread.c index 7e4f6864025..d6e6869a457 100644 --- a/arch/riscv32/core/thread.c +++ b/arch/riscv32/core/thread.c @@ -15,11 +15,12 @@ void _thread_entry_wrapper(_thread_entry_t thread, void *arg2, void *arg3); -void _new_thread(struct k_thread *thread, char *stack_memory, +void _new_thread(struct k_thread *thread, k_thread_stack_t stack, size_t stack_size, _thread_entry_t thread_func, void *arg1, void *arg2, void *arg3, int priority, unsigned int options) { + char *stack_memory = K_THREAD_STACK_BUFFER(stack); _ASSERT_VALID_PRIO(priority, thread_func); struct __esf *stack_init; diff --git a/arch/riscv32/include/kernel_arch_data.h b/arch/riscv32/include/kernel_arch_data.h index 4d3ef8d614c..a0eae52a1b9 100644 --- a/arch/riscv32/include/kernel_arch_data.h +++ b/arch/riscv32/include/kernel_arch_data.h @@ -37,7 +37,7 @@ struct _kernel_arch { typedef struct _kernel_arch _kernel_arch_t; -extern char _interrupt_stack[CONFIG_ISR_STACK_SIZE]; +extern K_THREAD_STACK_DEFINE(_interrupt_stack, CONFIG_ISR_STACK_SIZE); #endif /* _ASMLANGUAGE */ diff --git a/arch/riscv32/include/kernel_arch_func.h b/arch/riscv32/include/kernel_arch_func.h index 67fddf07abd..958a44f16b7 100644 --- a/arch/riscv32/include/kernel_arch_func.h +++ b/arch/riscv32/include/kernel_arch_func.h @@ -27,7 +27,8 @@ void k_cpu_atomic_idle(unsigned int key); static ALWAYS_INLINE void kernel_arch_init(void) { - _kernel.irq_stack = _interrupt_stack + CONFIG_ISR_STACK_SIZE; + _kernel.irq_stack = + K_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE; } static ALWAYS_INLINE void diff --git a/arch/x86/core/thread.c b/arch/x86/core/thread.c index 30ff57060b4..270774eda40 100644 --- a/arch/x86/core/thread.c +++ b/arch/x86/core/thread.c @@ -196,22 +196,23 @@ __asm__("\t.globl _thread_entry\n" * * @return opaque pointer to initialized k_thread structure */ -void _new_thread(struct k_thread *thread, char *pStackMem, size_t stackSize, +void _new_thread(struct k_thread *thread, k_thread_stack_t stack, + size_t stackSize, _thread_entry_t pEntry, void *parameter1, void *parameter2, void *parameter3, int priority, unsigned int options) { + char *pStackMem; + _ASSERT_VALID_PRIO(priority, pEntry); unsigned long *pInitialThread; #if CONFIG_X86_STACK_PROTECTION - _x86_mmu_set_flags(pStackMem, MMU_PAGE_SIZE, MMU_ENTRY_NOT_PRESENT, + _x86_mmu_set_flags(stack, MMU_PAGE_SIZE, MMU_ENTRY_NOT_PRESENT, MMU_PTE_P_MASK); #endif -#if _STACK_GUARD_SIZE - pStackMem += _STACK_GUARD_SIZE; -#endif + pStackMem = K_THREAD_STACK_BUFFER(stack); _new_thread_init(thread, pStackMem, stackSize, priority, options); /* carve the thread entry struct from the "base" of the stack */ diff --git a/arch/xtensa/core/thread.c b/arch/xtensa/core/thread.c index 9dd0791c621..e4eeafe8daa 100644 --- a/arch/xtensa/core/thread.c +++ b/arch/xtensa/core/thread.c @@ -42,11 +42,14 @@ extern void _xt_user_exit(void); * @return N/A */ -void _new_thread(struct k_thread *thread, char *pStack, size_t stackSize, +void _new_thread(struct k_thread *thread, k_thread_stack_t stack, + size_t stackSize, void (*pEntry)(void *, void *, void *), void *p1, void *p2, void *p3, int priority, unsigned int options) { + char *pStack = K_THREAD_STACK_BUFFER(stack); + /* Align stack end to maximum alignment requirement. */ char *stackEnd = (char *)ROUND_DOWN(pStack + stackSize, 16); #if XCHAL_CP_NUM > 0 diff --git a/include/arch/x86/arch.h b/include/arch/x86/arch.h index 47aba180b65..e91c2c3230b 100644 --- a/include/arch/x86/arch.h +++ b/include/arch/x86/arch.h @@ -547,22 +547,25 @@ extern FUNC_NORETURN void _SysFatalErrorHandler(unsigned int reason, */ #define _ARCH_THREAD_STACK_DEFINE(sym, size) \ - char _GENERIC_SECTION(.stacks) __aligned(_STACK_BASE_ALIGN) \ - sym[size + _STACK_GUARD_SIZE] + struct _k_thread_stack_element _GENERIC_SECTION(.stacks) \ + __aligned(_STACK_BASE_ALIGN) \ + sym[(size) + _STACK_GUARD_SIZE] #define _ARCH_THREAD_STACK_ARRAY_DEFINE(sym, nmemb, size) \ - char _GENERIC_SECTION(.stacks) __aligned(_STACK_BASE_ALIGN) \ + struct _k_thread_stack_element _GENERIC_SECTION(.stacks) \ + __aligned(_STACK_BASE_ALIGN) \ sym[nmemb][ROUND_UP(size, _STACK_BASE_ALIGN) + \ _STACK_GUARD_SIZE] #define _ARCH_THREAD_STACK_MEMBER(sym, size) \ - char __aligned(_STACK_BASE_ALIGN) sym[size + _STACK_GUARD_SIZE] + struct _k_thread_stack_element __aligned(_STACK_BASE_ALIGN) \ + sym[(size) + _STACK_GUARD_SIZE] #define _ARCH_THREAD_STACK_SIZEOF(sym) \ (sizeof(sym) - _STACK_GUARD_SIZE) #define _ARCH_THREAD_STACK_BUFFER(sym) \ - (sym + _STACK_GUARD_SIZE) + ((char *)((sym) + _STACK_GUARD_SIZE)) #if CONFIG_X86_KERNEL_OOPS #define _ARCH_EXCEPT(reason_p) do { \ diff --git a/include/drivers/console/ipm_console.h b/include/drivers/console/ipm_console.h index ed6e3718baa..0c13f3f6379 100644 --- a/include/drivers/console/ipm_console.h +++ b/include/drivers/console/ipm_console.h @@ -35,7 +35,7 @@ struct ipm_console_receiver_config_info { * Stack for the receiver's thread, which prints out messages as * they come in. Should be sized CONFIG_IPM_CONSOLE_STACK_SIZE */ - char *thread_stack; + k_thread_stack_t thread_stack; /** * Ring buffer data area for stashing characters from the interrupt diff --git a/include/kernel.h b/include/kernel.h index fa1245ae9df..4f0583bbc17 100644 --- a/include/kernel.h +++ b/include/kernel.h @@ -347,6 +347,26 @@ typedef void (*k_thread_entry_t)(void *p1, void *p2, void *p3); #if !defined(_ASMLANGUAGE) +/* Using typedef deliberately here, this is quite intended to be an opaque + * type. K_THREAD_STACK_BUFFER() should be used to access the data within. + * + * The purpose of this data type is to clearly distinguish between the + * declared symbol for a stack (of type k_thread_stack_t) and the underlying + * buffer which composes the stack data actually used by the underlying + * thread; they cannot be used interchangably as some arches precede the + * stack buffer region with guard areas that trigger a MPU or MMU fault + * if written to. + * + * APIs that want to work with the buffer inside should continue to use + * char *. + * + * Stacks should always be created with K_THREAD_STACK_DEFINE(). + */ +struct __packed _k_thread_stack_element { + char data; +}; +typedef struct _k_thread_stack_element *k_thread_stack_t; + /** * @brief Spawn a thread. * @@ -384,10 +404,10 @@ typedef void (*k_thread_entry_t)(void *p1, void *p2, void *p3); * * @return ID of new thread. */ -extern __deprecated k_tid_t k_thread_spawn(char *stack, size_t stack_size, - k_thread_entry_t entry, - void *p1, void *p2, void *p3, - int prio, u32_t options, s32_t delay); +extern __deprecated k_tid_t k_thread_spawn(k_thread_stack_t stack, + size_t stack_size, k_thread_entry_t entry, + void *p1, void *p2, void *p3, + int prio, u32_t options, s32_t delay); /** * @brief Create a thread. @@ -421,7 +441,8 @@ extern __deprecated k_tid_t k_thread_spawn(char *stack, size_t stack_size, * * @return ID of new thread. */ -extern k_tid_t k_thread_create(struct k_thread *new_thread, char *stack, +extern k_tid_t k_thread_create(struct k_thread *new_thread, + k_thread_stack_t stack, size_t stack_size, void (*entry)(void *, void *, void*), void *p1, void *p2, void *p3, @@ -521,7 +542,7 @@ extern void k_thread_abort(k_tid_t thread); struct _static_thread_data { struct k_thread *init_thread; - char *init_stack; + k_thread_stack_t init_stack; unsigned int init_stack_size; void (*init_entry)(void *, void *, void *); void *init_p1; @@ -2043,7 +2064,8 @@ static inline int k_work_pending(struct k_work *work) * * @return N/A */ -extern void k_work_q_start(struct k_work_q *work_q, char *stack, +extern void k_work_q_start(struct k_work_q *work_q, + k_thread_stack_t stack, size_t stack_size, int prio); /** @@ -3838,7 +3860,10 @@ extern void _timer_expiration_handler(struct _timeout *t); _ARCH_THREAD_STACK_ARRAY_DEFINE(sym, nmemb, size) #define K_THREAD_STACK_MEMBER(sym, size) _ARCH_THREAD_STACK_MEMBER(sym, size) #define K_THREAD_STACK_SIZEOF(sym) _ARCH_THREAD_STACK_SIZEOF(sym) -#define K_THREAD_STACK_BUFFER(sym) _ARCH_THREAD_STACK_BUFFER(sym) +static inline char *K_THREAD_STACK_BUFFER(k_thread_stack_t sym) +{ + return _ARCH_THREAD_STACK_BUFFER(sym); +} #else /** * @brief Declare a toplevel thread stack memory region @@ -3848,8 +3873,9 @@ extern void _timer_expiration_handler(struct _timeout *t); * This is the generic, historical definition. Align to STACK_ALIGN and put in * 'noinit' section so that it isn't zeroed at boot * - * The declared symbol will always be a character array which can be passed to - * k_thread_create, but should otherwise not be manipulated. + * The declared symbol will always be a k_thread_stack_t which can be passed to + * k_thread_create, but should otherwise not be manipulated. If the buffer + * inside needs to be examined, use K_THREAD_STACK_BUFFER(). * * It is legal to precede this definition with the 'static' keyword. * @@ -3861,7 +3887,7 @@ extern void _timer_expiration_handler(struct _timeout *t); * @param size Size of the stack memory region */ #define K_THREAD_STACK_DEFINE(sym, size) \ - char __noinit __aligned(STACK_ALIGN) sym[size] + struct _k_thread_stack_element __noinit __aligned(STACK_ALIGN) sym[size] /** * @brief Declare a toplevel array of thread stack memory regions @@ -3878,7 +3904,8 @@ extern void _timer_expiration_handler(struct _timeout *t); */ #define K_THREAD_STACK_ARRAY_DEFINE(sym, nmemb, size) \ - char __noinit __aligned(STACK_ALIGN) sym[nmemb][size] + struct _k_thread_stack_element __noinit \ + __aligned(STACK_ALIGN) sym[nmemb][size] /** * @brief Declare an embedded stack memory region @@ -3893,7 +3920,7 @@ extern void _timer_expiration_handler(struct _timeout *t); * @param size Size of the stack memory region */ #define K_THREAD_STACK_MEMBER(sym, size) \ - char __aligned(STACK_ALIGN) sym[size] + struct _k_thread_stack_element __aligned(STACK_ALIGN) sym[size] /** * @brief Return the size in bytes of a stack memory region @@ -3925,7 +3952,10 @@ extern void _timer_expiration_handler(struct _timeout *t); * @param sym Declared stack symbol name * @return The buffer itself, a char * */ -#define K_THREAD_STACK_BUFFER(sym) sym +static inline char *K_THREAD_STACK_BUFFER(k_thread_stack_t sym) +{ + return (char *)sym; +} #endif /* _ARCH_DECLARE_STACK */ diff --git a/include/net/http.h b/include/net/http.h index 52160951cc6..4c3945ecdf5 100644 --- a/include/net/http.h +++ b/include/net/http.h @@ -332,7 +332,7 @@ struct http_client_ctx { #if defined(CONFIG_HTTPS) struct { /** HTTPS stack for mbedtls library. */ - u8_t *stack; + k_thread_stack_t stack; /** HTTPS stack size. */ int stack_size; @@ -588,7 +588,7 @@ int https_client_init(struct http_client_ctx *http_ctx, const char *cert_host, https_entropy_src_cb_t entropy_src_cb, struct k_mem_pool *pool, - u8_t *https_stack, + k_thread_stack_t https_stack, size_t https_stack_size); #endif /* CONFIG_HTTPS */ @@ -795,7 +795,7 @@ struct http_server_ctx { #if defined(CONFIG_HTTPS) struct { /** HTTPS stack for mbedtls library. */ - u8_t *stack; + k_thread_stack_t stack; /** HTTPS stack size. */ int stack_size; @@ -927,7 +927,7 @@ int https_server_init(struct http_server_ctx *http_ctx, https_server_cert_cb_t cert_cb, https_entropy_src_cb_t entropy_src_cb, struct k_mem_pool *pool, - u8_t *https_stack, + k_thread_stack_t https_stack, size_t https_stack_len); #endif /* CONFIG_HTTPS */ diff --git a/include/net/mqtt.h b/include/net/mqtt.h index 28559c1dcd8..943f6d033d4 100644 --- a/include/net/mqtt.h +++ b/include/net/mqtt.h @@ -81,7 +81,7 @@ struct mqtt_ctx { /** TLS thread parameters */ struct k_mem_pool *tls_mem_pool; - u8_t *tls_stack; + k_thread_stack_t tls_stack; size_t tls_stack_size; /** TLS callback */ diff --git a/include/net/net_app.h b/include/net/net_app.h index b04b46ad253..e137bf5ec13 100644 --- a/include/net/net_app.h +++ b/include/net/net_app.h @@ -340,7 +340,7 @@ struct net_app_ctx { #if defined(CONFIG_NET_APP_TLS) struct { /** TLS stack for mbedtls library. */ - u8_t *stack; + k_thread_stack_t stack; /** TLS stack size. */ int stack_size; @@ -899,7 +899,7 @@ int net_app_client_tls(struct net_app_ctx *ctx, const char *cert_host, net_app_entropy_src_cb_t entropy_src_cb, struct k_mem_pool *pool, - u8_t *stack, + k_thread_stack_t stack, size_t stack_size); #endif /* CONFIG_NET_APP_CLIENT */ @@ -935,7 +935,7 @@ int net_app_server_tls(struct net_app_ctx *ctx, net_app_cert_cb_t cert_cb, net_app_entropy_src_cb_t entropy_src_cb, struct k_mem_pool *pool, - u8_t *stack, + k_thread_stack_t stack, size_t stack_len); bool net_app_server_tls_enable(struct net_app_ctx *ctx); diff --git a/include/net/net_core.h b/include/net/net_core.h index 5f1ca2842c1..6db37d120a8 100644 --- a/include/net/net_core.h +++ b/include/net/net_core.h @@ -95,7 +95,7 @@ int net_recv_data(struct net_if *iface, struct net_pkt *pkt); int net_send_data(struct net_pkt *pkt); struct net_stack_info { - char *stack; + k_thread_stack_t stack; const char *pretty_name; const char *name; size_t orig_size; diff --git a/kernel/include/nano_internal.h b/kernel/include/nano_internal.h index e76ae856781..051ffe4565c 100644 --- a/kernel/include/nano_internal.h +++ b/kernel/include/nano_internal.h @@ -43,7 +43,8 @@ FUNC_NORETURN void _Cstart(void); extern FUNC_NORETURN void _thread_entry(void (*)(void *, void *, void *), void *, void *, void *); -extern void _new_thread(struct k_thread *thread, char *pStack, size_t stackSize, +extern void _new_thread(struct k_thread *thread, k_thread_stack_t pStack, + size_t stackSize, void (*pEntry)(void *, void *, void *), void *p1, void *p2, void *p3, int prio, unsigned int options); diff --git a/kernel/thread.c b/kernel/thread.c index 41eb10d314f..f02bb97463a 100644 --- a/kernel/thread.c +++ b/kernel/thread.c @@ -249,28 +249,31 @@ static void schedule_new_thread(struct k_thread *thread, s32_t delay) #ifdef CONFIG_MULTITHREADING -k_tid_t k_thread_create(struct k_thread *new_thread, char *stack, +k_tid_t k_thread_create(struct k_thread *new_thread, + k_thread_stack_t stack, size_t stack_size, void (*entry)(void *, void *, void*), void *p1, void *p2, void *p3, int prio, u32_t options, s32_t delay) { __ASSERT(!_is_in_isr(), "Threads may not be created in ISRs"); - _new_thread(new_thread, stack, stack_size, entry, p1, p2, p3, prio, - options); + _new_thread(new_thread, stack, stack_size, entry, p1, p2, p3, + prio, options); schedule_new_thread(new_thread, delay); return new_thread; } -k_tid_t k_thread_spawn(char *stack, size_t stack_size, +k_tid_t k_thread_spawn(k_thread_stack_t stack, size_t stack_size, void (*entry)(void *, void *, void*), void *p1, void *p2, void *p3, int prio, u32_t options, s32_t delay) { - struct k_thread *new_thread = (struct k_thread *)stack; + struct k_thread *new_thread = + (struct k_thread *)K_THREAD_STACK_BUFFER(stack); - return k_thread_create(new_thread, stack, stack_size, entry, p1, p2, + return k_thread_create(new_thread, stack, + stack_size, entry, p1, p2, p3, prio, options, delay); } diff --git a/kernel/work_q.c b/kernel/work_q.c index e4867a63c51..1590297e996 100644 --- a/kernel/work_q.c +++ b/kernel/work_q.c @@ -43,7 +43,7 @@ static void work_q_main(void *work_q_ptr, void *p2, void *p3) } } -void k_work_q_start(struct k_work_q *work_q, char *stack, +void k_work_q_start(struct k_work_q *work_q, k_thread_stack_t stack, size_t stack_size, int prio) { k_fifo_init(&work_q->fifo); diff --git a/subsys/net/lib/app/client.c b/subsys/net/lib/app/client.c index 7d19f117539..431093db097 100644 --- a/subsys/net/lib/app/client.c +++ b/subsys/net/lib/app/client.c @@ -696,7 +696,7 @@ int net_app_client_tls(struct net_app_ctx *ctx, const char *cert_host, net_app_entropy_src_cb_t entropy_src_cb, struct k_mem_pool *pool, - u8_t *stack, + k_thread_stack_t stack, size_t stack_size) { if (!request_buf || request_buf_len == 0) { diff --git a/subsys/net/lib/app/server.c b/subsys/net/lib/app/server.c index 06b10d31762..78e32280a98 100644 --- a/subsys/net/lib/app/server.c +++ b/subsys/net/lib/app/server.c @@ -360,7 +360,7 @@ int net_app_server_tls(struct net_app_ctx *ctx, net_app_cert_cb_t cert_cb, net_app_entropy_src_cb_t entropy_src_cb, struct k_mem_pool *pool, - u8_t *stack, + k_thread_stack_t stack, size_t stack_size) { if (!request_buf || request_buf_len == 0) { diff --git a/subsys/net/lib/http/http_client.c b/subsys/net/lib/http/http_client.c index d65fa5e7132..1f2e80c2d6f 100644 --- a/subsys/net/lib/http/http_client.c +++ b/subsys/net/lib/http/http_client.c @@ -1635,7 +1635,7 @@ int https_client_init(struct http_client_ctx *ctx, const char *cert_host, https_entropy_src_cb_t entropy_src_cb, struct k_mem_pool *pool, - u8_t *https_stack, + k_thread_stack_t https_stack, size_t https_stack_size) { int ret; diff --git a/subsys/net/lib/http/http_server.c b/subsys/net/lib/http/http_server.c index d0198172a7f..adc4f00fdb8 100644 --- a/subsys/net/lib/http/http_server.c +++ b/subsys/net/lib/http/http_server.c @@ -1575,7 +1575,7 @@ int https_server_init(struct http_server_ctx *ctx, https_server_cert_cb_t cert_cb, https_entropy_src_cb_t entropy_src_cb, struct k_mem_pool *pool, - u8_t *https_stack, + k_thread_stack_t https_stack, size_t https_stack_size) { int ret; diff --git a/tests/kernel/fatal/src/main.c b/tests/kernel/fatal/src/main.c index 805452a7f7d..e675b665ee6 100644 --- a/tests/kernel/fatal/src/main.c +++ b/tests/kernel/fatal/src/main.c @@ -17,7 +17,8 @@ static K_THREAD_STACK_DEFINE(alt_stack, STACKSIZE); #ifdef CONFIG_STACK_SENTINEL #define OVERFLOW_STACKSIZE 1024 -static char *overflow_stack = alt_stack + (STACKSIZE - OVERFLOW_STACKSIZE); +static k_thread_stack_t overflow_stack = + alt_stack + (STACKSIZE - OVERFLOW_STACKSIZE); #else #define OVERFLOW_STACKSIZE STACKSIZE #endif