Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

shmget(2)

shmop(2)





   shmctl(2)                                                         shmctl(2)


   NAME
         shmctl - shared memory control operations

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

         int shmctl (int shmid, int 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 access permission bits */

                     This command can be executed only 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 command can be
                     executed only 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 command can be executed only by a process
                     that has an effective user ID equal to super-user.

         SHM_UNLOCK  Unlock the shared memory segment specified by shmid.
                     This command can be executed only by a process that has
                     an effective user ID equal to super-user.

         shmctl fails if one or more of the following are true:




   7/91                                                                 Page 1









   shmctl(2)                                                         shmctl(2)


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

         EINVAL      shmid is not a valid shared memory identifier.

         EINVAL      cmd is not a valid command.

         EINVAL      cmd is IPC_SET and shm_perm.uid or shm_perm.gid is not
                     valid.

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

         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(2), shmop(2).

   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.

















   Page 2                                                                 7/91





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