| SHMAT(2) | System Calls Manual | SHMAT(2) | 
shmat, shmdt —
#include <sys/shm.h>
void *
  
  shmat(int
    shmid, const void
    *shmaddr, int
    shmflg);
int
  
  shmdt(const
    void *shmaddr);
shmat() maps the shared memory segment associated with
  the shared memory identifier shmid into the address
  space of the calling process. The address at which the segment is mapped is
  determined by the shmaddr parameter. If it is equal to
  0, the system will pick an address itself. Otherwise, an attempt is made to
  map the shared memory segment at the address shmaddr
  specifies. If SHM_RND is set in
  shmflg, the system will round the address down to a
  multiple of SHMLBA bytes
  (SHMLBA is defined in
  <sys/shm.h>).
A shared memory segment can be mapped read-only by specifying the
    SHM_RDONLY flag in shmflg.
shmdt() unmaps the shared memory segment
    that is currently mapped at shmaddr from the calling
    process' address space. shmaddr must be a value
    returned by a prior shmat() call. A shared memory
    segment will remain in existence until it is removed by a call to
    shmctl(2) with the
    IPC_RMID command.
shmat() returns the address at which the shared memory
  segment has been mapped into the calling process' address space when
  successful, shmdt() returns 0 on successful
  completion. Otherwise, a value of -1 is returned, and the global variable
  errno is set to indicate the error.
shmat() will fail if:
EACCES]ENOMEM]EINVAL]shmaddr specifies an illegal address.
EMFILE]shmdt() will fail if:
EINVAL]shmat and shmdt system calls
  conform to X/Open System Interfaces and Headers
  Issue 5 (“XSH5”).
| June 17, 2002 | NetBSD 10.0 |