Commit 693b31b2 authored by Breno Leitao's avatar Breno Leitao Committed by Michael Ellerman

powerpc/selftests: Wait all threads to join

Test tm-tmspr might exit before all threads stop executing, because it just
waits for the very last thread to join before proceeding/exiting.

This patch makes sure that all threads that were created will join before
proceeding/exiting.

This patch also guarantees that the amount of threads being created is equal
to thread_num.
Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent b0dc0f86
...@@ -98,7 +98,7 @@ void texasr(void *in) ...@@ -98,7 +98,7 @@ void texasr(void *in)
int test_tmspr() int test_tmspr()
{ {
pthread_t thread; pthread_t *thread;
int thread_num; int thread_num;
unsigned long i; unsigned long i;
...@@ -107,21 +107,28 @@ int test_tmspr() ...@@ -107,21 +107,28 @@ int test_tmspr()
/* To cause some context switching */ /* To cause some context switching */
thread_num = 10 * sysconf(_SC_NPROCESSORS_ONLN); thread_num = 10 * sysconf(_SC_NPROCESSORS_ONLN);
thread = malloc(thread_num * sizeof(pthread_t));
if (thread == NULL)
return EXIT_FAILURE;
/* Test TFIAR and TFHAR */ /* Test TFIAR and TFHAR */
for (i = 0 ; i < thread_num ; i += 2){ for (i = 0; i < thread_num; i += 2) {
if (pthread_create(&thread, NULL, (void*)tfiar_tfhar, (void *)i)) if (pthread_create(&thread[i], NULL, (void *)tfiar_tfhar,
(void *)i))
return EXIT_FAILURE; return EXIT_FAILURE;
} }
if (pthread_join(thread, NULL) != 0)
return EXIT_FAILURE;
/* Test TEXASR */ /* Test TEXASR */
for (i = 0 ; i < thread_num ; i++){ for (i = 1; i < thread_num; i += 2) {
if (pthread_create(&thread, NULL, (void*)texasr, (void *)i)) if (pthread_create(&thread[i], NULL, (void *)texasr, (void *)i))
return EXIT_FAILURE; return EXIT_FAILURE;
} }
if (pthread_join(thread, NULL) != 0)
for (i = 0; i < thread_num; i++) {
if (pthread_join(thread[i], NULL) != 0)
return EXIT_FAILURE; return EXIT_FAILURE;
}
free(thread);
if (passed) if (passed)
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment