summaryrefslogtreecommitdiff
path: root/src/nonstd/__libc_per_thread.c
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2019-02-08 18:42:39 -0500
committerJakob Kaivo <jkk@ung.org>2019-02-08 18:42:39 -0500
commit7ef8a7379f7f7d09e71ccae2a0b688c3cd80423f (patch)
tree092ab0aed1769117fd7b28b8592f6f96b0e0d5af /src/nonstd/__libc_per_thread.c
parent6acf19370e8adff79cd83b257d3f04aeaf2a59dd (diff)
merge sources into single tree
Diffstat (limited to 'src/nonstd/__libc_per_thread.c')
-rw-r--r--src/nonstd/__libc_per_thread.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/nonstd/__libc_per_thread.c b/src/nonstd/__libc_per_thread.c
new file mode 100644
index 00000000..5cc2f2a5
--- /dev/null
+++ b/src/nonstd/__libc_per_thread.c
@@ -0,0 +1,28 @@
+#include "nonstd/internal.h"
+#include "locale.h"
+#include "nonstd/locale.h"
+
+#if defined __STDC_VERSION__ && 201112L <= __STDC_VERSION__ && !defined __STDC_NO_THREADS__
+#define THREAD_LOCAL static _Thread_local
+#else
+#define THREAD_LOCAL static
+#endif
+
+void *__libc_per_thread(LIBC_INTERNAL variable)
+{
+ THREAD_LOCAL int errno;
+ THREAD_LOCAL struct __locale_t *locale;
+
+ switch (variable) {
+ case ERRNO:
+ return &errno;
+
+ case THREAD_LOCALE:
+ return &locale;
+
+ default:
+ break;
+ }
+
+ return (void*)0;
+}