xref: /freebsd/lib/libc/gen/sem_init.3 (revision 096841eceb6f1e33621f6688cd52239f87d99c31)
18e234adfSJason Evans.\" Copyright (C) 2000 Jason Evans <jasone@freebsd.org>.
2b0a1b4f8SJason Evans.\" All rights reserved.
3b0a1b4f8SJason Evans.\"
4b0a1b4f8SJason Evans.\" Redistribution and use in source and binary forms, with or without
5b0a1b4f8SJason Evans.\" modification, are permitted provided that the following conditions
6b0a1b4f8SJason Evans.\" are met:
7b0a1b4f8SJason Evans.\" 1. Redistributions of source code must retain the above copyright
8b0a1b4f8SJason Evans.\"    notice(s), this list of conditions and the following disclaimer as
9b0a1b4f8SJason Evans.\"    the first lines of this file unmodified other than the possible
10b0a1b4f8SJason Evans.\"    addition of one or more copyright notices.
11b0a1b4f8SJason Evans.\" 2. Redistributions in binary form must reproduce the above copyright
12b0a1b4f8SJason Evans.\"    notice(s), this list of conditions and the following disclaimer in
13b0a1b4f8SJason Evans.\"    the documentation and/or other materials provided with the
14b0a1b4f8SJason Evans.\"    distribution.
15b0a1b4f8SJason Evans.\"
16b0a1b4f8SJason Evans.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
17b0a1b4f8SJason Evans.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18b0a1b4f8SJason Evans.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19b0a1b4f8SJason Evans.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE
20b0a1b4f8SJason Evans.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21b0a1b4f8SJason Evans.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22b0a1b4f8SJason Evans.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23b0a1b4f8SJason Evans.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24b0a1b4f8SJason Evans.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25b0a1b4f8SJason Evans.\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26b0a1b4f8SJason Evans.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27b0a1b4f8SJason Evans.\"
28b0a1b4f8SJason Evans.\" $FreeBSD$
29b0a1b4f8SJason Evans.Dd February 15, 2000
30b0a1b4f8SJason Evans.Dt SEM_INIT 3
31b0a1b4f8SJason Evans.Os
32b0a1b4f8SJason Evans.Sh NAME
33b0a1b4f8SJason Evans.Nm sem_init
34b0a1b4f8SJason Evans.Nd initialize an unnamed semaphore
35d8a78688SAlexey Zelkin.Sh LIBRARY
36d8a78688SAlexey Zelkin.Lb libc_r
37b0a1b4f8SJason Evans.Sh SYNOPSIS
38b0a1b4f8SJason Evans.Fd #include <semaphore.h>
39b0a1b4f8SJason Evans.Ft int
40b0a1b4f8SJason Evans.Fn sem_init "sem_t *sem" "int pshared" "unsigned int value"
41b0a1b4f8SJason Evans.Sh DESCRIPTION
42b0a1b4f8SJason EvansThe
43b0a1b4f8SJason Evans.Fn sem_init
44b0a1b4f8SJason Evansfunction initializes the unnamed semaphore pointed to by
45b0a1b4f8SJason Evans.Fa sem
46b0a1b4f8SJason Evansto have the value
47b0a1b4f8SJason Evans.Fa value .
48b0a1b4f8SJason EvansA non-zero value for
49b0a1b4f8SJason Evans.Fa pshared
50b0a1b4f8SJason Evansspecifies a shared semaphore that can be used by multiple processes, which this
51b0a1b4f8SJason Evansimplementation is not capable of.
52b0a1b4f8SJason Evans.Pp
53b0a1b4f8SJason EvansFollowing a successful call to
54b0a1b4f8SJason Evans.Fn sem_init ,
55b0a1b4f8SJason Evans.Fa sem
56b0a1b4f8SJason Evanscan be used as an argument in subsequent calls to
57b0a1b4f8SJason Evans.Fa sem_wait ,
58b0a1b4f8SJason Evans.Fa sem_trywait ,
59b0a1b4f8SJason Evans.Fa sem_post ,
60b0a1b4f8SJason Evansand
61b0a1b4f8SJason Evans.Fa sem_destroy .
62b0a1b4f8SJason Evans.Fa sem
63b0a1b4f8SJason Evansis no longer valid after a successful call to
64b0a1b4f8SJason Evans.Fa sem_destroy .
65b0a1b4f8SJason Evans.Sh RETURN VALUES
66b0a1b4f8SJason EvansIf successful,
67b0a1b4f8SJason Evans.Fn sem_init
68b0a1b4f8SJason Evansreturns 0.  Otherwise, -1 is returned and
69b0a1b4f8SJason Evans.Va errno
70b0a1b4f8SJason Evansis set to indicate the type of
71b0a1b4f8SJason Evanserror.
72b0a1b4f8SJason Evans.Sh ERRORS
73b0a1b4f8SJason Evans.Fn sem_init
74b0a1b4f8SJason Evanswill fail if:
75b0a1b4f8SJason Evans.Bl -tag -width Er
76b0a1b4f8SJason Evans.It Bq Er EINVAL
77b0a1b4f8SJason Evans.Fa value
78b0a1b4f8SJason Evansexceeds SEM_VALUE_MAX.
79b0a1b4f8SJason Evans.It Bq Er ENOSPC
80b0a1b4f8SJason EvansMemory allocation error.
81b0a1b4f8SJason Evans.It Bq Er EPERM
82b0a1b4f8SJason EvansUnable to initialize a shared semaphore.
83b0a1b4f8SJason Evans.El
84b0a1b4f8SJason Evans.Sh SEE ALSO
8582db3da3SJason Evans.Xr sem_destroy 3 ,
86b0a1b4f8SJason Evans.Xr sem_post 3 ,
8782db3da3SJason Evans.Xr sem_trywait 3 ,
8882db3da3SJason Evans.Xr sem_wait 3
89b0a1b4f8SJason Evans.Sh STANDARDS
90b0a1b4f8SJason Evans.Fn sem_init
91096841ecSRuslan Ermilovconforms to
92096841ecSRuslan Ermilov.St -p1003.1-96 .
93b0a1b4f8SJason Evans.Pp
94b0a1b4f8SJason EvansThis implementation does not support shared semaphores, and reports this fact
95b0a1b4f8SJason Evansby setting
96b0a1b4f8SJason Evans.Va errno
97c23155a4SRuslan Ermilovto
98c23155a4SRuslan Ermilov.Er EPERM .
99c23155a4SRuslan ErmilovThis is perhaps a stretch of the intention of POSIX, but is
100b0a1b4f8SJason Evanscompliant, with the caveat that
101b0a1b4f8SJason Evans.Fn sem_init
102b0a1b4f8SJason Evansalways reports a permissions error when an attempt to create a shared semaphore
103b0a1b4f8SJason Evansis made.
104