summaryrefslogtreecommitdiff
path: root/static/netbsd/man3/pthread_key_create.3
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man3/pthread_key_create.3')
-rw-r--r--static/netbsd/man3/pthread_key_create.3195
1 files changed, 195 insertions, 0 deletions
diff --git a/static/netbsd/man3/pthread_key_create.3 b/static/netbsd/man3/pthread_key_create.3
new file mode 100644
index 00000000..5694a50c
--- /dev/null
+++ b/static/netbsd/man3/pthread_key_create.3
@@ -0,0 +1,195 @@
+.\" $NetBSD: pthread_key_create.3,v 1.9 2017/10/22 16:37:24 abhinav Exp $
+.\"
+.\" Copyright (c) 2002, 2010 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by John Birrell.
+.\" 4. Neither the name of the author nor the names of any co-contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD: src/lib/libpthread/man/pthread_key_create.3,v 1.12 2002/09/16 19:29:28 mini Exp $
+.\"
+.Dd May 29, 2015
+.Dt PTHREAD_KEY_CREATE 3
+.Os
+.Sh NAME
+.Nm pthread_key_create ,
+.Nm pthread_key_delete
+.Nd thread-specific data
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_key_create "pthread_key_t *key" "void (*destructor)(void *)"
+.Ft int
+.Fn pthread_key_delete "pthread_key_t key"
+.Sh DESCRIPTION
+The
+.Fn pthread_key_create
+function creates a thread-specific data key visible to all threads in the
+process.
+Key values are opaque objects used to locate thread-specific data.
+The same key value may be used by different threads,
+but the values bound to the key by
+.Fn pthread_setspecific
+are maintained on a per-thread basis and
+persist for the life of the calling thread.
+.Pp
+Upon key creation, the value
+.Dv NULL
+is associated with the new key in all active threads.
+Upon thread creation, the value
+.Dv NULL
+is associated with all
+defined keys in the new thread.
+.Pp
+An optional destructor function may be associated with each key value.
+At thread exit, if a key value has a
+.Pf non- Dv NULL
+destructor pointer, and the thread has a
+.Pf non- Dv NULL
+value associated with the key, the function pointed
+to is called with the current associated value as its sole argument.
+The order of destructor calls is unspecified if more
+than one destructor exists for a thread when it exits.
+.Pp
+If, after all the destructors have been called for all
+.Pf non- Dv NULL
+values with associated destructors, there are still some
+.Pf non- Dv NULL
+values with associated destructors, then the process is repeated.
+If, after at least
+.Dv PTHREAD_DESTRUCTOR_ITERATIONS
+iterations of destructor calls for outstanding
+.Pf non- Dv NULL
+values, there are still some
+.Pf non- Dv NULL
+values with
+associated destructors, the implementation stops calling destructors.
+.Pp
+The
+.Fn pthread_key_delete
+function deletes a thread-specific data key previously returned by
+.Fn pthread_key_create .
+The thread-specific data values associated with
+.Fa key
+need not be
+.Dv NULL
+at the time of the call.
+It is the responsibility of the application to free any
+application storage or perform any cleanup actions for data structures
+related to the deleted key or associated thread-specific data in any threads;
+this cleanup can be done either before or after
+.Fn pthread_key_delete
+is called.
+Any attempt to use
+.Fa key
+following the call to
+.Fn pthread_key_delete
+results in undefined behavior.
+.Pp
+The
+.Fn pthread_key_delete
+function itself is callable from within destructor functions,
+but destructor functions are not invoked by the function.
+Any destructor function that may have been associated with
+.Fa key
+will no longer be called upon thread exit.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_key_create
+function will store the newly created key value at the location specified by
+.Fa key
+and returns zero.
+Also
+.Fn pthread_key_delete
+will return zero upon success.
+Upon failure both functions return an error number to indicate the cause.
+.Sh ENVIRONMENT
+.Bl -tag -width PTHREAD_KEYS_MAX
+.It Ev PTHREAD_KEYS_MAX
+Maximum per-process thread-specific data keys.
+This cannot be set below
+.Dv _POSIX_THREAD_KEYS_MAX .
+.El
+.Sh ERRORS
+The
+.Fn pthread_key_create
+may fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The system lacked the necessary resources to create another thread-specific
+data key, or the system-imposed limit on the total number of keys per-process
+.Dv PTHREAD_KEYS_MAX
+would be exceeded.
+.It Bq Er ENOMEM
+Insufficient memory exists to create the key.
+.El
+.Pp
+The
+.Fn pthread_key_delete
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa key
+value is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_getspecific 3
+.Sh STANDARDS
+These functions conform to
+.St -p1003.1-2001 .
+.Sh BUGS
+The current specifications are flawed and
+do not permit a clean implementation without potential problems.
+The current implementation in
+.Nx
+addresses these problems by not supporting key reuse.