diff options
Diffstat (limited to 'nptl/threads.h')
-rw-r--r-- | nptl/threads.h | 28 |
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 */ |