2004-11-03 13:51:07 +00:00
|
|
|
.\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
|
|
.\" preserved on all copies.
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
|
|
.\" permission notice identical to this one.
|
|
|
|
.\"
|
|
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
|
|
.\" have taken the same level of care in the production of this manual,
|
|
|
|
.\" which is licensed free of charge, as they might when working
|
|
|
|
.\" professionally.
|
|
|
|
.\"
|
|
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
|
|
.\"
|
|
|
|
.\" Modified 1996-10-22, Eric S. Raymond <esr@thyrsus.com>
|
2004-11-03 14:43:40 +00:00
|
|
|
.\" Modified 2002-01-08, Michael Kerrisk <mtk-manpages@gmx.net>
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" Modified 2003-04-28, Ernie Petrides <petrides@redhat.com>
|
2004-11-03 14:43:40 +00:00
|
|
|
.\" Modified 2004-05-27, Michael Kerrisk <mtk-manpages@gmx.net>
|
2004-11-10 17:24:20 +00:00
|
|
|
.\" Modified, 11 Nov 2004, Michael Kerrisk <mtk-manpages@gmx.net>
|
|
|
|
.\" Language and formatting clean-ups
|
|
|
|
.\" Added notes on /proc files
|
2005-04-08 06:19:20 +00:00
|
|
|
.\" 2005-04-08, mtk, Noted kernel version numbers for semtimedop()
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
2004-11-10 17:24:20 +00:00
|
|
|
.TH SEMOP 2 2004-11-10 "Linux 2.6.9" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
|
|
|
semop, semtimedop \- semaphore operations
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.nf
|
|
|
|
.B
|
|
|
|
#include <sys/types.h>
|
|
|
|
.B
|
|
|
|
#include <sys/ipc.h>
|
|
|
|
.B
|
|
|
|
#include <sys/sem.h>
|
|
|
|
.fi
|
|
|
|
.sp
|
|
|
|
.BI "int semop(int " semid ,
|
|
|
|
.BI "struct sembuf *" sops ,
|
|
|
|
.BI "unsigned " nsops );
|
|
|
|
.sp
|
|
|
|
.BI "int semtimedop(int " semid ,
|
|
|
|
.BI "struct sembuf *" sops ,
|
|
|
|
.BI "unsigned " nsops ,
|
|
|
|
.BI "struct timespec *" timeout );
|
|
|
|
.SH DESCRIPTION
|
2004-11-10 17:24:20 +00:00
|
|
|
Each semaphore in a semaphore set has the following associated values:
|
2004-11-03 13:51:07 +00:00
|
|
|
.sp
|
|
|
|
.in +4n
|
|
|
|
.nf
|
|
|
|
unsigned short semval; /* semaphore value */
|
|
|
|
unsigned short semzcnt; /* # waiting for zero */
|
|
|
|
unsigned short semncnt; /* # waiting for increase */
|
|
|
|
pid_t sempid; /* process that did last op */
|
|
|
|
.sp
|
|
|
|
.in -4n
|
|
|
|
.fi
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semop ()
|
|
|
|
performs operations on selected semaphores in the set indicated by
|
2004-11-03 13:51:07 +00:00
|
|
|
.IR semid .
|
|
|
|
Each of the
|
|
|
|
.I nsops
|
|
|
|
elements in the array pointed to by
|
|
|
|
.I sops
|
2004-11-10 17:24:20 +00:00
|
|
|
specifies an operation to be performed on a single semaphore.
|
|
|
|
The elements of this structure are of type
|
2005-11-02 13:55:25 +00:00
|
|
|
.IR "struct sembuf" ,
|
2004-11-10 17:24:20 +00:00
|
|
|
containing the following members:
|
2004-11-03 13:51:07 +00:00
|
|
|
.sp
|
|
|
|
.in +4n
|
|
|
|
.nf
|
2004-11-10 17:24:20 +00:00
|
|
|
unsigned short sem_num; /* semaphore number */
|
|
|
|
short sem_op; /* semaphore operation */
|
|
|
|
short sem_flg; /* operation flags */
|
2004-11-03 13:51:07 +00:00
|
|
|
.sp
|
|
|
|
.in -4n
|
|
|
|
.fi
|
|
|
|
Flags recognized in
|
|
|
|
.I sem_flg
|
|
|
|
are
|
|
|
|
.B IPC_NOWAIT
|
|
|
|
and
|
|
|
|
.BR SEM_UNDO .
|
2004-11-10 17:24:20 +00:00
|
|
|
If an operation specifies
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR SEM_UNDO ,
|
2004-11-10 17:24:20 +00:00
|
|
|
it will be automatically undone when the process terminates.
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
|
|
|
The set of operations contained in
|
|
|
|
.I sops
|
|
|
|
is performed
|
|
|
|
.IR atomically ,
|
|
|
|
that is, the operations are performed at the same time, and only
|
|
|
|
if they can all be simultaneously performed.
|
|
|
|
The behaviour of the system call if not all operations can be
|
|
|
|
performed immediately depends on the presence of the
|
|
|
|
.B IPC_NOWAIT
|
|
|
|
flag in the individual
|
|
|
|
.I sem_flg
|
|
|
|
fields, as noted below.
|
|
|
|
|
|
|
|
Each operation is performed on the
|
|
|
|
.IR sem_num \-th
|
|
|
|
semaphore of the semaphore set, where the first semaphore of the set
|
2004-11-10 17:24:20 +00:00
|
|
|
is numbered 0.
|
2004-11-03 13:51:07 +00:00
|
|
|
There are three types of operation, distinguished by the value of
|
|
|
|
.IR sem_op .
|
|
|
|
.PP
|
|
|
|
If
|
|
|
|
.I sem_op
|
|
|
|
is a positive integer, the operation adds this value to
|
|
|
|
the semaphore value
|
|
|
|
.RI ( semval ).
|
|
|
|
Furthermore, if
|
|
|
|
.B SEM_UNDO
|
2004-11-10 17:24:20 +00:00
|
|
|
is specified for this operation, the system updates the process undo count
|
2004-11-03 13:51:07 +00:00
|
|
|
.RI ( semadj )
|
|
|
|
for this semaphore.
|
2005-07-18 12:43:00 +00:00
|
|
|
This operation can always proceed \(em it never forces a process to wait.
|
2004-11-03 13:51:07 +00:00
|
|
|
The calling process must have alter permission on the semaphore set.
|
|
|
|
.PP
|
|
|
|
If
|
|
|
|
.I sem_op
|
2004-11-10 17:24:20 +00:00
|
|
|
is zero, the process must have read permission on the semaphore
|
2004-11-03 13:51:07 +00:00
|
|
|
set.
|
|
|
|
This is a "wait-for-zero" operation: if
|
|
|
|
.I semval
|
|
|
|
is zero, the operation can immediately proceed.
|
|
|
|
Otherwise, if
|
|
|
|
.B IPC_NOWAIT
|
2004-11-10 17:24:20 +00:00
|
|
|
is specified in
|
2004-11-03 13:51:07 +00:00
|
|
|
.IR sem_flg ,
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semop ()
|
|
|
|
fails with
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
set to
|
|
|
|
.B EAGAIN
|
|
|
|
(and none of the operations in
|
|
|
|
.I sops
|
|
|
|
is performed).
|
|
|
|
Otherwise
|
|
|
|
.I semzcnt
|
|
|
|
(the count of processes waiting until this semaphore's value becomes zero)
|
|
|
|
is incremented by one and the process sleeps until
|
|
|
|
one of the following occurs:
|
|
|
|
.IP \(bu
|
|
|
|
.I semval
|
|
|
|
becomes 0, at which time the value of
|
|
|
|
.I semzcnt
|
|
|
|
is decremented.
|
|
|
|
.IP \(bu
|
|
|
|
The semaphore set
|
2004-11-10 17:24:20 +00:00
|
|
|
is removed:
|
|
|
|
.BR semop ()
|
|
|
|
fails, with
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
set to
|
|
|
|
.BR EIDRM .
|
|
|
|
.IP \(bu
|
|
|
|
The calling process catches a signal:
|
|
|
|
the value of
|
|
|
|
.I semzcnt
|
2004-11-10 17:24:20 +00:00
|
|
|
is decremented and
|
|
|
|
.BR semop ()
|
|
|
|
fails, with
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
set to
|
|
|
|
.BR EINTR .
|
|
|
|
.IP \(bu
|
|
|
|
The time limit specified by
|
|
|
|
.I timeout
|
|
|
|
in a
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semtimedop ()
|
|
|
|
call expires:
|
|
|
|
.BR semop ()
|
|
|
|
fails, with
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
set to
|
|
|
|
.BR EAGAIN .
|
|
|
|
.PP
|
|
|
|
If
|
|
|
|
.I sem_op
|
|
|
|
is less than zero, the process must have alter permission on the
|
|
|
|
semaphore set.
|
|
|
|
If
|
|
|
|
.I semval
|
|
|
|
is greater than or equal to the absolute value of
|
|
|
|
.IR sem_op ,
|
|
|
|
the operation can proceed immediately:
|
|
|
|
the absolute value of
|
|
|
|
.I sem_op
|
|
|
|
is subtracted from
|
|
|
|
.IR semval ,
|
|
|
|
and, if
|
|
|
|
.B SEM_UNDO
|
2004-11-10 17:24:20 +00:00
|
|
|
is specified for this operation, the system updates the process undo count
|
2004-11-03 13:51:07 +00:00
|
|
|
.RI ( semadj )
|
|
|
|
for this semaphore.
|
|
|
|
If the absolute value of
|
|
|
|
.I sem_op
|
|
|
|
is greater than
|
|
|
|
.IR semval ,
|
|
|
|
and
|
|
|
|
.B IPC_NOWAIT
|
2004-11-10 17:24:20 +00:00
|
|
|
is specified in
|
2004-11-03 13:51:07 +00:00
|
|
|
.IR sem_flg ,
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semop ()
|
|
|
|
fails, with
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
set to
|
|
|
|
.B EAGAIN
|
|
|
|
(and none of the operations in
|
|
|
|
.I sops
|
|
|
|
is performed).
|
|
|
|
Otherwise
|
|
|
|
.I semncnt
|
|
|
|
(the counter of processes waiting for this semaphore's value to increase)
|
|
|
|
is incremented by one and the process sleeps until
|
|
|
|
one of the following occurs:
|
|
|
|
.IP \(bu
|
|
|
|
.I semval
|
|
|
|
becomes greater than or equal to the absolute value of
|
|
|
|
.IR sem_op ,
|
|
|
|
at which time the value of
|
|
|
|
.I semncnt
|
|
|
|
is decremented, the absolute value of
|
|
|
|
.I sem_op
|
|
|
|
is subtracted from
|
|
|
|
.I semval
|
|
|
|
and, if
|
|
|
|
.B SEM_UNDO
|
2004-11-10 17:24:20 +00:00
|
|
|
is specified for this operation, the system updates the process undo count
|
2004-11-03 13:51:07 +00:00
|
|
|
.RI ( semadj )
|
|
|
|
for this semaphore.
|
|
|
|
.IP \(bu
|
2004-11-10 17:24:20 +00:00
|
|
|
The semaphore set is removed from the system:
|
|
|
|
.BR semop ()
|
|
|
|
fails, with
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
set to
|
|
|
|
.BR EIDRM .
|
|
|
|
.IP \(bu
|
|
|
|
The calling process catches a signal:
|
|
|
|
the value of
|
|
|
|
.I semncnt
|
2004-11-10 17:24:20 +00:00
|
|
|
is decremented and
|
|
|
|
.BR semop ()
|
|
|
|
fails, with
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
set to
|
|
|
|
.BR EINTR .
|
|
|
|
.IP \(bu
|
|
|
|
The time limit specified by
|
|
|
|
.I timeout
|
|
|
|
in a
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semtimedop ()
|
2004-11-03 13:51:07 +00:00
|
|
|
call expires: the system call fails, with
|
|
|
|
.I errno
|
|
|
|
set to
|
|
|
|
.BR EAGAIN .
|
|
|
|
.PP
|
|
|
|
On successful completion, the
|
|
|
|
.I sempid
|
|
|
|
value for each semaphore specified in the array pointed to by
|
|
|
|
.I sops
|
|
|
|
is set to the process ID of the calling process.
|
|
|
|
In addition, the
|
|
|
|
.I sem_otime
|
|
|
|
.\" and
|
|
|
|
.\" .I sem_ctime
|
|
|
|
is set to the current time.
|
|
|
|
.PP
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semtimedop ()
|
|
|
|
behaves identically to
|
|
|
|
.BR semop ()
|
2004-11-03 13:51:07 +00:00
|
|
|
except that in those cases were the calling process would sleep,
|
|
|
|
the duration of that sleep is limited by the amount of elapsed
|
|
|
|
time specified by the
|
|
|
|
.B timespec
|
|
|
|
structure whose address is passed in the
|
|
|
|
.I timeout
|
|
|
|
parameter. If the specified time limit has been reached,
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semtimedop ()
|
|
|
|
fails with
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
set to
|
|
|
|
.B EAGAIN
|
|
|
|
(and none of the operations in
|
|
|
|
.I sops
|
|
|
|
is performed).
|
|
|
|
If the
|
|
|
|
.I timeout
|
2006-05-31 23:56:09 +00:00
|
|
|
parameter is NULL,
|
2004-11-03 13:51:07 +00:00
|
|
|
then
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semtimedop ()
|
2004-11-03 13:51:07 +00:00
|
|
|
behaves exactly like
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semop ().
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "RETURN VALUE"
|
2004-11-10 17:24:20 +00:00
|
|
|
If successful
|
|
|
|
.BR semop ()
|
|
|
|
and
|
|
|
|
.BR semtimedop ()
|
|
|
|
return 0;
|
2005-06-15 14:10:23 +00:00
|
|
|
otherwise they return \-1
|
2004-11-03 13:51:07 +00:00
|
|
|
with
|
|
|
|
.I errno
|
|
|
|
indicating the error.
|
|
|
|
.SH ERRORS
|
|
|
|
On failure,
|
|
|
|
.I errno
|
|
|
|
is set to one of the following:
|
|
|
|
.TP
|
|
|
|
.B E2BIG
|
|
|
|
The argument
|
|
|
|
.I nsops
|
|
|
|
is greater than
|
|
|
|
.BR SEMOPM ,
|
|
|
|
the maximum number of operations allowed per system
|
|
|
|
call.
|
|
|
|
.TP
|
|
|
|
.B EACCES
|
|
|
|
The calling process does not have the permissions required
|
|
|
|
to perform the specified semaphore operations,
|
|
|
|
and does not have the
|
|
|
|
.B CAP_IPC_OWNER
|
|
|
|
capability.
|
|
|
|
.TP
|
|
|
|
.B EAGAIN
|
|
|
|
An operation could not proceed immediately and either
|
|
|
|
.BR IPC_NOWAIT
|
2004-11-10 17:24:20 +00:00
|
|
|
was specified in
|
2004-11-03 13:51:07 +00:00
|
|
|
.I sem_flg
|
|
|
|
or the time limit specified in
|
|
|
|
.I timeout
|
|
|
|
expired.
|
|
|
|
.TP
|
|
|
|
.B EFAULT
|
|
|
|
An address specified in either the
|
|
|
|
.I sops
|
|
|
|
or
|
|
|
|
.I timeout
|
|
|
|
parameters isn't accessible.
|
|
|
|
.TP
|
|
|
|
.B EFBIG
|
|
|
|
For some operation the value of
|
|
|
|
.I sem_num
|
|
|
|
is less than 0 or greater than or equal to the number
|
|
|
|
of semaphores in the set.
|
|
|
|
.TP
|
|
|
|
.B EIDRM
|
|
|
|
The semaphore set was removed.
|
|
|
|
.TP
|
|
|
|
.B EINTR
|
|
|
|
While blocked in this system call, the process caught a signal.
|
|
|
|
.TP
|
|
|
|
.B EINVAL
|
|
|
|
The semaphore set doesn't exist, or
|
|
|
|
.I semid
|
|
|
|
is less than zero, or
|
|
|
|
.I nsops
|
|
|
|
has a non-positive value.
|
|
|
|
.TP
|
|
|
|
.B ENOMEM
|
|
|
|
The
|
|
|
|
.I sem_flg
|
2004-11-10 17:24:20 +00:00
|
|
|
of some operation specified
|
2004-11-03 13:51:07 +00:00
|
|
|
.B SEM_UNDO
|
|
|
|
and the system does not have enough memory to allocate the undo
|
|
|
|
structure.
|
|
|
|
.TP
|
|
|
|
.B ERANGE
|
|
|
|
For some operation
|
|
|
|
.I sem_op+semval
|
|
|
|
is greater than
|
|
|
|
.BR SEMVMX ,
|
|
|
|
the implementation dependent maximum value for
|
|
|
|
.IR semval .
|
|
|
|
.SH NOTES
|
|
|
|
The
|
|
|
|
.I sem_undo
|
|
|
|
structures of a process aren't inherited across a
|
|
|
|
.BR fork (2)
|
2004-11-10 17:24:20 +00:00
|
|
|
system call, but they are inherited across an
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR execve (2)
|
|
|
|
system call.
|
|
|
|
.PP
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semop ()
|
2004-11-03 13:51:07 +00:00
|
|
|
is never automatically restarted after being interrupted by a signal handler,
|
|
|
|
regardless of the setting of the
|
|
|
|
.B SA_RESTART
|
2004-11-10 17:24:20 +00:00
|
|
|
flag when establishing a signal handler.
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
|
|
|
.I semadj
|
|
|
|
is a per\-process integer which is simply the (negative) count
|
|
|
|
of all semaphore operations performed specifying the
|
|
|
|
.B SEM_UNDO
|
|
|
|
flag.
|
|
|
|
When a semaphore's value is directly set using the
|
|
|
|
.B SETVAL
|
|
|
|
or
|
|
|
|
.B SETALL
|
|
|
|
request to
|
|
|
|
.BR semctl (2),
|
|
|
|
the corresponding
|
|
|
|
.I semadj
|
|
|
|
values in all processes are cleared.
|
|
|
|
.PP
|
|
|
|
The \fIsemval\fP, \fIsempid\fP, \fIsemzcnt\fP, and \fIsemnct\fP values
|
|
|
|
for a semaphore can all be retrieved using appropriate
|
|
|
|
.BR semctl (2)
|
|
|
|
calls.
|
|
|
|
.PP
|
2004-12-13 08:39:28 +00:00
|
|
|
The following limits on semaphore set resources affect the
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semop ()
|
2004-11-03 13:51:07 +00:00
|
|
|
call:
|
|
|
|
.TP
|
|
|
|
.B SEMOPM
|
|
|
|
Maximum number of operations allowed for one
|
2004-11-10 17:24:20 +00:00
|
|
|
.BR semop ()
|
|
|
|
call (32)
|
|
|
|
(on Linux, this limit can be read and modified via the third field of
|
|
|
|
.IR /proc/sys/kernel/sem ).
|
|
|
|
.\" This /proc file is not available in Linux 2.2 and earlier -- MTK
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B SEMVMX
|
|
|
|
Maximum allowable value for
|
|
|
|
.IR semval :
|
|
|
|
implementation dependent (32767).
|
|
|
|
.PP
|
|
|
|
The implementation has no intrinsic limits for
|
|
|
|
the adjust on exit maximum value
|
|
|
|
.RB ( SEMAEM ),
|
|
|
|
the system wide maximum number of undo structures
|
|
|
|
.RB ( SEMMNU )
|
|
|
|
and the per\-process maximum number of undo entries system parameters.
|
2005-04-08 06:19:20 +00:00
|
|
|
|
|
|
|
.BR semtimedop ()
|
|
|
|
first appeared in Linux 2.5.52,
|
|
|
|
and was subsequently backported into kernel 2.4.22.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH BUGS
|
|
|
|
When a process terminates, its set of associated
|
|
|
|
.I semadj
|
|
|
|
structures is used to undo the effect of all of the
|
|
|
|
semaphore operations it performed with the
|
|
|
|
.B SEM_UNDO
|
|
|
|
flag.
|
|
|
|
This raises a difficulty: if one (or more) of these semaphore adjustments
|
|
|
|
would result in an attempt to decrease a semaphore's value below zero,
|
|
|
|
what should an implementation do?
|
|
|
|
One possible approach would be to block until all the semaphore
|
|
|
|
adjustments could be performed.
|
|
|
|
This is however undesirable since it could force process termination to
|
|
|
|
block for arbitrarily long periods.
|
|
|
|
Another possibility is that such semaphore adjustments could be ignored
|
|
|
|
altogether (somewhat analogously to failing when
|
|
|
|
.B IPC_NOWAIT
|
|
|
|
is specified for a semaphore operation).
|
|
|
|
Linux adopts a third approach: decreasing the semaphore value
|
|
|
|
as far as possible (i.e., to zero) and allowing process
|
|
|
|
termination to proceed immediately.
|
2005-07-12 10:25:16 +00:00
|
|
|
|
|
|
|
In kernels 2.6.x, x <= 10, there is a bug that in some circumstances
|
|
|
|
prevents a process that is waiting for a semaphore value to become
|
|
|
|
zero from being woken up when the value does actually become zero.
|
|
|
|
This bug is fixed in kernel 2.6.11.
|
|
|
|
.\" The bug report:
|
|
|
|
.\" http://marc.theaimsgroup.com/?l=linux-kernel&m=110260821123863&w=2
|
|
|
|
.\" the fix:
|
|
|
|
.\" http://marc.theaimsgroup.com/?l=linux-kernel&m=110261701025794&w=2
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "CONFORMING TO"
|
2006-08-03 13:57:17 +00:00
|
|
|
SVr4, POSIX.1-2001.
|
|
|
|
.\" SVr4 documents additional error conditions EINVAL, EFBIG, ENOSPC.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR semctl (2),
|
|
|
|
.BR semget (2),
|
|
|
|
.BR sigaction (2),
|
2006-03-25 20:50:40 +00:00
|
|
|
.BR capabilities (7),
|
2006-04-21 03:53:43 +00:00
|
|
|
.BR sem_overview (7),
|
|
|
|
.BR svipc (7)
|