Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ shmop(2) — sys5 — Apollo Domain/IX SR9.5

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

exec(2)

exit(2)

fork(2)

shmctl(2)

shmget(2)



SHMOP(2)                 DOMAIN/IX SYS5                  SHMOP(2)



NAME
     shmop - shared memory operations

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

     char *shmat(shmid, shmaddr, shmflg)
     int shmid;
     char *shmaddr
     int shmflg;

     int shmdt(shmaddr)
     char *shmaddr


DESCRIPTION
     Shmat attaches the shared memory segment associated with the
     shared memory identifier shmid to the data segment of the
     calling process.  The segment is attached at the address
     specified by one of the following criteria:

     ⊕  If shmaddr is equal to zero, the segment is attached at
        the first available address the system selects.

     ⊕  If shmaddr is not equal to zero and

          (shmflg & SHM_RND)

        is "true", the segment is attached at the address given
        by

          (shmaddr - (shamddr mod SHMLBA))


     ⊕  If shmaddr is not equal to zero and

          (shmflg & SHM_RND)

        is "false", the segment is attached at the address given
        by shmaddr.

     The segment is attached for reading if

       (shmflg & SHM_RDONLY)

     is "true" {READ}; otherwise, it is attached for reading and
     writing {READ/WRITE}.




Printed 12/4/86                                           SHMOP-1







SHMOP(2)                 DOMAIN/IX SYS5                  SHMOP(2)



RETURN VALUES
     Upon successful completion, shmat returns the data segment
     start address of the attached shared memory segment, and
     shmdt returns a value of zero.  A failed call returns -1 and
     sets errno as indicated below.

ERRORS
     Shmat will fail and not attach the shared memory segment if
     one or more of the following is true:

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

      [EACCES] Operation permission is denied to the calling pro-
               cess (see intro(2)).

     [ENOMEM]  The available data space is not large enough to
               accommodate the shared memory segment.

     [EINVAL]  Shmaddr is not equal to zero, and the value of

                 (shmaddr - (shamddr mod SHMLBA))

               is an illegal address.

     [EINVAL]  Shmaddr is not equal to zero,

                 (shmflg & SHM_RND)

               is "false", and the value of shmaddr is an illegal
               address.

     [EMFILE]  The number of shared memory segments attached to
               the calling process would exceed the system-
               imposed limit.

     Shmdt will fail and not detach the shared memory segment if

     [EINVAL]  Shmdt detaches from the calling process's data
               segment the shared memory segment located at the
               address specified by shmaddr.

     [EINVAL]  Shmaddr is not the data segment start address of a
               shared memory segment.

RELATED INFORMATION
     exec(2), exit(2), fork(2), shmctl(2), shmget(2)







SHMOP-2                                           Printed 12/4/86





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