aboutsummaryrefslogtreecommitdiff
path: root/nptl/threads.h
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/threads.h')
-rw-r--r--nptl/threads.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/nptl/threads.h b/nptl/threads.h
index e46b1b7..9800f93 100644
--- a/nptl/threads.h
+++ b/nptl/threads.h
@@ -27,6 +27,14 @@ __BEGIN_DECLS
#include <bits/pthreadtypes-arch.h>
#include <bits/types/struct_timespec.h>
+#ifndef __cplusplus
+# define thread_local _Thread_local
+#endif
+
+#define TSS_DTOR_ITERATIONS 4
+typedef unsigned int tss_t;
+typedef void (*tss_dtor_t) (void*);
+
typedef unsigned long int thrd_t;
typedef int (*thrd_start_t) (void*);
@@ -174,6 +182,26 @@ extern int cnd_timedwait (cnd_t *__restrict __cond,
resources. */
extern void cnd_destroy (cnd_t *__COND);
+
+/* Thread specific storage functions. */
+
+/* Create new thread-specific storage key and stores it in the object pointed
+ by __TSS_ID. If __DESTRUCTOR is not NULL, the function will be called when
+ the thread terminates. */
+extern int tss_create (tss_t *__tss_id, tss_dtor_t __destructor);
+
+/* Return the value held in thread-specific storage for the current thread
+ identified by __TSS_ID. */
+extern void *tss_get (tss_t __tss_id);
+
+/* Sets the value of the thread-specific storage identified by __TSS_ID for
+ the current thread to __VAL. */
+extern int tss_set (tss_t __tss_id, void *__val);
+
+/* Destroys the thread-specific storage identified by __TSS_ID. The
+ destructor is not called until thrd_exit is called. */
+extern void tss_delete (tss_t __tss_id);
+
__END_DECLS
#endif /* _THREADS_H */