'\" te .\" Copyright (c) 2006, Sun Microsystems, Inc. All Rights Reserved. .\" Copyright 1989 AT&T .TH semget 2 "14 Aug 2006" "SunOS 5.11" "System Calls" .SH NAME semget \- get set of semaphores .SH SYNOPSIS .LP .nf #include #include #include \fBint\fR \fBsemget\fR(\fBkey_t\fR \fIkey\fR, \fBint\fR \fInsems\fR, \fBint\fR \fIsemflg\fR); .fi .SH DESCRIPTION .sp .LP The \fBsemget()\fR function returns the semaphore identifier associated with \fIkey\fR. .sp .LP A semaphore identifier and associated data structure and set containing \fInsems\fR semaphores (see \fBIntro\fR(2)) are created for \fIkey\fR if one of the following is true: .RS +4 .TP .ie t \(bu .el o \fIkey\fR is equal to \fBIPC_PRIVATE\fR. .RE .RS +4 .TP .ie t \(bu .el o \fIkey\fR does not already have a semaphore identifier associated with it, and (\fIsemflg\fR\fB&IPC_CREAT\fR) is true. .RE .sp .LP On creation, the data structure associated with the new semaphore identifier is initialized as follows: .RS +4 .TP .ie t \(bu .el o \fBsem_perm.cuid\fR, \fBsem_perm.uid\fR, \fBsem_perm.cgid\fR, and \fBsem_perm.gid\fR are set equal to the effective user \fBID\fR and effective group \fBID,\fR respectively, of the calling process. .RE .RS +4 .TP .ie t \(bu .el o The access permission bits of \fBsem_perm.mode\fR are set equal to the access permission bits of \fIsemflg\fR. .RE .RS +4 .TP .ie t \(bu .el o \fBsem_nsems\fR is set equal to the value of \fInsems\fR. .RE .RS +4 .TP .ie t \(bu .el o \fBsem_otime\fR is set equal to 0 and \fBsem_ctime\fR is set equal to the current time. .RE .SH RETURN VALUES .sp .LP Upon successful completion, a non-negative integer representing a semaphore identifier is returned. Otherwise, \fB\(mi1\fR is returned and \fBerrno\fR is set to indicate the error. .SH ERRORS .sp .LP The \fBsemget()\fR function will fail if: .sp .ne 2 .mk .na \fB\fBEACCES\fR\fR .ad .RS 10n .rt A semaphore identifier exists for \fIkey\fR, but operation permission (see \fBIntro\fR(2)) as specified by the low-order 9 bits of \fIsemflg\fR would not be granted. .RE .sp .ne 2 .mk .na \fB\fBEEXIST\fR\fR .ad .RS 10n .rt A semaphore identifier exists for \fIkey\fR but both (\fIsemflg\fR\fB&IPC_CREAT\fR) and (\fIsemflg\fR\fB&IPC_EXCL\fR) are both true. .RE .sp .ne 2 .mk .na \fB\fBEINVAL\fR\fR .ad .RS 10n .rt The \fInsems\fR argument is either less than or equal to 0 or greater than the system-imposed limit. See NOTES. .sp A semaphore identifier exists for \fIkey\fR, but the number of semaphores in the set associated with it is less than \fInsems\fR and \fInsems\fR is not equal to 0. .RE .sp .ne 2 .mk .na \fB\fBENOENT\fR\fR .ad .RS 10n .rt A semaphore identifier does not exist for \fIkey\fR and (\fIsemflg\fR\fB&IPC_CREAT\fR) is false. .RE .sp .ne 2 .mk .na \fB\fBENOSPC\fR\fR .ad .RS 10n .rt A semaphore identifier is to be created but the system-imposed limit on the maximum number of allowed semaphores or semaphore identifiers system-wide would be exceeded. See NOTES. .RE .SH ATTRIBUTES .sp .LP See \fBattributes\fR(5) for descriptions of the following attributes: .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . ATTRIBUTE TYPEATTRIBUTE VALUE _ Interface StabilityCommitted _ StandardSee \fBstandards\fR(5). .TE .SH SEE ALSO .sp .LP \fBipcrm\fR(1), \fBipcs\fR(1), \fBrctladm\fR(1M), \fBIntro\fR(2), \fBsemctl\fR(2), \fBsemop\fR(2), \fBsetrctl\fR(2), \fBftok\fR(3C), \fBattributes\fR(5), \fBstandards\fR(5) .SH NOTES .sp .LP The system-imposed limit on the value of the \fInsems\fR argument is the maintained on a per-process basis using the \fBprocess.max-sem-nsems\fR resource control. .sp .LP The system-imposed limit on the number of semaphore identifiers is maintained on a per-project basis using the \fBproject.max-sem-ids\fR resource control. The \fBzone.max-sem-ids\fR resource control limis the total number of semaphore identifiers that can be allocated by a zone. .sp .LP See \fBrctladm\fR(1M) and \fBsetrctl\fR(2) for information about using resource controls.