xref: /freebsd/tools/regression/tls/ttls2/ttls2.c (revision 2546665afcaf0d53dc2c7058fee96354b3680f5a)
12546665aSDoug Rabson /* $FreeBSD$ */
22546665aSDoug Rabson 
32546665aSDoug Rabson #include <stdio.h>
42546665aSDoug Rabson #include <pthread.h>
52546665aSDoug Rabson 
62546665aSDoug Rabson int __thread i;
72546665aSDoug Rabson 
82546665aSDoug Rabson void *
92546665aSDoug Rabson foo1(void *arg)
102546665aSDoug Rabson {
112546665aSDoug Rabson 	printf("thread %p, &i = %p\n", pthread_self(), &i);
122546665aSDoug Rabson 	for (i = 0; i < 10; i++) {
132546665aSDoug Rabson 		printf("thread %p, i = %d\n", pthread_self(), i);
142546665aSDoug Rabson 		sleep(1);
152546665aSDoug Rabson 	}
162546665aSDoug Rabson }
172546665aSDoug Rabson 
182546665aSDoug Rabson void *
192546665aSDoug Rabson foo2(void *arg)
202546665aSDoug Rabson {
212546665aSDoug Rabson 	printf("thread %p, &i = %p\n", pthread_self(), &i);
222546665aSDoug Rabson 	for (i = 10; i > 0; i--) {
232546665aSDoug Rabson 		printf("thread %p, i = %d\n", pthread_self(), i);
242546665aSDoug Rabson 		sleep(1);
252546665aSDoug Rabson 	}
262546665aSDoug Rabson }
272546665aSDoug Rabson 
282546665aSDoug Rabson int main(int argc, char** argv)
292546665aSDoug Rabson {
302546665aSDoug Rabson 	pthread_t t1, t2;
312546665aSDoug Rabson 
322546665aSDoug Rabson 	pthread_create(&t1, 0, foo1, 0);
332546665aSDoug Rabson 	pthread_create(&t2, 0, foo2, 0);
342546665aSDoug Rabson 	pthread_join(t1, 0);
352546665aSDoug Rabson 	pthread_join(t2, 0);
362546665aSDoug Rabson }
37