xref: /openbsd-src/lib/libpthread/man/sem_open.3 (revision 512b5ded8e324f25868111a5828e60450280ff5b)
1*512b5dedSjmc.\" $OpenBSD: sem_open.3,v 1.12 2023/02/11 21:13:56 jmc Exp $
2a72c0c24Sfgsch.\"
3c104f7ecStedu.\" Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>
42787694aSfgsch.\"
5c104f7ecStedu.\" Permission to use, copy, modify, and distribute this software for any
6c104f7ecStedu.\" purpose with or without fee is hereby granted, provided that the above
7c104f7ecStedu.\" copyright notice and this permission notice appear in all copies.
82787694aSfgsch.\"
9c104f7ecStedu.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10c104f7ecStedu.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11c104f7ecStedu.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12c104f7ecStedu.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13c104f7ecStedu.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14c104f7ecStedu.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15c104f7ecStedu.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
162787694aSfgsch.\"
17*512b5dedSjmc.Dd $Mdocdate: February 11 2023 $
182787694aSfgsch.Dt SEM_OPEN 3
192787694aSfgsch.Os
202787694aSfgsch.Sh NAME
212787694aSfgsch.Nm sem_open ,
222787694aSfgsch.Nm sem_close ,
232787694aSfgsch.Nm sem_unlink
24c104f7ecStedu.Nd open and close named semaphores
252787694aSfgsch.Sh SYNOPSIS
2686f9d4cdStedu.In semaphore.h
272787694aSfgsch.Ft sem_t *
282787694aSfgsch.Fn sem_open "const char *name" "int oflag" "..."
292787694aSfgsch.Ft int
302787694aSfgsch.Fn sem_close "sem_t *sem"
312787694aSfgsch.Ft int
322787694aSfgsch.Fn sem_unlink "const char *name"
332787694aSfgsch.Sh DESCRIPTION
342787694aSfgschThe
35cd1cb807Stedu.Fn sem_open
36cd1cb807Stedufunction opens and returns a named semaphore.
37b182382eSjmcThe
38b182382eSjmc.Fn sem_close
39cd1cb807Stedufunction closes a previously opened named semaphore without removing it.
40cd1cb807SteduThe
412787694aSfgsch.Fn sem_unlink
42cd1cb807Stedufunction removes the named semaphore from the system without closing it.
432787694aSfgsch.Sh RETURN VALUES
44c104f7ecSteduOn success,
45c104f7ecStedu.Fn sem_open
46c104f7ecStedureturns a pointer to a semaphore.
47c104f7ecStedu.Fn sem_close
48c104f7ecSteduand
49c104f7ecStedu.Fn sem_unlink
50c104f7ecStedureturn 0 on success.
512787694aSfgsch.Fn sem_open
522787694aSfgschreturns SEM_FAILED and sets
532787694aSfgsch.Va errno
542787694aSfgschto indicate an error.
552787694aSfgsch.Fn sem_close
562787694aSfgschand
572787694aSfgsch.Fn sem_unlink
582787694aSfgschreturn -1 and set
592787694aSfgsch.Va errno
602787694aSfgschto indicate an error.
612787694aSfgsch.Sh ERRORS
62225fecb5SteduIt is an error to call
63225fecb5Stedu.Fn sem_close
64225fecb5Steduwith an unnamed semaphore or to call
65*512b5dedSjmc.Xr sem_destroy 3
66225fecb5Steduwith a named semaphore.
67225fecb5Stedu.Pp
68225fecb5Stedu.Fn sem_open
69225fecb5Stedumay fail if:
702787694aSfgsch.Bl -tag -width Er
71c104f7ecStedu.It Bq Er ENOSPC
729dea82b5SjmcInsufficient memory is available.
73cd1cb807Stedu.It Bq Er EPERM
74cd1cb807SteduAn attempt was made to open a shared semaphore owned by another user.
752787694aSfgsch.El
76225fecb5Stedu.Pp
77225fecb5Stedu.Fn sem_unlink
78225fecb5Stedumay fail for any of the reasons listed in
79225fecb5Stedu.Xr unlink 2 .
809c42db49Sjmc.Sh SEE ALSO
819c42db49Sjmc.Xr sem_destroy 3 ,
829c42db49Sjmc.Xr sem_getvalue 3 ,
839c42db49Sjmc.Xr sem_init 3 ,
849c42db49Sjmc.Xr sem_post 3 ,
859c42db49Sjmc.Xr sem_wait 3
862787694aSfgsch.Sh STANDARDS
872787694aSfgsch.Fn sem_open ,
882787694aSfgsch.Fn sem_close ,
892787694aSfgschand
902787694aSfgsch.Fn sem_unlink
91c104f7ecSteduappear in
922787694aSfgsch.St -p1003.1-96 .
93c104f7ecSteduThis implementation deviates from the standard by permitting less sharing.
94