Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ shmat(2) — A/UX 2.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

exec(2)

exit(2)

fork(2)

intro(2)

shmctl(2)

shmget(2)




shmop(2) shmop(2)
NAME shmop, shmat, shmdt - shared memory operations SYNOPSIS #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 specified by shmid to the data seg- ment 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 as selected by the system. If shmaddr is not equal to zero and (shmflg & SHM_RND) is ``true'', the segment is attached at the address given by (shmaddr - (shmaddr modulus 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'', otherwise it is attached for reading and writ- ing. RETURN VALUES Upon successful completion, the return value is as follows: shmat returns the data segment start address of the at- tached shared memory segment. shmdt returns a value of 0. Otherwise, a value of -1 is returned and errno is set to in- dicate the error. ERRORS shmat will fail and not attach the shared memory segment if one or more of the following is true. April, 1990 1



shmop(2) shmop(2)
[EINVAL] shmid is not a valid shared memory identif- ier. [EACCES] Operation permission is denied to the calling process (see intro(2)). [EAGAIN] The system has temporarily exhausted its available memory or swap space. [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 - (shmaddr modulus 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. [EINVAL] shmdt detaches from the calling process's data segment the shared memory segment locat- ed at the address specified by shmaddr. [EINVAL] shmdt will fail and not detach the shared memory segment if shmaddr is not the data segment start address of a shared memory seg- ment. SEE ALSO exec(2), exit(2), fork(2), intro(2), shmctl(2), shmget(2). 2 April, 1990

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