Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


TSS(3)                     Library Functions Manual                     TSS(3)

NAME
     tss - thread-specific storage functions

LIBRARY
     POSIX Threads Library (libpthread, -lpthread)

SYNOPSIS
     #include <threads.h>

     typedef void (*tss_dtor_t) (void *)

     int
     tss_create(tss_t *key, tss_dtor_t dtor);

     void
     tss_delete(tss_t key);

     void *
     tss_get(tss_t key);

     int
     tss_set(tss_t key, void *val);

     #define TSS_DTOR_ITERATIONS /* implementation specified */

DESCRIPTION
     There are two groups of storage in C programs:

     -   local storage,

     -   global storage.

     Multithreaded programs in C add the third group thread-specific storage.
     This data is private to thread and every entry of this type has an
     associated tss_t opaque key that is global to all threads in the process.
     A thread using the tss_t * pointer accesses private data.

     The tss_create() function creates a thread-specific storage with the key
     handler with optional destructor dtor.  If the dtor parameter is not
     NULL, then specified appropriate destructor will be called on thread
     termination.  The destructor is not called if a thread called the
     tss_delete() function for the specified key.  If, after all the
     destructors have been called for all non-NULL values with associated
     destructors, there are still some non-NULL values with associated
     destructors, then the process is repeated.  If, after at least
     TSS_DTOR_ITERATIONS iterations of destructor calls for outstanding
     non-NULL values, there are still some non-NULL values with associated
     destructors, the NetBSD implementation stops calling further destructors.
     The thrd_exit(3) function must not be called from a destructor.

     The tss_delete() function frees resources used by the thread-specific
     storage identified by the key object.  This function can be called inside
     the dtor destructor, however the destructor is not called by
     tss_delete().

     The tss_get() and tss_set() functions are used to get and set thread-
     specific storage.

RETURN VALUES
     The tss_create() function returns thrd_success on success, otherwise
     thrd_error on failure.

     The tss_delete() function returns no value.

     The tss_get() returns pointer to thread-specific storage on success or
     NULL on failure.

     The tss_set() function returns thrd_success on success, otherwise
     thrd_error on failure.

SEE ALSO
     pthread_getspecific(3), pthread_key_create(3), threads(3)

STANDARDS
     The tss interface conforms to ISO/IEC 9899:2011 ("ISO C11").

HISTORY
     This interface first appeared in NetBSD 9.

AUTHORS
     Kamil Rytarowski <kamil@NetBSD.org>

NetBSD 10.99                   October 16, 2016                   NetBSD 10.99