summaryrefslogtreecommitdiff
path: root/test/nptl/tst-tls5.h
diff options
context:
space:
mode:
authorAustin Foxley <austinf@cetoncorp.com>2009-10-17 12:39:06 -0700
committerAustin Foxley <austinf@cetoncorp.com>2009-10-17 12:39:06 -0700
commit75accc3bc3c164ac6063c384c98f0dfa7d489dcc (patch)
treea17543fc0ddbfd1478f4b68123bc32f12a31176f /test/nptl/tst-tls5.h
parenta319d590551ff74bbc4de51243e2d5f20ac4c7fd (diff)
test/nptl/: tests for NPTL
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
Diffstat (limited to 'test/nptl/tst-tls5.h')
-rw-r--r--test/nptl/tst-tls5.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/nptl/tst-tls5.h b/test/nptl/tst-tls5.h
new file mode 100644
index 000000000..b7c14eb82
--- /dev/null
+++ b/test/nptl/tst-tls5.h
@@ -0,0 +1,28 @@
+#include <stdint.h>
+#include <stdlib.h>
+#include <tls.h>
+
+#if USE_TLS && HAVE___THREAD
+
+struct tls_obj
+{
+ const char *name;
+ uintptr_t addr;
+ size_t size;
+ size_t align;
+};
+extern struct tls_obj tls_registry[];
+
+#define TLS_REGISTER(x) \
+static void __attribute__((constructor)) \
+tls_register_##x (void) \
+{ \
+ size_t i; \
+ for (i = 0; tls_registry[i].name; ++i); \
+ tls_registry[i].name = #x; \
+ tls_registry[i].addr = (uintptr_t) &x; \
+ tls_registry[i].size = sizeof (x); \
+ tls_registry[i].align = __alignof__ (x); \
+}
+
+#endif