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

개요

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

shmget_osm(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 er‐
       rno 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  re‐
       source  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  re‐
       source control. The zone.max-shm-ids resource control restricts the to‐
       tal  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