aboutsummaryrefslogtreecommitdiff
path: root/tools/regression/tls/ttls2
diff options
context:
space:
mode:
Diffstat (limited to 'tools/regression/tls/ttls2')
-rw-r--r--tools/regression/tls/ttls2/Makefile6
-rw-r--r--tools/regression/tls/ttls2/ttls2.c41
2 files changed, 47 insertions, 0 deletions
diff --git a/tools/regression/tls/ttls2/Makefile b/tools/regression/tls/ttls2/Makefile
new file mode 100644
index 000000000000..782808823efe
--- /dev/null
+++ b/tools/regression/tls/ttls2/Makefile
@@ -0,0 +1,6 @@
+PROG= ttls2
+LIBADD= pthread
+MAN=
+DEBUG_FLAGS= -g
+
+.include <bsd.prog.mk>
diff --git a/tools/regression/tls/ttls2/ttls2.c b/tools/regression/tls/ttls2/ttls2.c
new file mode 100644
index 000000000000..6fe316e15128
--- /dev/null
+++ b/tools/regression/tls/ttls2/ttls2.c
@@ -0,0 +1,41 @@
+
+#include <pthread.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int __thread i;
+
+void *
+foo1(void *arg)
+{
+ printf("thread %p, &i = %p\n", pthread_self(), &i);
+ for (i = 0; i < 10; i++) {
+ printf("thread %p, i = %d\n", pthread_self(), i);
+ sleep(1);
+ }
+ return (NULL);
+}
+
+void *
+foo2(void *arg)
+{
+ printf("thread %p, &i = %p\n", pthread_self(), &i);
+ for (i = 10; i > 0; i--) {
+ printf("thread %p, i = %d\n", pthread_self(), i);
+ sleep(1);
+ }
+ return (NULL);
+}
+
+int
+main(int argc, char** argv)
+{
+ pthread_t t1, t2;
+
+ pthread_create(&t1, 0, foo1, 0);
+ pthread_create(&t2, 0, foo2, 0);
+ pthread_join(t1, 0);
+ pthread_join(t2, 0);
+
+ return (0);
+}