summaryrefslogtreecommitdiffstats
path: root/man3p/semctl.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man3p/semctl.3p')
-rw-r--r--man3p/semctl.3p227
1 files changed, 227 insertions, 0 deletions
diff --git a/man3p/semctl.3p b/man3p/semctl.3p
new file mode 100644
index 000000000..ea9baebe2
--- /dev/null
+++ b/man3p/semctl.3p
@@ -0,0 +1,227 @@
+.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
+.TH "SEMCTL" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\" semctl
+.SH NAME
+semctl \- XSI semaphore control operations
+.SH SYNOPSIS
+.LP
+\fB#include\ <sys/sem.h>
+.br
+.sp
+int semctl(int\fP \fIsemid\fP\fB, int\fP \fIsemnum\fP\fB, int\fP \fIcmd\fP\fB,
+\&...); \fP
+\fB
+.br
+\fP
+.SH DESCRIPTION
+.LP
+The \fIsemctl\fP() function operates on XSI semaphores (see the Base
+Definitions volume of IEEE\ Std\ 1003.1-2001, Section 4.15, Semaphore).
+It is unspecified whether this function interoperates
+with the realtime interprocess communication facilities defined in
+\fIRealtime\fP .
+.LP
+The \fIsemctl\fP() function provides a variety of semaphore control
+operations as specified by \fIcmd\fP. The fourth argument
+is optional and depends upon the operation requested. If required,
+it is of type \fBunion semun\fP, which the application shall
+explicitly declare:
+.sp
+.RS
+.nf
+
+\fBunion semun {
+ int val;
+ struct semid_ds *buf;
+ unsigned short *array;
+} arg;
+\fP
+.fi
+.RE
+.LP
+The following semaphore control operations as specified by \fIcmd\fP
+are executed with respect to the semaphore specified by
+\fIsemid\fP and \fIsemnum\fP. The level of permission required for
+each operation is shown with each command; see \fIXSI Interprocess
+Communication\fP . The symbolic names for the values of \fIcmd\fP
+are
+defined in the \fI<sys/sem.h>\fP header:
+.TP 7
+GETVAL
+Return the value of \fIsemval\fP; see \fI<sys/sem.h>\fP. Requires
+read
+permission.
+.TP 7
+SETVAL
+Set the value of \fIsemval\fP to \fIarg.val\fP, where \fIarg\fP is
+the value of the fourth argument to \fIsemctl\fP(). When
+this command is successfully executed, the \fIsemadj\fP value corresponding
+to the specified semaphore in all processes is
+cleared. Requires alter permission; see \fIXSI Interprocess Communication\fP
+\&.
+.TP 7
+GETPID
+Return the value of \fIsempid\fP. Requires read permission.
+.TP 7
+GETNCNT
+Return the value of \fIsemncnt\fP. Requires read permission.
+.TP 7
+GETZCNT
+Return the value of \fIsemzcnt\fP. Requires read permission.
+.sp
+.LP
+The following values of \fIcmd\fP operate on each \fIsemval\fP in
+the set of semaphores:
+.TP 7
+GETALL
+Return the value of \fIsemval\fP for each semaphore in the semaphore
+set and place into the array pointed to by
+\fIarg.array\fP, where \fIarg\fP is the fourth argument to \fIsemctl\fP().
+Requires read permission.
+.TP 7
+SETALL
+Set the value of \fIsemval\fP for each semaphore in the semaphore
+set according to the array pointed to by \fIarg.array\fP,
+where \fIarg\fP is the fourth argument to \fIsemctl\fP(). When this
+command is successfully executed, the \fIsemadj\fP values
+corresponding to each specified semaphore in all processes are cleared.
+Requires alter permission.
+.sp
+.LP
+The following values of \fIcmd\fP are also available:
+.TP 7
+IPC_STAT
+Place the current value of each member of the \fBsemid_ds\fP data
+structure associated with \fIsemid\fP into the structure
+pointed to by \fIarg.buf\fP, where \fIarg\fP is the fourth argument
+to \fIsemctl\fP(). The contents of this structure are
+defined in \fI<sys/sem.h>\fP. Requires read permission.
+.TP 7
+IPC_SET
+Set the value of the following members of the \fBsemid_ds\fP data
+structure associated with \fIsemid\fP to the corresponding
+value found in the structure pointed to by \fIarg.buf\fP, where \fIarg\fP
+is the fourth argument to \fIsemctl\fP():
+.sp
+.RS
+.nf
+
+\fBsem_perm.uid
+sem_perm.gid
+sem_perm.mode
+\fP
+.fi
+.RE
+.LP
+The mode bits specified in \fIIPC General Description\fP are copied
+into the
+corresponding bits of the \fIsem_perm.mode\fP associated with \fIsemid\fP.
+The stored values of any other bits are
+unspecified.
+.LP
+This command can only be executed by a process that has an effective
+user ID equal to either that of a process with appropriate
+privileges or to the value of \fIsem_perm.cuid\fP or \fIsem_perm.uid\fP
+in the \fBsemid_ds\fP data structure associated with
+\fIsemid\fP.
+.TP 7
+IPC_RMID
+Remove the semaphore identifier specified by \fIsemid\fP from the
+system and destroy the set of semaphores and \fBsemid_ds\fP
+data structure associated with it. This command can only be executed
+by a process that has an effective user ID equal to either
+that of a process with appropriate privileges or to the value of \fIsem_perm.cuid\fP
+or \fIsem_perm.uid\fP in the \fBsemid_ds\fP
+data structure associated with \fIsemid\fP.
+.sp
+.SH RETURN VALUE
+.LP
+If successful, the value returned by \fIsemctl\fP() depends on \fIcmd\fP
+as follows:
+.TP 7
+GETVAL
+The value of \fIsemval\fP.
+.TP 7
+GETPID
+The value of \fIsempid\fP.
+.TP 7
+GETNCNT
+The value of \fIsemncnt\fP.
+.TP 7
+GETZCNT
+The value of \fIsemzcnt\fP.
+.TP 7
+All others
+0.
+.sp
+.LP
+Otherwise, \fIsemctl\fP() shall return -1 and set \fIerrno\fP to indicate
+the error.
+.SH ERRORS
+.LP
+The \fIsemctl\fP() function shall fail if:
+.TP 7
+.B EACCES
+Operation permission is denied to the calling process; see \fIXSI
+Interprocess
+Communication\fP .
+.TP 7
+.B EINVAL
+The value of \fIsemid\fP is not a valid semaphore identifier, or the
+value of \fIsemnum\fP is less than 0 or greater than or
+equal to \fIsem_nsems\fP, or the value of \fIcmd\fP is not a valid
+command.
+.TP 7
+.B EPERM
+The argument \fIcmd\fP is equal to IPC_RMID or IPC_SET and the effective
+user ID of the calling process is not equal to that
+of a process with appropriate privileges and it is not equal to the
+value of \fIsem_perm.cuid\fP or \fIsem_perm.uid\fP in the
+data structure associated with \fIsemid\fP.
+.TP 7
+.B ERANGE
+The argument \fIcmd\fP is equal to SETVAL or SETALL and the value
+to which \fIsemval\fP is to be set is greater than the
+system-imposed maximum.
+.sp
+.LP
+\fIThe following sections are informative.\fP
+.SH EXAMPLES
+.LP
+None.
+.SH APPLICATION USAGE
+.LP
+The fourth parameter in the SYNOPSIS section is now specified as \fB"..."\fP
+in order to avoid a clash with the ISO\ C
+standard when referring to the union \fIsemun\fP (as defined in Issue
+3) and for backwards-compatibility.
+.LP
+The POSIX Realtime Extension defines alternative interfaces for interprocess
+communication. Application developers who need to
+use IPC should design their applications so that modules using the
+IPC routines described in \fIXSI Interprocess Communication\fP can
+be easily modified to use the alternative
+interfaces.
+.SH RATIONALE
+.LP
+None.
+.SH FUTURE DIRECTIONS
+.LP
+None.
+.SH SEE ALSO
+.LP
+\fIXSI Interprocess Communication\fP , \fIRealtime\fP , \fIsemget\fP()
+, \fIsemop\fP() , \fIsem_close\fP() , \fIsem_destroy\fP() , \fIsem_getvalue\fP()
+, \fIsem_init\fP() , \fIsem_open\fP() , \fIsem_post\fP() , \fIsem_unlink\fP()
+, \fIsem_wait\fP() , the Base Definitions volume of IEEE\ Std\ 1003.1-2001,
+\fI<sys/sem.h>\fP
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group. In the
+event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .