kernel: move stuff into z_thread_single_abort() The same code was being copypasted in k_thread_abort() implementations, just move into z_thread_single_abort(). Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
diff --git a/arch/arm/core/aarch32/cortex_m/thread_abort.c b/arch/arm/core/aarch32/cortex_m/thread_abort.c index e2a55da..7c8ccd1 100644 --- a/arch/arm/core/aarch32/cortex_m/thread_abort.c +++ b/arch/arm/core/aarch32/cortex_m/thread_abort.c
@@ -28,11 +28,7 @@ void z_impl_k_thread_abort(k_tid_t thread) { - __ASSERT(!(thread->base.user_options & K_ESSENTIAL), - "essential thread aborted"); - z_thread_single_abort(thread); - z_thread_monitor_exit(thread); if (_current == thread) { if (arch_is_in_isr()) {
diff --git a/arch/posix/core/posix_core.c b/arch/posix/core/posix_core.c index b44d428..dfb71b5 100644 --- a/arch/posix/core/posix_core.c +++ b/arch/posix/core/posix_core.c
@@ -493,11 +493,7 @@ key = irq_lock(); - __ASSERT(!(thread->base.user_options & K_ESSENTIAL), - "essential thread aborted"); - z_thread_single_abort(thread); - z_thread_monitor_exit(thread); if (_current == thread) { if (tstatus->aborted == 0) { /* LCOV_EXCL_BR_LINE */
diff --git a/kernel/sched.c b/kernel/sched.c index 28a4964..cdbfa94 100644 --- a/kernel/sched.c +++ b/kernel/sched.c
@@ -479,6 +479,9 @@ void z_thread_single_abort(struct k_thread *thread) { + __ASSERT(!(thread->base.user_options & K_ESSENTIAL), + "essential thread aborted"); + if (thread->fn_abort != NULL) { thread->fn_abort(); } @@ -554,6 +557,7 @@ } sys_trace_thread_abort(thread); + z_thread_monitor_exit(thread); } static void unready_thread(struct k_thread *thread)
diff --git a/kernel/thread_abort.c b/kernel/thread_abort.c index 65f6f4f..561f0be 100644 --- a/kernel/thread_abort.c +++ b/kernel/thread_abort.c
@@ -27,11 +27,7 @@ #if !defined(CONFIG_ARCH_HAS_THREAD_ABORT) void z_impl_k_thread_abort(k_tid_t thread) { - __ASSERT((thread->base.user_options & K_ESSENTIAL) == 0U, - "essential thread aborted"); - z_thread_single_abort(thread); - z_thread_monitor_exit(thread); /* If we're in an interrupt handler, we reschedule on the way out * anyway, nothing needs to be done here.