shmget(2) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

shmget(2)

shmget(2)                        System Calls                        shmget(2)



NAME
       shmget, shmget_osm - 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);
       int shmget_osm(key_t key, size_t size, int shmflg,
                 size_t granule_size);

DESCRIPTION
       The  shmget() and shmget_osm() functions return the shared memory iden‐
       tifier 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 iden‐
                  tifier associated with it, and (shmflg&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.


       The shmget_osm() system call is a variant of shmget() which creates  an
       optimized  shared  memory (OSM) segment. The new fourth argument, gran‐
       ule_size, specifies the segment's granule size. This value  must  be  a
       power  of  two  which  is  at  least  as large as the value returned by
       sysconf(_SC_OSM_PAGESIZE_MIN).  A  segment  created  with  shmget_osm()
       starts out with all granules unlocked. Unlocked granules have PROT_NONE
       permissions, and have no memory allocated to back them.  The  memcntl()
       MC_LOCK_GRANULE   operation   can   be  used  to  lock  granules  in  a
       shmget_osm(2) created segment which has been mapped  into  the  address
       space with shmat(2).

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() and shmget_osm() functions will fail if:

       EACCES    A  shared memory identifier exists for key but operation per‐
                 mission (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 (shm‐
                 flg&IPC_CREAT) and (shmflg&IPC_EXCL) are true.


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

                 For  shmget(),  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.

                 For  shmget_osm(),  size  and granule_size are not both zero,
                 and there is an existing segment whose size and  granule_size
                 do not match the passed in values.

                 For  shmget_osm(),  either size or granule_size are zero, and
                 there is no existing segment.

                 For shmget_osm(), a new segment is going to be created,  size
                 is  not  a multiple of granule_size, or granule_size is not a
                 power-of-2   greater   than    the    value    returned    by
                 sysconf(_SC_OSM_PAGESIZE_MIN).


       ENOENT    A  shared  memory identifier does not exist for key and (shm‐
                 flg&IPC_CREAT) is false.


       ENOMEM    A shared memory identifier and associated shared memory  seg‐
                 ment  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(7) for descriptions of the following attributes:


       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE  VALUE  _  Interface  StabilityCommitted  _  StandardSee  stan‐
       dards(7).


SEE ALSO
       Intro(2), setrctl(2), shmctl(2), shmop(2),  getpagesize(3C),  ftok(3C),
       attributes(7), standards(7), rctladm(8)

NOTES
       The  project.max-shm-memory resource control restricts the total amount
       of shared  memory  a  project  can  allocate.  The  zone.max-shm-memory
       resource  control  restricts the total amount of shared memory that can
       be allocated by a zone. 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, as well as any other shared memory segments allocated
       and still in use by processes in the  zone.  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. The zone.max-shm-ids resource control  restricts  the
       total  number  of  shared memory identifiers that can be allocated by a
       zone.


       See rctladm(8) and setrctl(2) for information about using resource con‐
       trols.



Oracle Solaris 11.4               15 Apr 2019                        shmget(2)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3