186d7f5d3SJohn Marino /* Testcase for issue1343 */ 286d7f5d3SJohn Marino #include <stdio.h> 386d7f5d3SJohn Marino #include <stdlib.h> 486d7f5d3SJohn Marino #include <pthread.h> 586d7f5d3SJohn Marino #include <sys/types.h> 686d7f5d3SJohn Marino #include <dirent.h> 786d7f5d3SJohn Marino #include <errno.h> 886d7f5d3SJohn Marino #include <unistd.h> 986d7f5d3SJohn Marino 1086d7f5d3SJohn Marino 1186d7f5d3SJohn Marino tester(void * arg)1286d7f5d3SJohn Marinovoid* tester(void *arg) 1386d7f5d3SJohn Marino { 1486d7f5d3SJohn Marino sleep(2); 1586d7f5d3SJohn Marino } 1686d7f5d3SJohn Marino main(int argc,char * argv[])1786d7f5d3SJohn Marinoint main(int argc, char *argv[]) 1886d7f5d3SJohn Marino { 1986d7f5d3SJohn Marino int i, ret, nthreads; 2086d7f5d3SJohn Marino pthread_t th; 2186d7f5d3SJohn Marino pthread_t *threads; 2286d7f5d3SJohn Marino 2386d7f5d3SJohn Marino if (argc <= 1) 2486d7f5d3SJohn Marino { 2586d7f5d3SJohn Marino printf("Need one argument\n"); 2686d7f5d3SJohn Marino exit(1); 2786d7f5d3SJohn Marino } 2886d7f5d3SJohn Marino 2986d7f5d3SJohn Marino nthreads = atoi(argv[1]); 3086d7f5d3SJohn Marino threads = malloc(nthreads * sizeof(pthread_t)); 3186d7f5d3SJohn Marino if (threads == NULL) 3286d7f5d3SJohn Marino return 2; 3386d7f5d3SJohn Marino 3486d7f5d3SJohn Marino printf("Trying with %d threads\n", nthreads); 3586d7f5d3SJohn Marino 3686d7f5d3SJohn Marino printf("Creating tester threads\n"); 3786d7f5d3SJohn Marino for (i = 0; i < nthreads; i++) 3886d7f5d3SJohn Marino pthread_create(&threads[i], NULL, tester, NULL); 3986d7f5d3SJohn Marino 4086d7f5d3SJohn Marino sleep(5); 4186d7f5d3SJohn Marino 4286d7f5d3SJohn Marino printf("Starting join procedure...\n"); 4386d7f5d3SJohn Marino for (i = 0; i < nthreads; i++) 4486d7f5d3SJohn Marino pthread_join(threads[i], NULL); 4586d7f5d3SJohn Marino 4686d7f5d3SJohn Marino printf("Done!\n"); 4786d7f5d3SJohn Marino return 0; 4886d7f5d3SJohn Marino } 49