xref: /freebsd/share/man/man3/pthread_setspecific.3 (revision ec7452f103d56cccf279cec74a22025f980bbda5)
10f7d6847SJulian Elischer.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
20f7d6847SJulian Elischer.\" All rights reserved.
30f7d6847SJulian Elischer.\"
40f7d6847SJulian Elischer.\" Redistribution and use in source and binary forms, with or without
50f7d6847SJulian Elischer.\" modification, are permitted provided that the following conditions
60f7d6847SJulian Elischer.\" are met:
70f7d6847SJulian Elischer.\" 1. Redistributions of source code must retain the above copyright
80f7d6847SJulian Elischer.\"    notice, this list of conditions and the following disclaimer.
90f7d6847SJulian Elischer.\" 2. Redistributions in binary form must reproduce the above copyright
100f7d6847SJulian Elischer.\"    notice, this list of conditions and the following disclaimer in the
110f7d6847SJulian Elischer.\"    documentation and/or other materials provided with the distribution.
120f7d6847SJulian Elischer.\" 3. All advertising materials mentioning features or use of this software
130f7d6847SJulian Elischer.\"    must display the following acknowledgement:
140f7d6847SJulian Elischer.\"	This product includes software developed by John Birrell.
150f7d6847SJulian Elischer.\" 4. Neither the name of the author nor the names of any co-contributors
160f7d6847SJulian Elischer.\"    may be used to endorse or promote products derived from this software
170f7d6847SJulian Elischer.\"    without specific prior written permission.
180f7d6847SJulian Elischer.\"
190f7d6847SJulian Elischer.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
200f7d6847SJulian Elischer.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
210f7d6847SJulian Elischer.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
220f7d6847SJulian Elischer.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
230f7d6847SJulian Elischer.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
240f7d6847SJulian Elischer.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
250f7d6847SJulian Elischer.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
260f7d6847SJulian Elischer.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
270f7d6847SJulian Elischer.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
280f7d6847SJulian Elischer.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
290f7d6847SJulian Elischer.\" SUCH DAMAGE.
300f7d6847SJulian Elischer.\"
317f3dea24SPeter Wemm.\" $FreeBSD$
32fbc400a6SNik Clayton.\"
330f7d6847SJulian Elischer.Dd April 4, 1996
340f7d6847SJulian Elischer.Dt PTHREAD_SETSPECIFIC 3
35a307d598SRuslan Ermilov.Os
360f7d6847SJulian Elischer.Sh NAME
370f7d6847SJulian Elischer.Nm pthread_setspecific
380f7d6847SJulian Elischer.Nd set a thread-specific data value
39d8a78688SAlexey Zelkin.Sh LIBRARY
40d8a78688SAlexey Zelkin.Lb libc_r
41ec7452f1SRuslan Ermilov.Lb libpthread
420f7d6847SJulian Elischer.Sh SYNOPSIS
4332eef9aeSRuslan Ermilov.In pthread.h
440f7d6847SJulian Elischer.Ft int
450f7d6847SJulian Elischer.Fn pthread_setspecific "pthread_key_t key" "const void *value"
460f7d6847SJulian Elischer.Sh DESCRIPTION
470f7d6847SJulian ElischerThe
480f7d6847SJulian Elischer.Fn pthread_setspecific
490f7d6847SJulian Elischerfunction associates a thread-specific value with a
500f7d6847SJulian Elischer.Fa key
510f7d6847SJulian Elischerobtained via a previous call to
520f7d6847SJulian Elischer.Fn pthread_key_create .
53c6ff3a1bSSheldon HearnDifferent threads man bind different values to the same key.
54c6ff3a1bSSheldon HearnThese values are
550f7d6847SJulian Elischertypically pointers to blocks of dynamically allocated memory that have been
560f7d6847SJulian Elischerreserved for use by the calling thread.
570f7d6847SJulian Elischer.Pp
580f7d6847SJulian ElischerThe effect of calling
590f7d6847SJulian Elischer.Fn pthread_setspecific
600f7d6847SJulian Elischerwith a key value not obtained from
610f7d6847SJulian Elischer.Fn pthread_key_create
620f7d6847SJulian Elischeror after
630f7d6847SJulian Elischer.Fa key
640f7d6847SJulian Elischerhas been deleted with
650f7d6847SJulian Elischer.Fn pthread_key_delete
660f7d6847SJulian Elischeris undefined.
670f7d6847SJulian Elischer.Pp
689d09157aSPhilippe CharnierThe
690f7d6847SJulian Elischer.Fn pthread_setspecific
709d09157aSPhilippe Charnierfunction may be called from a thread-specific data destructor function,
719d09157aSPhilippe Charnierhowever this may result in lost storage or infinite loops.
720f7d6847SJulian Elischer.Sh RETURN VALUES
730f7d6847SJulian ElischerIf successful, the
740f7d6847SJulian Elischer.Fn pthread_setspecific
75c6ff3a1bSSheldon Hearnfunction will return zero.
76c6ff3a1bSSheldon HearnOtherwise an error number will be returned to
770f7d6847SJulian Elischerindicate the error.
780f7d6847SJulian Elischer.Sh ERRORS
799d09157aSPhilippe CharnierThe
800f7d6847SJulian Elischer.Fn pthread_setspecific
819d09157aSPhilippe Charnierfunction will fail if:
820f7d6847SJulian Elischer.Bl -tag -width Er
830f7d6847SJulian Elischer.It Bq Er ENOMEM
840f7d6847SJulian ElischerInsufficient memory exists to associate the value with the
850f7d6847SJulian Elischer.Fa key .
860f7d6847SJulian Elischer.It Bq Er EINVAL
870f7d6847SJulian ElischerThe
880f7d6847SJulian Elischer.Fa key
890f7d6847SJulian Elischervalue is invalid.
900f7d6847SJulian Elischer.El
910f7d6847SJulian Elischer.Sh SEE ALSO
9275141cc9SWolfram Schneider.Xr pthread_getspecific 3 ,
930f7d6847SJulian Elischer.Xr pthread_key_create 3 ,
9475141cc9SWolfram Schneider.Xr pthread_key_delete 3
950f7d6847SJulian Elischer.Sh STANDARDS
969d09157aSPhilippe CharnierThe
970f7d6847SJulian Elischer.Fn pthread_setspecific
989d09157aSPhilippe Charnierfunction conforms to
99096841ecSRuslan Ermilov.St -p1003.1-96 .
100