summaryrefslogtreecommitdiffstats
path: root/man/man3/sem_init.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/sem_init.3')
-rw-r--r--man/man3/sem_init.3108
1 files changed, 108 insertions, 0 deletions
diff --git a/man/man3/sem_init.3 b/man/man3/sem_init.3
new file mode 100644
index 0000000..8ea6b64
--- /dev/null
+++ b/man/man3/sem_init.3
@@ -0,0 +1,108 @@
+'\" t
+.\" Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH sem_init 3 2024-05-02 "Linux man-pages (unreleased)"
+.SH NAME
+sem_init \- initialize an unnamed semaphore
+.SH LIBRARY
+POSIX threads library
+.RI ( libpthread ", " \-lpthread )
+.SH SYNOPSIS
+.nf
+.B #include <semaphore.h>
+.P
+.BI "int sem_init(sem_t *" sem ", int " pshared ", unsigned int " value );
+.fi
+.SH DESCRIPTION
+.BR sem_init ()
+initializes the unnamed semaphore at the address pointed to by
+.IR sem .
+The
+.I value
+argument specifies the initial value for the semaphore.
+.P
+The
+.I pshared
+argument indicates whether this semaphore is to be shared
+between the threads of a process, or between processes.
+.P
+If
+.I pshared
+has the value 0,
+then the semaphore is shared between the threads of a process,
+and should be located at some address that is visible to all threads
+(e.g., a global variable, or a variable allocated dynamically on
+the heap).
+.P
+If
+.I pshared
+is nonzero, then the semaphore is shared between processes,
+and should be located in a region of shared memory (see
+.BR shm_open (3),
+.BR mmap (2),
+and
+.BR shmget (2)).
+(Since a child created by
+.BR fork (2)
+inherits its parent's memory mappings, it can also access the semaphore.)
+Any process that can access the shared memory region
+can operate on the semaphore using
+.BR sem_post (3),
+.BR sem_wait (3),
+and so on.
+.P
+Initializing a semaphore that has already been initialized
+results in undefined behavior.
+.SH RETURN VALUE
+.BR sem_init ()
+returns 0 on success;
+on error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EINVAL
+.I value
+exceeds
+.BR SEM_VALUE_MAX .
+.TP
+.B ENOSYS
+.I pshared
+is nonzero,
+but the system does not support process-shared semaphores (see
+.BR sem_overview (7)).
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR sem_init ()
+T} Thread safety MT-Safe
+.TE
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.P
+Bizarrely, POSIX.1-2001 does not specify the value that should
+be returned by a successful call to
+.BR sem_init ().
+POSIX.1-2008 rectifies this, specifying the zero return on success.
+.SH EXAMPLES
+See
+.BR shm_open (3)
+and
+.BR sem_wait (3).
+.SH SEE ALSO
+.BR sem_destroy (3),
+.BR sem_post (3),
+.BR sem_wait (3),
+.BR sem_overview (7)