From 62eb7d99dcc9a5f2111d067f6cbad482759ab5e9 Mon Sep 17 00:00:00 2001 From: Andrew Boie Date: Thu, 23 Apr 2020 11:17:14 -0700 Subject: [PATCH] arch_interface: remove unnecessary params arch_new_thread() passes along the thread priority and option flags, but these are already initialized in thread->base and can be accessed there if needed. Signed-off-by: Andrew Boie --- arch/arc/core/thread.c | 14 +++++--------- arch/arm/core/aarch32/thread.c | 7 +++---- arch/arm/core/aarch64/thread.c | 5 +---- arch/nios2/core/thread.c | 3 +-- arch/posix/core/thread.c | 3 +-- arch/riscv/core/thread.c | 3 +-- arch/x86/core/ia32/thread.c | 3 +-- arch/x86/core/intel64/thread.c | 3 +-- arch/xtensa/core/xtensa-asm2.c | 3 +-- kernel/include/kernel_arch_interface.h | 9 ++++----- kernel/thread.c | 3 +-- 11 files changed, 20 insertions(+), 36 deletions(-) diff --git a/arch/arc/core/thread.c b/arch/arc/core/thread.c index 0190b2bd34f..bede173319d 100644 --- a/arch/arc/core/thread.c +++ b/arch/arc/core/thread.c @@ -45,23 +45,18 @@ struct init_stack_frame { * z_thread_entry() return address, that points at z_thread_entry() * and status register. * - * is currently unused. - * * @param pStackmem the pointer to aligned stack memory * @param stackSize the stack size in bytes * @param pEntry thread entry point routine * @param parameter1 first param to entry point * @param parameter2 second param to entry point * @param parameter3 third param to entry point - * @param priority thread priority - * @param options thread options: K_ESSENTIAL * * @return N/A */ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t stackSize, k_thread_entry_t pEntry, - void *parameter1, void *parameter2, void *parameter3, - int priority, unsigned int options) + void *parameter1, void *parameter2, void *parameter3) { char *pStackMem = Z_THREAD_STACK_BUFFER(stack); @@ -73,6 +68,7 @@ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t stackAdjSize; size_t offset = 0; + bool is_user = (thread->base.user_options & K_USER) != 0; stackAdjSize = Z_ARC_MPU_SIZE_ALIGN(stackSize); @@ -83,7 +79,7 @@ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, offset = stackAdjSize - stackSize; #endif - if (options & K_USER) { + if (is_user) { #ifdef CONFIG_GEN_PRIV_STACKS thread->arch.priv_stack_start = (uint32_t)z_priv_stack_find(thread->stack_obj); @@ -138,7 +134,7 @@ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, /* fill init context */ pInitCtx->status32 = 0U; - if (options & K_USER) { + if (is_user) { pInitCtx->pc = ((uint32_t)z_user_thread_entry_wrapper); } else { pInitCtx->pc = ((uint32_t)z_thread_entry_wrapper); @@ -185,7 +181,7 @@ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, pInitCtx->status32 |= _ARC_V2_STATUS32_SC; #endif #ifdef CONFIG_USERSPACE - if (options & K_USER) { + if (is_user) { thread->arch.u_stack_top = (uint32_t)pStackMem; thread->arch.u_stack_base = (uint32_t)stackEnd; thread->arch.k_stack_top = diff --git a/arch/arm/core/aarch32/thread.c b/arch/arm/core/aarch32/thread.c index 14893cb08c7..25de61eceb2 100644 --- a/arch/arm/core/aarch32/thread.c +++ b/arch/arm/core/aarch32/thread.c @@ -30,8 +30,7 @@ */ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t stackSize, k_thread_entry_t pEntry, - void *parameter1, void *parameter2, void *parameter3, - int priority, unsigned int options) + void *parameter1, void *parameter2, void *parameter3) { char *pStackMem = Z_THREAD_STACK_BUFFER(stack); char *stackEnd; @@ -81,7 +80,7 @@ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, * .start and .size. * */ - if ((options & K_FP_REGS) != 0) { + if ((thread->base.user_options & K_FP_REGS) != 0) { pStackMem += MPU_GUARD_ALIGN_AND_SIZE_FLOAT - MPU_GUARD_ALIGN_AND_SIZE; stackSize -= MPU_GUARD_ALIGN_AND_SIZE_FLOAT @@ -104,7 +103,7 @@ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, (char *)top_of_stack_offset - sizeof(struct __basic_sf))); #if defined(CONFIG_USERSPACE) - if ((options & K_USER) != 0) { + if ((thread->base.user_options & K_USER) != 0) { pInitCtx->basic.pc = (uint32_t)arch_user_mode_enter; } else { pInitCtx->basic.pc = (uint32_t)z_thread_entry; diff --git a/arch/arm/core/aarch64/thread.c b/arch/arm/core/aarch64/thread.c index a1c876aafa7..48e942ed1da 100644 --- a/arch/arm/core/aarch64/thread.c +++ b/arch/arm/core/aarch64/thread.c @@ -33,8 +33,6 @@ * @param parameter1 entry point to the first param * @param parameter2 entry point to the second param * @param parameter3 entry point to the third param - * @param priority thread priority - * @param options thread options: K_ESSENTIAL, K_FP_REGS * * @return N/A */ @@ -62,8 +60,7 @@ struct init_stack_frame { void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t stackSize, k_thread_entry_t pEntry, - void *parameter1, void *parameter2, void *parameter3, - int priority, unsigned int options) + void *parameter1, void *parameter2, void *parameter3) { char *pStackMem = Z_THREAD_STACK_BUFFER(stack); char *stackEnd; diff --git a/arch/nios2/core/thread.c b/arch/nios2/core/thread.c index f339eec3470..e917cc23353 100644 --- a/arch/nios2/core/thread.c +++ b/arch/nios2/core/thread.c @@ -30,8 +30,7 @@ struct init_stack_frame { void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t stack_size, k_thread_entry_t thread_func, - void *arg1, void *arg2, void *arg3, - int priority, unsigned int options) + void *arg1, void *arg2, void *arg3) { char *stack_memory = Z_THREAD_STACK_BUFFER(stack); struct init_stack_frame *iframe; diff --git a/arch/posix/core/thread.c b/arch/posix/core/thread.c index dc1122a9da7..d9ebad8170e 100644 --- a/arch/posix/core/thread.c +++ b/arch/posix/core/thread.c @@ -26,8 +26,7 @@ */ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t stack_size, k_thread_entry_t thread_func, - void *arg1, void *arg2, void *arg3, - int priority, unsigned int options) + void *arg1, void *arg2, void *arg3) { char *stack_memory = Z_THREAD_STACK_BUFFER(stack); diff --git a/arch/riscv/core/thread.c b/arch/riscv/core/thread.c index 56c3cb9e747..94a041aab1a 100644 --- a/arch/riscv/core/thread.c +++ b/arch/riscv/core/thread.c @@ -14,8 +14,7 @@ void z_thread_entry_wrapper(k_thread_entry_t thread, void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t stack_size, k_thread_entry_t thread_func, - void *arg1, void *arg2, void *arg3, - int priority, unsigned int options) + void *arg1, void *arg2, void *arg3) { char *stack_memory = Z_THREAD_STACK_BUFFER(stack); diff --git a/arch/x86/core/ia32/thread.c b/arch/x86/core/ia32/thread.c index 39fe3568968..267417e73e6 100644 --- a/arch/x86/core/ia32/thread.c +++ b/arch/x86/core/ia32/thread.c @@ -62,8 +62,7 @@ int arch_float_disable(struct k_thread *thread) void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t stack_size, k_thread_entry_t entry, - void *parameter1, void *parameter2, void *parameter3, - int priority, unsigned int options) + void *parameter1, void *parameter2, void *parameter3) { char *stack_buf; char *stack_high; diff --git a/arch/x86/core/intel64/thread.c b/arch/x86/core/intel64/thread.c index ac67d8cdb53..4f2e586fb29 100644 --- a/arch/x86/core/intel64/thread.c +++ b/arch/x86/core/intel64/thread.c @@ -13,8 +13,7 @@ extern void x86_sse_init(struct k_thread *); /* in locore.S */ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t stack_size, k_thread_entry_t entry, - void *parameter1, void *parameter2, void *parameter3, - int priority, unsigned int options) + void *parameter1, void *parameter2, void *parameter3) { void *switch_entry; diff --git a/arch/xtensa/core/xtensa-asm2.c b/arch/xtensa/core/xtensa-asm2.c index b17ec722f80..594cbe809b7 100644 --- a/arch/xtensa/core/xtensa-asm2.c +++ b/arch/xtensa/core/xtensa-asm2.c @@ -58,8 +58,7 @@ void *xtensa_init_stack(int *stack_top, void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack, size_t sz, k_thread_entry_t entry, - void *p1, void *p2, void *p3, - int prio, unsigned int opts) + void *p1, void *p2, void *p3) { char *base = Z_THREAD_STACK_BUFFER(stack); char *top = base + sz; diff --git a/kernel/include/kernel_arch_interface.h b/kernel/include/kernel_arch_interface.h index 813cda84a44..967180b6dd7 100644 --- a/kernel/include/kernel_arch_interface.h +++ b/kernel/include/kernel_arch_interface.h @@ -58,6 +58,8 @@ void arch_busy_wait(uint32_t usec_to_wait); * be called with the true bounds of the available stack buffer within the * thread's stack object. * + * Fields in thread->base will be initialized when this is called. + * * @param thread Pointer to uninitialized struct k_thread * @param pStack Pointer to the stack space. * @param stackSize Stack size in bytes. @@ -65,13 +67,10 @@ void arch_busy_wait(uint32_t usec_to_wait); * @param p1 1st entry point parameter. * @param p2 2nd entry point parameter. * @param p3 3rd entry point parameter. - * @param prio Thread priority. - * @param options Thread options. */ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *pStack, - size_t stackSize, k_thread_entry_t entry, - void *p1, void *p2, void *p3, - int prio, unsigned int options); + size_t stackSize, k_thread_entry_t entry, + void *p1, void *p2, void *p3); #ifdef CONFIG_USE_SWITCH /** diff --git a/kernel/thread.c b/kernel/thread.c index ac665217ab5..7bed51f4caf 100644 --- a/kernel/thread.c +++ b/kernel/thread.c @@ -484,8 +484,7 @@ void z_setup_new_thread(struct k_thread *new_thread, /* Initialize various struct k_thread members */ z_init_thread_base(&new_thread->base, prio, _THREAD_PRESTART, options); - arch_new_thread(new_thread, stack, stack_size, entry, p1, p2, p3, - prio, options); + arch_new_thread(new_thread, stack, stack_size, entry, p1, p2, p3); /* static threads overwrite it afterwards with real value */ new_thread->init_data = NULL; new_thread->fn_abort = NULL;