semctl(2) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

semctl(2)

semctl(2)                        System Calls                        semctl(2)



NAME
       semctl - semaphore control operations

SYNOPSIS
       #include <sys/types.h>
       #include <sys/ipc.h>
       #include <sys/sem.h>

       int semctl(int semid, int semnum, int cmd...);

DESCRIPTION
       The  semctl()  function  provides a variety of semaphore control opera‐
       tions as specified by cmd. The fourth argument is  optional,  depending
       upon  the  operation requested. If required, it is of type union semun,
       which must be explicitly declared by the application program.

         union semun {
                 int             val;
                 struct semid_ds *buf;
                 ushort_t        *array;
         } arg ;



       The permission required for a semaphore operation is given as  {token},
       where  token  is the type of permission needed. The types of permission
       are interpreted as follows:

         00400    READ by user
         00200    ALTER by user
         00040    READ by group
         00020    ALTER by group
         00004    READ by others
         00002    ALTER by others



       See the Semaphore Operation Permissions subsection of  the  DEFINITIONS
       section of Intro(2) for more information. The following semaphore oper‐
       ations as specified by cmd are executed with respect to  the  semaphore
       specified by semid and semnum.

       GETVAL     Return the value of semval (see Intro(2)). {READ}


       SETVAL     Set  the  value of semval to arg.val. {ALTER} When this com‐
                  mand is successfully executed, the semadj value  correspond‐
                  ing to the specified semaphore in all processes is cleared.


       GETPID     Return the value of (int) sempid. {READ}


       GETNCNT    Return the value of semncnt. {READ}


       GETZCNT    Return the value of semzcnt. {READ}



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

       GETALL    Place semvals into array pointed to by arg.array. {READ}


       SETALL    Set semvals according to the array pointed to  by  arg.array.
                 {ALTER}.  When  this cmd is successfully executed, the semadj
                 values corresponding to each specified semaphore in all  pro‐
                 cesses are cleared.



       The following operations are also available.

       IPC_STAT    Place  the  current value of each member of the data struc‐
                   ture associated with semid into the structure pointed to by
                   arg.buf.  The  contents  of  this  structure are defined in
                   Intro(2). {READ}


       IPC_SET     Set the value of the following members of the  data  struc‐
                   ture 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  /* access permission bits only */

                   This command can be executed only by  a  process  that  has
                   either  the {PRIV_IPC_OWNER} privilege or an effective user
                   ID equal to the value of msg_perm.cuid or  msg_perm.uid  in
                   the  data  structure  associated with msqid. Only a process
                   with the  {PRIV_SYS_IPC_CONFIG}  privilege  can  raise  the
                   value of msg_qbytes.


       IPC_RMID    Remove the semaphore identifier specified by semid from the
                   system and destroy the set of semaphores and data structure
                   associated  with it. This command can be executed only by a
                   process that  has  the  {PRIV_IPC_OWNER}  privilege  or  an
                   effective  user  ID  equal to the value of sem_perm.cuid or
                   sem_perm.uid in the data structure associated with semid.


RETURN VALUES
       Upon successful completion, the value returned depends on cmd  as  fol‐
       lows:

       GETVAL     the value of semval


       GETPID     the value of (int) sempid


       GETNCNT    the value of semncnt


       GETZCNT    the value of semzcnt



       All  other  successful  completions return 0; otherwise, −1 is returned
       and errno is set to indicate the error.

ERRORS
       The semctl() function will fail if:

       EACCES       Operation permission is denied to the calling process (see
                    Intro(2)).


       EFAULT       The  source  or  target is not a valid address in the user
                    process.


       EINVAL       The semid argument is not a  valid  semaphore  identifier;
                    the  semnum  argument  is  less  than  0  or  greater than
                    sem_nsems −1; or the cmd argument is not a  valid  command
                    or  is  IPC_SET  and  sem_perm.uid  or sem_perm.gid is not
                    valid.


       EPERM        The cmd argument is equal  to  IPC_RMID  or  IPC_SET,  the
                    effective  user  ID of the calling process is not equal to
                    the value of sem_perm.cuid or  sem_perm.uid  in  the  data
                    structure  associated  with semid, and {PRIV_IPC_OWNER} is
                    not asserted in the effective set of the calling process.


       EOVERFLOW    The cmd argument is IPC_STAT and uid or gid is  too  large
                    to be stored in the structure pointed to by arg.buf.


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


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE  VALUE  _  Interface  StabilityCommitted  _  StandardSee  stan‐
       dards(7).


SEE ALSO
       ipcs(1),  Intro(2),  semget(2),  semop(2), standards(7), attributes(7),
       privileges(7)



Oracle Solaris 11.4               1 Feb 2003                         semctl(2)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3