1*86d7f5d3SJohn Marino /* Testcase for issue1343 */ 2*86d7f5d3SJohn Marino #include <stdio.h> 3*86d7f5d3SJohn Marino #include <stdlib.h> 4*86d7f5d3SJohn Marino #include <pthread.h> 5*86d7f5d3SJohn Marino #include <sys/types.h> 6*86d7f5d3SJohn Marino #include <dirent.h> 7*86d7f5d3SJohn Marino #include <errno.h> 8*86d7f5d3SJohn Marino #include <unistd.h> 9*86d7f5d3SJohn Marino 10*86d7f5d3SJohn Marino 11*86d7f5d3SJohn Marino tester(void * arg)12*86d7f5d3SJohn Marinovoid* tester(void *arg) 13*86d7f5d3SJohn Marino { 14*86d7f5d3SJohn Marino sleep(2); 15*86d7f5d3SJohn Marino } 16*86d7f5d3SJohn Marino main(int argc,char * argv[])17*86d7f5d3SJohn Marinoint main(int argc, char *argv[]) 18*86d7f5d3SJohn Marino { 19*86d7f5d3SJohn Marino int i, ret, nthreads; 20*86d7f5d3SJohn Marino pthread_t th; 21*86d7f5d3SJohn Marino pthread_t *threads; 22*86d7f5d3SJohn Marino 23*86d7f5d3SJohn Marino if (argc <= 1) 24*86d7f5d3SJohn Marino { 25*86d7f5d3SJohn Marino printf("Need one argument\n"); 26*86d7f5d3SJohn Marino exit(1); 27*86d7f5d3SJohn Marino } 28*86d7f5d3SJohn Marino 29*86d7f5d3SJohn Marino nthreads = atoi(argv[1]); 30*86d7f5d3SJohn Marino threads = malloc(nthreads * sizeof(pthread_t)); 31*86d7f5d3SJohn Marino if (threads == NULL) 32*86d7f5d3SJohn Marino return 2; 33*86d7f5d3SJohn Marino 34*86d7f5d3SJohn Marino printf("Trying with %d threads\n", nthreads); 35*86d7f5d3SJohn Marino 36*86d7f5d3SJohn Marino printf("Creating tester threads\n"); 37*86d7f5d3SJohn Marino for (i = 0; i < nthreads; i++) 38*86d7f5d3SJohn Marino pthread_create(&threads[i], NULL, tester, NULL); 39*86d7f5d3SJohn Marino 40*86d7f5d3SJohn Marino sleep(5); 41*86d7f5d3SJohn Marino 42*86d7f5d3SJohn Marino printf("Starting join procedure...\n"); 43*86d7f5d3SJohn Marino for (i = 0; i < nthreads; i++) 44*86d7f5d3SJohn Marino pthread_join(threads[i], NULL); 45*86d7f5d3SJohn Marino 46*86d7f5d3SJohn Marino printf("Done!\n"); 47*86d7f5d3SJohn Marino return 0; 48*86d7f5d3SJohn Marino } 49