From dbe38740795107c657922b58b3fe1050766edd01 Mon Sep 17 00:00:00 2001 From: Daniel Leung Date: Tue, 30 Aug 2022 12:40:03 -0700 Subject: [PATCH] tests: kernel/smp: wait for threads to exits between tests This adds a bunch of k_thread_join() to make sure threads spawned for a test are no longer running between exiting that test. This prevents interference between tests if some threads are still running when assumed not. Signed-off-by: Daniel Leung --- tests/kernel/smp/src/main.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/kernel/smp/src/main.c b/tests/kernel/smp/src/main.c index a4a276cea66..4cf755a37ff 100644 --- a/tests/kernel/smp/src/main.c +++ b/tests/kernel/smp/src/main.c @@ -144,6 +144,7 @@ ZTEST(smp, test_smp_coop_threads) } k_thread_abort(tid); + k_thread_join(tid, K_FOREVER); zassert_true(ok, "SMP test failed"); } @@ -184,6 +185,7 @@ ZTEST(smp, test_cpu_id_threads) k_sem_take(&cpuid_sema, K_FOREVER); k_thread_abort(tid); + k_thread_join(tid, K_FOREVER); } static void thread_entry(void *p1, void *p2, void *p3) @@ -245,6 +247,10 @@ static void abort_threads(int num) for (int i = 0; i < num; i++) { k_thread_abort(tinfo[i].tid); } + + for (int i = 0; i < num; i++) { + k_thread_join(tinfo[i].tid, K_FOREVER); + } } static void cleanup_resources(void) @@ -551,6 +557,7 @@ ZTEST(smp, test_get_cpu) k_busy_wait(DELAY_US); k_thread_abort(thread_id); + k_thread_join(thread_id, K_FOREVER); } #ifdef CONFIG_TRACE_SCHED_IPI @@ -1005,8 +1012,10 @@ ZTEST(smp, test_smp_switch_torture) k_sleep(K_MSEC(SLEEP_MS_LONG)); k_thread_abort(&t2); + k_thread_join(&t2, K_FOREVER); for (uintptr_t i = 0; i < THREADS_NUM; i++) { k_thread_abort(&tthread[i]); + k_thread_join(&tthread[i], K_FOREVER); } }