unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-4.1.3)
Page:
Section:
Apropos / Subsearch:
optional field

SHMCTL(2)                     System Calls Manual                    SHMCTL(2)



NAME
       shmctl - shared memory control operations

SYNOPSIS
       #include <&lt;sys/types.h>&gt;
       #include <&lt;sys/ipc.h>&gt;
       #include <&lt;sys/shm.h>&gt;

       int shmctl (shmid, cmd, buf)
       int shmid, cmd;
       struct shmid_ds *buf;

DESCRIPTION
       shmctl()  provides  a  variety  of  shared memory control operations as
       specified by cmd.  The following cmds are available:

       IPC_STAT       Place the current value  of  each  member  of  the  data
                      structure  associated  with  shmid  into  the  structure
                      pointed to by buf.  The contents of this  structure  are
                      defined in intro(2).  [READ]

       IPC_SET        Set  the  value  of  the  following  members of the data
                      structure associated with  shmid  to  the  corresponding
                      value found in the structure pointed to by buf:

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

                      This  cmd  can only be executed by a process that has an
                      effective user ID equal to that of super-user, or to the
                      value  of  shm_perm.cuid  or  shm_perm.uid  in  the data
                      structure associated with shmid.

       IPC_RMID       Remove the shared memory identifier specified  by  shmid
                      from  the  system.  If no processes are currently mapped
                      to the corresponding shared  memory  segment,  then  the
                      segment  is  removed  and  the  associated resources are
                      reclaimed.   Otherwise,  the   segment   will   persist,
                      although  shmget(2) will not be able to locate it, until
                      it is no longer mapped by any  process.   This  cmd  can
                      only be executed by a process that has an effective user
                      ID equal to that of  super-user,  or  to  the  value  of
                      shm_perm.cuid  or  shm_perm.uid  in  the  data structure
                      associated with shmid.

       In the shmop(2) and shmctl(2) system call descriptions, the  permission
       required  for  an operation is given as "[token]", where "token" is the
       type of permission needed interpreted as follows:

              00400                       Read by user
              00200                       Write by user
              00060                       Read, Write by group
              00006                       Read, Write by others

       Read and Write permissions on a shmid are granted to a process  if  one
       or more of the following are true:

              The effective user ID of the process is super-user.

              The  effective user ID of the process matches shm_perm.[c]uid in
              the data structure associated with shmid and the appropriate bit
              of the "user" portion (0600) of shm_perm.mode is set.

              The   effective   user   ID   of  the  process  does  not  match
              shm_perm.[c]uid and  the  effective  group  ID  of  the  process
              matches  shm_perm.[c]gid  and the appropriate bit of the "group"
              portion (060) of shm_perm.mode is set.

              The  effective  user  ID  of  the   process   does   not   match
              shm_perm.[c]uid  and  the effective group ID of the process does
              not match shm_perm.[c]gid and the appropriate bit of the "other"
              portion (06) of shm_perm.mode is set.

       Otherwise, the corresponding permissions are denied.

RETURN VALUES
       shmctl() returns:

       0      on success.

       -1     on failure and sets errno to indicate the error.

ERRORS
       EACCES         cmd is equal to IPC_STAT and [READ] operation permission
                      is denied to the calling process (see intro(2)).

       EFAULT         buf points to an illegal address.

       EINVAL         shmid is not a valid shared memory identifier.

                      cmd is not a valid command.

       EPERM          cmd is equal to IPC_RMID or IPC_SET  and  the  effective
                      user  ID of the calling process is not super-user or the
                      value of  shm_perm.cuid  or  shm_perm.uid  in  the  data
                      structure associated with shmid.

SEE ALSO
       ipcrm(1), ipcs(1), intro(2), shmget(2), shmop(2)



                                21 January 1990                      SHMCTL(2)