From 6f8bb1a346fd60f51eaefd8efa7364a3abf86dc2 Mon Sep 17 00:00:00 2001 From: Daniel Leung Date: Fri, 10 Jan 2025 15:46:29 -0800 Subject: [PATCH] tests: kernel/msgq_api: add k_thread_join after k_thread_abort On SMP systems, threads going through k_thread_abort() may still be running while the test moves on to the next one. This creates some interferences and may result in the next test failing. So add k_thread_join() after k_thread_abort() to make sure those threads have stopped before moving on. Signed-off-by: Daniel Leung --- tests/kernel/msgq/msgq_api/src/test_msgq_contexts.c | 9 +++++++++ tests/kernel/msgq/msgq_api/src/test_msgq_purge.c | 1 + 2 files changed, 10 insertions(+) diff --git a/tests/kernel/msgq/msgq_api/src/test_msgq_contexts.c b/tests/kernel/msgq/msgq_api/src/test_msgq_contexts.c index bb217427fe3d..a8f1edd9a040 100644 --- a/tests/kernel/msgq/msgq_api/src/test_msgq_contexts.c +++ b/tests/kernel/msgq/msgq_api/src/test_msgq_contexts.c @@ -103,6 +103,8 @@ static void msgq_thread(struct k_msgq *pmsgq) /**TESTPOINT: msgq purge*/ purge_msgq(pmsgq); + + k_thread_join(tid, K_FOREVER); } static void thread_entry_overflow(void *p1, void *p2, void *p3) @@ -145,6 +147,8 @@ static void msgq_thread_overflow(struct k_msgq *pmsgq) /**TESTPOINT: msgq purge*/ k_msgq_purge(pmsgq); + + k_thread_join(tid, K_FOREVER); } static void msgq_isr(struct k_msgq *pmsgq) @@ -196,6 +200,9 @@ static void msgq_thread_data_passing(struct k_msgq *pmsgq) /**TESTPOINT: msgq purge*/ k_msgq_purge(pmsgq); + + k_thread_join(tid, K_FOREVER); + k_thread_join(tid1, K_FOREVER); } static void get_empty_entry(void *p1, void *p2, void *p3) @@ -417,6 +424,7 @@ ZTEST(msgq_api_1cpu, test_msgq_empty) zassert_equal(ret, 0); k_thread_abort(tid); + k_thread_join(tid, K_FOREVER); } /** @@ -449,6 +457,7 @@ ZTEST(msgq_api_1cpu, test_msgq_full) /* that putting thread is being blocked now */ zassert_equal(tid->base.thread_state, _THREAD_PENDING); k_thread_abort(tid); + k_thread_join(tid, K_FOREVER); } /** diff --git a/tests/kernel/msgq/msgq_api/src/test_msgq_purge.c b/tests/kernel/msgq/msgq_api/src/test_msgq_purge.c index 1527824e0273..4f6a5ef63518 100644 --- a/tests/kernel/msgq/msgq_api/src/test_msgq_purge.c +++ b/tests/kernel/msgq/msgq_api/src/test_msgq_purge.c @@ -44,6 +44,7 @@ static void purge_when_put(struct k_msgq *q) } k_thread_abort(&tdata); + k_thread_join(&tdata, K_FOREVER); } /**