Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought



     SHMCTL(S)                 UNIX System V                 SHMCTL(S)



     Name
          shmctl - shared memory control operations

     Syntax
          #include <sys/types.h>
          #include <sys/ipc.h>
          #include <sys/shm.h>

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

     Description
          The shmctl system call 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(S).  {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 and destroy the shared memory segment
               and data structure associated with it.  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.

          SHM_LOCK
               Lock the shared memory segment specified by shmid in
               memory.  This cmd can only be executed by a process
               that has an effective user ID equal to super-user.

          SHM_UNLOCK
               Unlock the shared memory segment specified by shmid.

               This cmd can only be executed by a process that has an
               effective user ID equal to super-user.

          The shmctl system call will fail if one or more of the
          following is true:

          [EINVAL]    shmid is not a valid shared memory identifier.

          [EINVAL]    cmd is not a valid command.

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

          [EPERM]     cmd is equal to IPC_RMID or IPC_SET, and the
                      effective user ID of the calling process is not
                      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.

          [EPERM]     cmd is equal to SHM_LOCK or SHM_UNLOCK, and the
                      effective user ID of the calling process is not
                      equal to that of super-user.

          [EFAULT]    buf points to an illegal address.

          [ENOMEM]    cmd is equal to SHM_LOCK, and there is not
                      enough memory.

     See Also
          shmget(S), shmop(S)

     Diagnostics
          Upon successful completion, a value of 0 is returned.
          Otherwise, a value of -1 is returned, and errno is set to
          indicate the error.

     Notes
          The user must explicitly remove shared memory segments after
          the last reference to them has been removed.

     Standards Conformance
          shmctl is conformant with:
          AT&T SVID Issue 2, Select Code 307-127;
          and The X/Open Portability Guide II of January 1987.




                                             (printed 6/20/89)



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026