Fix threadapply test

The current test case leaves detached processes running at the end of
the test.  This patch changes the test to use a barrier wait to ensure all
processes exit cleanly at the end of the tests.

gdb/testsuite/ChangeLog:

2021-06-02  Carl Love  <cel@us.ibm.com>

	* gdb.threads/threadapply.c: Add global mybarrier.
	(main): Add pthread_barrier_init.
	(thread_function): Replace while loop with myp increment and
	pthread_barrier_wait.
This commit is contained in:
Carl Love 2021-05-21 11:29:26 -05:00
parent 8f46711443
commit 170960e8e1
2 changed files with 12 additions and 7 deletions

View file

@ -1,3 +1,10 @@
2021-06-02 Carl Love <cel@us.ibm.com>
* gdb.threads/threadapply.c: Add global mybarrier.
(main): Add pthread_barrier_init.
(thread_function): Replace while loop with myp increment and
pthread_barrier_wait.
2021-06-02 Andrew Burgess <andrew.burgess@embecosm.com>
* lib/gdb.exp (gdb_compile): Only add the -J option when using a

View file

@ -27,6 +27,7 @@ void *thread_function(void *arg); /* Pointer to function executed by each thread
#define NUM 5
unsigned int args[NUM+1];
pthread_barrier_t mybarrier;
int main() {
int res;
@ -35,6 +36,8 @@ int main() {
void *thread_result;
long i;
pthread_barrier_init(&mybarrier, NULL, NUM + 1);
for (i = 0; i < NUM; i++)
{
args[i] = 1; /* Init value. */
@ -69,12 +72,7 @@ void *thread_function(void *arg) {
int my_number = (long) arg;
int *myp = (int *) &args[my_number];
/* Don't run forever. Run just short of it :) */
while (*myp > 0)
{
(*myp) ++; /* Loop increment. */
}
pthread_exit(NULL);
(*myp) ++; /* Increment so parent knows child started. */
pthread_barrier_wait(&mybarrier);
}