File:  [MW Coherent from dump] / coherent / a / usr / man / COHERENT / semctl
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Wed May 29 04:56:34 2019 UTC (7 years ago) by root
Branches: MarkWilliams, MAIN
CVS tags: relic, HEAD
coherent



semctl()               COHERENT System Call              semctl()




Control semaphore operations

#include <sys/sem.h>
sseemmccttll(_s_e_m_i_d, _s_e_m_n_u_m, _c_m_d, _a_r_g)
iinntt _s_e_m_i_d, _c_m_d, _s_e_m_n_u_m;
uunniioonn sseemmuunn {
        iinntt _v_a_l;
        ssttrruucctt sseemmiidd_ddss *_b_u_f;
        uunnssiiggnneedd sshhoorrtt _a_r_r_a_y[];
} _a_r_g;

semctl controls a  variety of semaphore operations.  cmd sets the
operation to  be performed; the following  cmds are executed with
respect to the semaphore specified by semid and semnum:

GGEETTVVAALL
Return the value of sseemmvvaall (READ).

SSEETTVVAALL
Set the value of sseemmvvaall to _a_r_g._v_a_l (ALTER).

GGEETTPPIIDD
Return the value of sseemmppiidd (READ).

GGEETTNNCCNNTT
Return the value of sseemmnnccnntt (READ).

GGEETTZZCCNNTT
Return the value of sseemmzzccnntt (READ).

The following cmds  return and set, respectively, every semval in
the set of semaphores.

GGEETTAALLLL     Place  semvals  into  array  pointed to  by  _a_r_g._a_r_r_a_y
          (READ).

SSEETTAALLLL     Set  semvals  according to  the  array  pointed to  by
          _a_r_g._a_r_r_a_y (ALTER).

The following cmds are also available:

IIPPCC_SSTTAATT   Place the  current value  of each  member of  the data
          structure  associated  with  semid into  the  structure
          pointed to by _a_r_g._b_u_f (READ).

IIPPCC_SSEETT    Set the  value of  the following  members of  the data
          structure  associated with  semid to  the corresponding
          value found in the structure pointed to by arg.buf:

          sem_perm.uid
          sem_perm.gid
          sem_perm.mode /* only low 9 bits */

          This command can only be executed by a process that has


COHERENT Lexicon                                           Page 1




semctl()               COHERENT System Call              semctl()



          an effective  user identifier  equal to either  that of
          superuser or  to the value of  sem_perm.uid in the data
          structure associated with semid.

IIPPCC_RRMMIIDD  Remove  the system  identifier specified by  semid from
          the system  and destroy the set  of semaphores and data
          structure associated with it.  This cmd can only be ex-
          ecuted by  a process that  has an effective  user iden-
          tifier equal  to either  that of  super user or  to the
          value of sem_perm.uid  in the data structure associated
          with semid.

semctl will fail if one or more of the following are true:

*  semid is not a valid semaphore identifier [EINVAL].

*  semnum is less than zero or greater than sem_nsems [EINVAL].

*  cmd is not a valid command [EINVAL].

*   Operation  permission  is  denied  to  the  calling  process.
   [EACCES]

*  cmd is SETVAL or SETALL and the value to which semval is to be
   set is greater than the system imposed maximum [ERANGE].

*  cmd  is equal  to IPC_RMID or  IPC_SET and the  effective user
   identifier of the calling process  is not equal to that of su-
   peruser and  it is not  equal to the value  of sem_perm.uid in
   the data structure associated with semid [EPERM].

*  arg.buf points to an illegal address [EFAULT].

***** Return Value *****

Upon successful completion,  the value returned depends on cmd as
follows:


     GGEETTVVAALL    The value of sseemmvvaall.
     GGEETTPPIIDD    The value of sseemmppiidd.
     GGEETTNNCCNNTT   The value of sseemmnnccnntt.
     GGEETTZZCCNNTT   The value of sseemmzzccnntt.
     All othersZero


Otherwise,  semctl returns  -1 and sets  eerrrrnnoo to  an appropriate
value.

***** Files *****

/usr/include/sys/ipc.h
/usr/include/sys/sem.h
/dev/sem
/drv/sem


COHERENT Lexicon                                           Page 2




semctl()               COHERENT System Call              semctl()




***** See Also *****

COHERENT system calls, sem, semget(), semop()

***** Notes *****

To  improve  portability,  the  COHERENT  system  implements  the
semaphore functions  as a device driver rather  than as an actual
system call.















































COHERENT Lexicon                                           Page 3



unix.superglobalmegacorp.com

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