1.\" $NetBSD: pthread_getspecific.3,v 1.6 2017/10/22 16:37:24 abhinav Exp $ 2.\" 3.\" Copyright (c) 2002, 2010 The NetBSD Foundation, Inc. 4.\" All rights reserved. 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 15.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 16.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 18.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24.\" POSSIBILITY OF SUCH DAMAGE. 25.\" 26.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>. 27.\" All rights reserved. 28.\" 29.\" Redistribution and use in source and binary forms, with or without 30.\" modification, are permitted provided that the following conditions 31.\" are met: 32.\" 1. Redistributions of source code must retain the above copyright 33.\" notice, this list of conditions and the following disclaimer. 34.\" 2. Redistributions in binary form must reproduce the above copyright 35.\" notice, this list of conditions and the following disclaimer in the 36.\" documentation and/or other materials provided with the distribution. 37.\" 3. All advertising materials mentioning features or use of this software 38.\" must display the following acknowledgement: 39.\" This product includes software developed by John Birrell. 40.\" 4. Neither the name of the author nor the names of any co-contributors 41.\" may be used to endorse or promote products derived from this software 42.\" without specific prior written permission. 43.\" 44.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND 45.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 46.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 47.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 48.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 49.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 50.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 51.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 52.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 53.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 54.\" SUCH DAMAGE. 55.\" 56.\" $FreeBSD: src/lib/libpthread/man/pthread_getspecific.3,v 1.11 2002/09/16 19:29:28 mini Exp $ 57.\" 58.Dd July 9, 2010 59.Dt PTHREAD_GETSPECIFIC 3 60.Os 61.Sh NAME 62.Nm pthread_getspecific , 63.Nm pthread_setspecific 64.Nd thread-specific data value 65.Sh LIBRARY 66.Lb libpthread 67.Sh SYNOPSIS 68.In pthread.h 69.Ft void * 70.Fn pthread_getspecific "pthread_key_t key" 71.Ft int 72.Fn pthread_setspecific "pthread_key_t key" "const void *value" 73.Sh DESCRIPTION 74The 75.Fn pthread_getspecific 76function returns the value currently bound to the specified 77.Fa key 78on behalf of the calling thread. 79Conversely, the 80.Fn pthread_setspecific 81function associates a thread-specific value with a 82.Fa key 83obtained via a previous call to 84.Xr pthread_key_create 3 . 85Different threads have different values bound to each key. 86These values are typically pointers to blocks of dynamically 87allocated memory that have been reserved for use by the calling thread. 88.Pp 89Undefined behavior may follow if either function is called with a 90.Fa key 91value not obtained from 92.Xr pthread_key_create 3 , 93or if the call is made after 94.Fa key 95has been deleted with 96.Xr pthread_key_delete 3 . 97It is possible to call either function from 98a thread-specific data destructor function. 99Note however that this is not well defined for the 100.Fn pthread_setspecific 101function; 102lost storage or infinite loops may occur. 103.Sh RETURN VALUES 104The 105.Fn pthread_getspecific 106function will return the thread-specific data value associated with the given 107.Fa key . 108If no thread-specific data value is associated with 109.Fa key , 110then the value 111.Dv NULL 112is returned. 113If successful, the 114.Fn pthread_setspecific 115function will return zero. 116Otherwise an error number will be returned to 117indicate the error. 118.Sh ERRORS 119No errors are defined for either function. 120.Sh SEE ALSO 121.Xr pthread_key_create 3 122.Sh STANDARDS 123These functions conform to 124.St -p1003.1-2001 . 125