IPB
>  Man Pages > Unix > Solaris 10 11/06 > Section 2 > shmat man page

shmat man page

Section 2 - Solaris 10 11/06 Man Pages

Other operating system man pages available here


Advanced Search

Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!





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  opera-
     tion is given as {token}, where token is the type of permis-
     sion needed. The types of permission are interpreted as fol-
     lows:

     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  addition  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  dynami-
     cally  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 calling 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.



SunOS 5.10           Last change: 1 Sep 2003                    1






System Calls                                             shmop(2)



       o  If   shmaddr  is  equal  to    (void   *)   0   and   (
          shmflg&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 (shmflg&SHM_PAGEABLE) is set, however,  the  permis-
          sion  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 reference 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. Otherwise, -1 is returned, the shared memory seg-
     ment  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  cal-
                     ling process (see intro(2)).



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







SunOS 5.10           Last change: 1 Sep 2003                    2






System Calls                                             shmop(2)



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



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



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



     EINVAL          SHM_SHARE_MMU is not  supported  in  certain
                     architectures.



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



     EINVAL          (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 pre-
                     viously 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 seg-
                     ment.





SunOS 5.10           Last change: 1 Sep 2003                    3






System Calls                                             shmop(2)



     The shmdt() function will fail if:

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



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

     ____________________________________________________________
    |       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),
     standards(5)
































SunOS 5.10           Last change: 1 Sep 2003                    4





Man(1) output converted with man2html and wrapped by fishsponge

This page was generated on Wed Sep 12 11:27:09 GMT 2007

Your favourite pages:

No pages logged yet...

Top 10 most popular pages:

prstat man page (24546 hits)
(Solaris 10 11_06)

netcat man page (17695 hits)
(Suse Linux 10.1)

ssh-socks5-proxy-connect man page (13530 hits)
(Solaris 10 11_06)

signal man page (12550 hits)
(Suse Linux 10.1)

startproc man page (11991 hits)
(Suse Linux 10.1)

raidctl man page (11357 hits)
(Solaris 10 11_06)

adv_cap_autoneg man page (10285 hits)
(Solaris 10 11_06)

sqlite3 man page (9729 hits)
(openSUSE 10.2)

CPAN man page (8947 hits)
(Suse Linux 10.1)

BusyBox man page (7702 hits)
(Suse Linux 10.1)

Useful Links

Go Back

Visitor Statistics


Valid XHTML 1.0 Transitional     Valid CSS!

Cambridge Plus :: Pyrenees Mountain Holidays :: PIC Development Bedfordshire :: Hepolite Piston Rings
Unix Man Pages / Linux Man Pages :: HiFi Forum :: SIP VoIP Phone & Provider Reviews :: UNIX/Linux Forum Archives

More info on advertising on Unix/Linux Forum