.\" Rewrote semun text
.\" Added semid_ds and ipc_perm structure definitions
.\" 2005-08-02, mtk: Added IPC_INFO, SEM_INFO, SEM_STAT descriptions.
+.\" 2018-03-20, dbueso: Added SEM_STAT_ANY description.
.\"
-.TH SEMCTL 2 2016-10-08 "Linux" "Linux Programmer's Manual"
+.TH SEMCTL 2 2019-08-02 "Linux" "Linux Programmer's Manual"
.SH NAME
semctl \- System V semaphore control operations
.SH SYNOPSIS
The \fIcalling program\fP must define this union as follows:
.PP
.in +4n
-.nf
+.EX
union semun {
int val; /* Value for SETVAL */
struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */
struct seminfo *__buf; /* Buffer for IPC_INFO
(Linux-specific) */
};
-.fi
+.EE
.in
.PP
The
time_t sem_ctime; /* Last change time */
unsigned long sem_nsems; /* No. of semaphores in set */
};
-.fi
+.EE
.in
.PP
The
.BR IPC_SET ):
.PP
.in +4n
-.nf
+.EX
struct ipc_perm {
key_t __key; /* Key supplied to semget(2) */
uid_t \fBuid\fP; /* Effective UID of owner */
unsigned short \fBmode\fP; /* Permissions */
unsigned short __seq; /* Sequence number */
};
-.fi
+.EE
.in
.PP
Valid values for
the kernel's internal array that maintains information about
all semaphore sets on the system.
.TP
+.BR SEM_STAT_ANY " (Linux-specific, since Linux 4.17)"
+Return a
+.I seminfo
+structure containing the same information as for
+.BR SEM_STAT .
+However,
+.I sem_perm.mode
+is not checked for read access for
+.IR semid
+meaning that any user can employ this operation (just as any user may read
+.IR /proc/sysvipc/sem
+to obtain the same information).
+.TP
.B GETALL
Return
.B semval
semaphore sets.
(This information can be used with repeated
.B SEM_STAT
+or
+.B SEM_STAT_ANY
operations to obtain information about all semaphore sets on the system.)
.TP
.B SEM_INFO
.B SEM_STAT
the identifier of the semaphore set whose index was given in
.IR semid .
+.TP
+.B SEM_STAT_ANY
+as for
+.BR SEM_STAT .
.PP
All other
.I cmd
.BR GETZCNT ,
.BR IPC_STAT ,
.BR SEM_STAT ,
+.BR SEM_STAT_ANY ,
.BR SETALL ,
or
.B SETVAL
.BR semop (2),
.BR capabilities (7),
.BR sem_overview (7),
-.BR svipc (7)
+.BR sysvipc (7)