Fix mdoc(7)/man(7) mix up.
[netbsd-mini2440.git] / lib / libpthread / pthread_once.3
blob656a01c3ddccbdc6cf8d592b00f6d5032fb18ad3
1 .\" $NetBSD: pthread_once.3,v 1.2 2003/06/08 06:44:32 thorpej 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 .\"
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_once.3,v 1.14 2002/09/16 19:29:29 mini Exp $
57 .\"
58 .Dd January 30, 2003
59 .Dt PTHREAD_ONCE 3
60 .Os
61 .Sh NAME
62 .Nm pthread_once
63 .Nd dynamic package initialization
64 .Sh LIBRARY
65 .Lb libpthread
66 .Sh SYNOPSIS
67 .In pthread.h
68 .Pp
69 pthread_once_t
70 .Fa once_control
71 = PTHREAD_ONCE_INIT;
72 .Ft int
73 .Fn pthread_once "pthread_once_t *once_control" "void (*init_routine)(void)"
74 .Sh DESCRIPTION
75 The first call to
76 .Fn pthread_once
77 by any thread in a process, with a given
78 .Fa once_control ,
79 will call the
80 .Fn init_routine
81 with no arguments.
82 Subsequent calls to
83 .Fn pthread_once
84 with the same
85 .Fa once_control
86 will not call the
87 .Fn init_routine .
88 On return from
89 .Fn pthread_once ,
90 it is guaranteed that
91 .Fn init_routine
92 has completed.
93 The
94 .Fa once_control
95 parameter is used to determine whether the associated initialization
96 routine has been called.
97 .Pp
98 The function
99 .Fn pthread_once
100 is not a cancellation point.
101 However, if
102 .Fn init_routine
103 is a cancellation point and is cancelled, the effect on
104 .Fa once_control
105 is as if
106 .Fn pthread_once
107 was never called.
109 The constant
110 .Fa PTHREAD_ONCE_INIT
111 is defined by header
112 .Aq Pa pthread.h .
114 The behavior of
115 .Fn pthread_once
116 is undefined if
117 .Fa once_control
118 has automatic storage duration or is not initialized by
119 .Fa PTHREAD_ONCE_INIT .
120 .Sh RETURN VALUES
121 If successful,  the
122 .Fn pthread_once
123 function will return zero.
124 Otherwise an error number will be returned to
125 indicate the error.
126 .Sh ERRORS
127 None.
128 .Sh STANDARDS
129 .Fn pthread_once
130 conforms to
131 .St -p1003.1-96 .