mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 15:11:31 +00:00
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: Breno Leitao <leitao@debian.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
b0dc0f8618
commit
693b31b2fc
@ -98,7 +98,7 @@ void texasr(void *in)
|
||||
|
||||
int test_tmspr()
|
||||
{
|
||||
pthread_t thread;
|
||||
pthread_t *thread;
|
||||
int thread_num;
|
||||
unsigned long i;
|
||||
|
||||
@ -107,21 +107,28 @@ int test_tmspr()
|
||||
/* To cause some context switching */
|
||||
thread_num = 10 * sysconf(_SC_NPROCESSORS_ONLN);
|
||||
|
||||
/* Test TFIAR and TFHAR */
|
||||
for (i = 0 ; i < thread_num ; i += 2){
|
||||
if (pthread_create(&thread, NULL, (void*)tfiar_tfhar, (void *)i))
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
if (pthread_join(thread, NULL) != 0)
|
||||
thread = malloc(thread_num * sizeof(pthread_t));
|
||||
if (thread == NULL)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
/* Test TEXASR */
|
||||
for (i = 0 ; i < thread_num ; i++){
|
||||
if (pthread_create(&thread, NULL, (void*)texasr, (void *)i))
|
||||
/* Test TFIAR and TFHAR */
|
||||
for (i = 0; i < thread_num; i += 2) {
|
||||
if (pthread_create(&thread[i], NULL, (void *)tfiar_tfhar,
|
||||
(void *)i))
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
if (pthread_join(thread, NULL) != 0)
|
||||
return EXIT_FAILURE;
|
||||
/* Test TEXASR */
|
||||
for (i = 1; i < thread_num; i += 2) {
|
||||
if (pthread_create(&thread[i], NULL, (void *)texasr, (void *)i))
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
for (i = 0; i < thread_num; i++) {
|
||||
if (pthread_join(thread[i], NULL) != 0)
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
free(thread);
|
||||
|
||||
if (passed)
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user