unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Page:
Section:
Apropos / Subsearch:
optional field

shmget(2)                        System Calls                        shmget(2)



NAME
       shmget - get shared memory segment identifier

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

       int shmget(key_t key, size_t size, int shmflg);

DESCRIPTION
       The  shmget()  function returns the shared memory identifier associated
       with key.

       A shared memory identifier and associated  data  structure  and  shared
       memory  segment  of  at least size bytes (see intro(2)) are created for
       key if one of the following are true:

         o  The key argument is equal to IPC_PRIVATE.

         o  The key argument does not already have a shared memory  identifier
            associated with it, and (shmflg&&amp;IPC_CREAT) is true.


       Upon creation, the data structure associated with the new shared memory
       identifier is initialized as follows:

         o  The values  of  shm_perm.cuid,  shm_perm.uid,  shm_perm.cgid,  and
            shm_perm.gid  are set equal to the effective user ID and effective
            group ID, respectively, of the calling process.

         o  The access permission bits of shm_perm.mode are set equal  to  the
            access  permission  bits  of shmflg. shm_segsz is set equal to the
            value of size.

         o  The values of shm_lpid, shm_nattch shm_atime,  and  shm_dtime  are
            set equal to 0.

         o  The shm_ctime is set equal to the current time.


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

RETURN VALUES
       Upon successful  completion,  a  non-negative  integer  representing  a
       shared  memory  identifier  is  returned. Otherwise, -1 is returned and
       errno is set to indicate the error.

ERRORS
       The shmget() function will fail if:

       EACCES          A shared memory identifier exists for key but operation
                       permission (see intro(2)) as specified by the low-order
                       9 bits of shmflg would not be granted.



       EEXIST          A shared memory identifier  exists  for  key  but  both
                       (shmflg&&amp;IPC_CREAT) and (shmflg&&amp;IPC_EXCL) are true.



       EINVAL          The size argument is less than the system-imposed mini-
                       mum or greater than  the  system-imposed  maximum.  See
                       NOTES.

                       A  shared memory identifier exists for key but the size
                       of the segment associated with it is less than size and
                       size is not equal to 0.



       ENOENT          A  shared  memory identifier does not exist for key and
                       (shmflg&&amp;IPC_CREAT) is false.



       ENOMEM          A shared memory identifier and associated shared memory
                       segment  are  to be created but the amount of available
                       memory is not sufficient to fill the request.



       ENOSPC          A shared memory identifier is to  be  created  but  the
                       system-imposed  limit  on the maximum number of allowed
                       shared  memory   identifiers   system-wide   would   be
                       exceeded. See NOTES.



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


       tab()     allbox;     cw(2.750000i)|    cw(2.750000i)    lw(2.750000i)|
       lw(2.750000i).  ATTRIBUTE TYPEATTRIBUTE VALUE Interface  StabilityStan-
       dard


SEE ALSO
       rctladm(1M),  intro(2), setrctl(2), shmctl(2), shmop(2), ftok(3C), get-
       pagesize(3C), attributes(5), standards(5)

NOTES
       The project.max-shm-memory resource control restricts the total  amount
       of  shared memory a project can allocate. The system-imposed maximum on
       the size of a shared memory segment is  therefore  a  function  of  the
       sizes  of  any  other  shared memory segments the calling project might
       have allocated that are still in use.  For accounting purposes, segment
       sizes  are  rounded up to the nearest multiple of the system page size.
       See getpagesize(3C).

       The system-imposed limit on the number of shared memory identifiers  is
       maintained   on  a  per-project  basis  using  the  project.max-shm-ids
       resource control.

        See rctladm(1M) and setrctl(2) for information  about  using  resource
       controls.



SunOS 5.10                        4 Sep 2003                         shmget(2)