Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ shmget(S) — Xenix 2.3.4g

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(S)

shmctl(S)

shmop(S)



     SHMGET(S)                XENIX System V                 SHMGET(S)



     Name
          shmget - Gets a shared memory segment.

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

          int shmget (key, size, shmflg)
          key_t key;
          int size, shmflg;

     Description
          shmget returns the shared memory identifier associated with
          key.

          A shared memory identifier and an associated data structure
          and shared memory segment of size size bytes (see intro(S))
          are created for key if one of the following are true:

               key is equal to IPC_PRIVATE.

               key does not already have a shared memory identifier
               associated with it, and (shmflg & IPC_CREAT) is
               ``true''.

          Upon creation, the data structure associated with the new
          shared memory identifier is initialized as follows:

               shm_perm.cuid, shm_perm.uid, shm_perm.cgid, and
               shm_perm.gid are set equal to the effective user ID and
               effective group ID, respectively, of the calling
               process.

               The low-order 9 bits of shm_perm.mode are set equal to
               the low-order 9 bits of shmflg.  shm_segsz is set equal
               to the value of size.

               shm_lpid, shm_nattch, shm_atime, and shm_dtime are set
               equal to 0.

               shm_ctime is set equal to the current time.

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

               size is less than the system-imposed minimum or greater
               than the system-imposed maximum.  The minimum for 286
               processes is 1 byte, and the maximum is 64K or 65535
               bytes. The minimum and maximum for 386 processes are
               configurable.  [EINVAL]

               A shared memory identifier exists for key but operation



     Page 1                                           (printed 8/7/87)





     SHMGET(S)                XENIX System V                 SHMGET(S)



               permission (see intro(S)) as specified by the low-order
               9 bits of shmflg would not be granted. [EACCES]

               A shared memory identifier exists for key but the size
               of the segment associated with it is less than size,
               which cannot be equal to zero.  [EINVAL]

               A shared memory identifier does not exist for key and
               (shmflg & IPC_CREAT) is ``false''.  [ENOENT]

               A shared memory identifier is to be created but the
               system-imposed limit on the maximum number of allowed
               shared memory identifiers system wide would be
               exceeded.  [ENOSPC]

               A shared memory identifier and associated shared memory
               segment are to be created but the amount of available
               physical memory is not sufficient to fill the request.
               [ENOMEM]

               A shared memory identifier exists for key but ( (shmflg
               & IPC_CREAT) and (shmflg & IPC_EXCL) ) is ``true''.  -
               [EEXIST]

     Return Value
          Upon successful completion, a non-negative integer, namely a
          shared memory identifier, is returned.  Otherwise, a value
          of -1 is returned and errno is set to indicate the error.

     See Also
          intro(S), shmctl(S), shmop(S)

     Notes
          Programs using this function must be compiled with -Me
          compiler option.




















     Page 2                                           (printed 8/7/87)



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