xref: /netbsd-src/lib/libpthread/pthread_create.3 (revision 23c8222edbfb0f0932d88a8351d3a0cf817dfb9e)
1.\" $NetBSD: pthread_create.3,v 1.3 2003/07/04 11:48:59 wiz Exp $
2.\"
3.\" Copyright (c) 2002 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.\" 3. Neither the name of The NetBSD Foundation nor the names of its
14.\"    contributors may be used to endorse or promote products derived
15.\"    from this software without specific prior written permission.
16.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
17.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
20.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26.\" POSSIBILITY OF SUCH DAMAGE.
27.\"
28.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
29.\" All rights reserved.
30.\"
31.\" Redistribution and use in source and binary forms, with or without
32.\" modification, are permitted provided that the following conditions
33.\" are met:
34.\" 1. Redistributions of source code must retain the above copyright
35.\"    notice, this list of conditions and the following disclaimer.
36.\" 2. Redistributions in binary form must reproduce the above copyright
37.\"    notice, this list of conditions and the following disclaimer in the
38.\"    documentation and/or other materials provided with the distribution.
39.\" 3. All advertising materials mentioning features or use of this software
40.\"    must display the following acknowledgement:
41.\"	This product includes software developed by John Birrell.
42.\" 4. Neither the name of the author nor the names of any co-contributors
43.\"    may be used to endorse or promote products derived from this software
44.\"    without specific prior written permission.
45.\"
46.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
47.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
48.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
49.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
50.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
51.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
52.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
53.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
54.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
55.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
56.\" SUCH DAMAGE.
57.\"
58.\" $FreeBSD: src/lib/libpthread/man/pthread_create.3,v 1.16 2002/09/16 19:29:28 mini Exp $
59.\"
60.Dd January 30, 2003
61.Dt PTHREAD_CREATE 3
62.Os
63.Sh NAME
64.Nm pthread_create
65.Nd create a new thread
66.Sh LIBRARY
67.Lb libpthread
68.Sh SYNOPSIS
69.In pthread.h
70.Ft int
71.Fn pthread_create "pthread_t *thread" "const pthread_attr_t *attr" "void *(*start_routine)(void *)" "void *arg"
72.Sh DESCRIPTION
73The
74.Fn pthread_create
75function is used to create a new thread, with attributes specified by
76.Fa attr ,
77within a process.
78If
79.Fa attr
80is
81.Dv NULL ,
82the default attributes are used.
83If the attribute object pointed to by
84.Fa attr
85are modified later, the thread's attributes are not affected.
86Upon
87successful completion
88.Fn pthread_create
89will store the ID of the created thread in the location specified by
90.Fa thread .
91.Pp
92The thread is created executing
93.Fa start_routine
94with
95.Fa arg
96as its sole argument.
97If the
98.Fa start_routine
99returns, the effect is as if there was an implicit call to
100.Fn pthread_exit
101using the return value of
102.Fa start_routine
103as the exit status.
104Note that the thread in which
105.Fn main
106was originally invoked differs from this.
107When it returns from
108.Fn main ,
109the effect is as if there was an implicit call to
110.Fn exit
111using the return value of
112.Fn main
113as the exit status.
114.Pp
115The signal state of the new thread is initialized as:
116.Bl -bullet -offset indent
117.It
118The signal mask is inherited from the creating thread.
119.It
120The set of signals pending for the new thread is empty.
121.El
122.Sh RETURN VALUES
123If successful,  the
124.Fn pthread_create
125function will return zero.
126Otherwise an error number will be returned to
127indicate the error.
128.Sh ERRORS
129.Fn pthread_create
130shall fail if:
131.Bl -tag -width Er
132.It Bq Er EAGAIN
133The system lacks the necessary resources to create another thread, or
134the system-imposed limit on the total number of threads in a process
135.Dv PTHREAD_THREADS_MAX
136would be exceeded.
137.It Bq Er EINVAL
138The value specified by
139.Fa attr
140is invalid.
141.El
142.Sh SEE ALSO
143.Xr fork 2 ,
144.Xr pthread_cleanup_pop 3 ,
145.Xr pthread_cleanup_push 3 ,
146.Xr pthread_exit 3 ,
147.Xr pthread_join 3
148.Sh STANDARDS
149.Fn pthread_create
150conforms to
151.St -p1003.1-96 .
152