1 /* 2 * This program tests if a new thread's initial tls data 3 * is clean. 4 * 5 * David Xu <davidxu@freebsd.org> 6 * 7 * $FreeBSD$ 8 */ 9 10 #include <stdio.h> 11 #include <pthread.h> 12 #include <stdlib.h> 13 #include <unistd.h> 14 15 int __thread n; 16 17 void 18 *f1(void *arg) 19 { 20 if (n != 0) { 21 printf("bug, n == %d \n", n); 22 exit(1); 23 } 24 n = 1; 25 return (0); 26 } 27 28 int 29 main(void) 30 { 31 pthread_t td; 32 int i; 33 34 for (i = 0; i < 1000; ++i) { 35 pthread_create(&td, NULL, f1, NULL); 36 pthread_join(td, NULL); 37 } 38 sleep(2); 39 for (i = 0; i < 1000; ++i) { 40 pthread_create(&td, NULL, f1, NULL); 41 pthread_join(td, NULL); 42 } 43 return (0); 44 } 45