shmop man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

shmop(2)			 System Calls			      shmop(2)

NAME
       shmop, shmat, shmdt - shared memory operations

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

       void *shmat(int shmid, const void *shmaddr, int shmflg);

       int shmdt(char *shmaddr);

   Standard conforming
       int shmdt(const void *shmaddr);

DESCRIPTION
       The shmat() function attaches the shared memory segment associated with
       the shared memory identifier specified by shmid to the data segment  of
       the calling process.

       The  permission required for a shared memory control operation is given
       as {token}, where token is the type of permission needed. The types  of
       permission are interpreted as follows:

	 00400	  READ by user
	 00200	  WRITE by user
	 00040	  READ by group
	 00020	  WRITE by group
	 00004	  READ by others
	 00002	  WRITE by others

       See  the	 Shared	 Memory	 Operation Permissions section of intro(2) for
       more information.

       When (shmflg&SHM_SHARE_MMU) is true, virtual memory resources in	 addi‐
       tion  to	 shared	 memory itself are shared among processes that use the
       same shared memory.

       When (shmflg&SHM_PAGEABLE) is true, virtual memory resources are shared
       and  the dynamic shared memory (DISM) framework is created. The dynamic
       shared memory can be resized dynamically within the specified  size  in
       shmget(2). The DISM shared memory is pageable unless it is locked.

       The  shared memory segment is attached to the data segment of the call‐
       ing process at the address specified based on  one  of  the   following
       criteria:

	   o	  If  shmaddr  is equal to (void *) 0, the segment is attached
		  to the first available address as selected by the system.

	   o	  If   shmaddr	is  equal  to	(void  *)   0	and   (	  shm‐
		  flg&SHM_SHARE_MMU)  or  (shmflg&SHM_PAGEABLE)	 is true, then
		  the segment is attached  to  the  first  available  suitably
		  aligned   address.   When  (shmflg&SHM_SHARE_MMU)  or	 (shm‐
		  flg&SHM_PAGEABLE) is set, however, the permission  given  by
		  shmget()  determines	whether	 the  segment  is attached for
		  reading or reading and writing.

	   o	  If shmaddr is not equal to (void *) 0	 and  (shmflg&SHM_RND)
		  is  true,  the  segment  is attached to the address given by
		  (shmaddr-  (shmaddr modulus SHMLBA)).

	   o	  If shmaddr is not equal to (void *) 0	 and  (shmflg&SHM_RND)
		  is  false,  the  segment is attached to the address given by
		  shmaddr.

	   o	  The segment is attached for reading  if  (shmflg&SHM_RDONLY)
		  is  true  {READ},  otherwise	it is attached for reading and
		  writing {READ/WRITE}.

       The shmdt() function detaches from the calling process's	 data  segment
       the  shared memory segment located at the address specified by shmaddr.
       If the  application  is	standard-conforming  (see  standards(5)),  the
       shmaddr	argument is of type const void *. Otherwise it is of type char
       *.

       Shared memory segments must be explicitly removed after the last refer‐
       ence to them has been removed.

RETURN VALUES
       Upon  successful	 completion,  shmat()  returns	the data segment start
       address of the attached shared memory segment; shmdt() returns 0.  Oth‐
       erwise,	−1 is returned, the shared memory segment is not attached, and
       errno is set to indicate the error.

ERRORS
       The shmat() function will fail if:

       EACCES	 Operation permission is denied to the	calling	 process  (see
		 intro(2)).

       EINVAL	 The shmid argument is not a valid shared memory identifier.

		 The  shmaddr  argument	 is  not  equal to 0, and the value of
		 (shmaddr-  (shmaddr modulus SHMLBA)) is an illegal address.

		 The shmaddr argument  is  not	equal  to  0,  is  an  illegal
		 address, and (shmflg&SHM_RND) is false.

		 The  shmaddr  argument	 is  not  equal	 to 0, is not properly
		 aligned, and (shmfg&SHM_SHARE_MMU) is true.

		 SHM_SHARE_MMU is not supported in certain architectures.

		 Both  (shmflg&SHM_SHARE_MMU)  and  (shmflg&SHM_PAGEABLE)  are
		 true.

		 (shmflg&SHM_SHARE_MMU)	 is true and the shared memory segment
		 specified by shmid() had previously been attached by  a  call
		 to shmat() in which (shmflg&SHM_PAGEABLE) was true.

		 (shmflg&SHM_PAGEABLE)	is  true and the shared memory segment
		 specified by shmid() had previously been attached by  a  call
		 to shmat() in which (shmflg&SHM_SHARE_MMU) was true.

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

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

       The shmdt() function will fail if:

       EINVAL	 The shmaddr argument is not the data segment start address of
		 a shared memory segment.

       ENOMEM	 (shmflg&SHM_SHARE_MMU) is true and attaching  to  the	shared
		 memory	 segment  would	 exceed a limit or resource control on
		 locked memory.

WARNINGS
       Using a fixed value for the shmaddr argument can adversely affect  per‐
       formance on certain platforms due to D-cache aliasing.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Interface Stability	     │Standard			   │
       ├─────────────────────────────┼─────────────────────────────┤
       │MT-Level		     │Async-Signal-Safe		   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       intro(2),    exec(2),	exit(2),    fork(2),   shmctl(2),   shmget(2),
       attributes(5), standards(5)

SunOS 5.10			  10 Apr 2007			      shmop(2)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net