Annotation of cci/usr/src/man/man2/semctl.2i, revision 1.1.1.1

1.1       root        1: .TH SEMCTL 2
                      2: .SH NAME
                      3: semctl \- semaphore control operations
                      4: .SH SYNOPSIS
                      5: .B #include <sys/types.h>
                      6: .br
                      7: .B #include <sys/ipc.h>
                      8: .br
                      9: .B #include <sys/sem.h>
                     10: .PP
                     11: .nf
                     12: .B "int semctl (semid, semnum, cmd, arg)"
                     13: .B int semid, cmd;
                     14: .B int semnum;
                     15: .B union semun {
                     16: .RS
                     17: .ta 8n 28n
                     18: .nf
                     19: .B int val;
                     20: .B struct semid_ds \(**buf;
                     21: .B ushort \(**array;
                     22: .fi
                     23: .RE
                     24: .B } arg;
                     25: .tr ~~
                     26: .SH DESCRIPTION
                     27: .I Semctl
                     28: provides a variety of semaphore control operations as specified by
                     29: .IR cmd .
                     30: .PP
                     31: The following
                     32: .IR cmd s
                     33: are executed with respect to the semaphore specified by
                     34: .IR semid " and " semnum:
                     35: .RS
                     36: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                     37: .SM
                     38: .B GETVAL
                     39: Return the value of semval (see
                     40: .IR intro (2)).
                     41: .SM {READ}
                     42: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                     43: .SM
                     44: .B SETVAL
                     45: Set the value of semval to
                     46: .IR arg.val .
                     47: .SM {ALTER}
                     48: When this cmd is successfully executed, the semadj value corresponding to the
                     49: specified semaphore in all processes is cleared.
                     50: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                     51: .SM
                     52: .B GETPID
                     53: Return the value of sempid.
                     54: .SM {READ}
                     55: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                     56: .SM
                     57: .B GETNCNT
                     58: Return the value of semncnt.
                     59: .SM {READ}
                     60: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                     61: .SM
                     62: .B GETZCNT
                     63: Return the value of semzcnt.
                     64: .SM {READ}
                     65: .RE
                     66: .PP
                     67: The following
                     68: .IR cmd s
                     69: return and set, respectively, every semval in the set of semaphores.
                     70: .RS
                     71: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                     72: .SM
                     73: .B GETALL
                     74: Place semvals into array pointed to by
                     75: .IR arg.array .
                     76: .SM {READ}
                     77: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                     78: .SM
                     79: .B SETALL
                     80: Set semvals according to the array pointed to by
                     81: .IR arg.array .
                     82: .SM {ALTER}
                     83: When this cmd is successfully executed the semadj values corresponding to each
                     84: specified semaphore in all processes are cleared.
                     85: .RE
                     86: .PP
                     87: The following
                     88: .IR cmd s
                     89: are also available:
                     90: .RS
                     91: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                     92: .SM
                     93: .B IPC_STAT
                     94: Place the current value of each member of the data structure associated with
                     95: .I semid
                     96: into the structure pointed to by
                     97: .IR arg.buf .
                     98: The contents of this structure are defined in
                     99: .IR intro (2).
                    100: .SM {READ}
                    101: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                    102: .SM
                    103: .B IPC_SET
                    104: Set the value of the following members of the data structure associated with
                    105: .I semid
                    106: to the corresponding value found in the structure pointed to by
                    107: .IR arg.buf :
                    108: .SP 1v
                    109: .RS
                    110: .nf
                    111: .B sem_perm.uid
                    112: .B sem_perm.gid
                    113: .B "sem_perm.mode /\(** only low 9 bits \(**/"
                    114: .fi
                    115: .RE
                    116: .IP
                    117: This cmd can only be executed by a process that has an effective user
                    118: .SM ID
                    119: equal to either that of super-user or to the value of
                    120: .B sem_perm.uid
                    121: in the data structure associated with
                    122: .IR semid .
                    123: .TP \w'\fBIPC_RMID\fP\ \ \ 'u
                    124: .SM
                    125: .B IPC_RMID
                    126: Remove the semaphore identifier specified by
                    127: .I semid
                    128: from the system and destroy the set of semaphores and data structure
                    129: associated with it.
                    130: This cmd can only be executed by a process that has an effective user
                    131: .SM ID
                    132: equal to either that of super-user or to the value of
                    133: .B sem_perm.uid
                    134: in the data structure associated with
                    135: .IR semid .
                    136: .PP
                    137: .I Semctl
                    138: will fail if one or more of the following are true:
                    139: .TP 15
                    140: \s-1\%[EINVAL]\s+1
                    141: .I Semid
                    142: is not a valid semaphore identifier.
                    143: .TP
                    144: \s-1\%[EINVAL]\s+1
                    145: .I Semnum
                    146: is less than zero or greater than
                    147: .BR sem_nsems .
                    148: .TP
                    149: \s-1\%[EINVAL]\s+1
                    150: .I Cmd
                    151: is not a valid command.
                    152: .TP
                    153: \s-1\%[EACCES]\s+1
                    154: Operation permission is denied to the calling process (see
                    155: .IR intro (2)).
                    156: .TP
                    157: \s-1\%[ERANGE]\s+1
                    158: .I Cmd
                    159: is
                    160: .SM
                    161: .B SETVAL
                    162: or
                    163: .SM
                    164: .B SETALL
                    165: and the value to which semval is to be set is greater than
                    166: the system imposed maximum.
                    167: .TP
                    168: \s-1\%[EPERM]\s+1
                    169: .I Cmd
                    170: is equal to
                    171: .SM
                    172: .B IPC_RMID
                    173: or
                    174: .SM
                    175: .B IPC_SET
                    176: and the effective user
                    177: .SM ID
                    178: of the calling process is not equal to that of super-user and it is
                    179: not equal to the value of
                    180: .B sem_perm.uid
                    181: in the data structure associated with
                    182: .IR semid .
                    183: .TP
                    184: \s-1\%[EFAULT]\s+1
                    185: .I Arg.buf
                    186: points to an illegal address.
                    187: .SH "RETURN VALUE"
                    188: Upon successful completion,
                    189: the value returned depends on
                    190: .I cmd\^
                    191: as follows:
                    192: .PD 0
                    193: .RS
                    194: .TP 1.5i
                    195: .SM
                    196: .B GETVAL
                    197: The value of semval.
                    198: .TP
                    199: .SM
                    200: .B GETPID
                    201: The value of sempid.
                    202: .TP
                    203: .SM
                    204: .B GETNCNT
                    205: The value of semncnt.
                    206: .TP
                    207: .SM
                    208: .B GETZCNT
                    209: The value of semzcnt.
                    210: .TP
                    211: All others
                    212: A value of 0.
                    213: .RE
                    214: .PP
                    215: .PD
                    216: Otherwise, a value of \-1 is returned and
                    217: .I errno\^
                    218: is set to indicate the error.
                    219: .SH SEE ALSO
                    220: intro(2), semget(2), semop(2).
                    221: .\"    @(#)semctl.2    6.2 of 9/6/83

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.