mlock(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

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

mlock(3c)

Standard C Library Functions                                         mlock(3C)



NAME
       mlock, munlock - lock or unlock pages in memory

SYNOPSIS
       #include <sys/mman.h>

       int mlock(const void *addr, size_t len);


       int munlock(const void *addr, size_t len);

DESCRIPTION
       The  mlock()  function  uses  the  mappings established for the address
       range [addr, addr + len) to identify pages to be locked in  memory.  If
       the page identified by a mapping changes, such as occurs when a copy of
       a writable MAP_PRIVATE page is made upon the first store, the lock will
       be transferred to the newly copied private page.


       The munlock() function removes locks established with mlock().


       A  given  page  may  be  locked  multiple times by executing an mlock()
       through different mappings. That is, if two  different  processes  lock
       the  same  page,  then the page will remain locked until both processes
       remove their locks. However, within a given mapping, page locks do  not
       nest  −  multiple  mlock()  operations  on the same address in the same
       process will all be removed with a single munlock(). Of course, a  page
       locked  in one process and mapped in another (or visible through a dif‐
       ferent mapping in the locking process) is still locked in memory.  This
       fact can be used to create applications that do nothing other than lock
       important data in memory, thereby avoiding page I/O  faults  on  refer‐
       ences from other processes in the system.


       The  contents  of  the  locked pages will not be transferred to or from
       disk except when explicitly requested by one of the locking  processes.
       This  guarantee applies only to the mapped data, and not to any associ‐
       ated data structures (file descriptors and on-disk metadata, among oth‐
       ers).


       If  the mapping through which an mlock() has been performed is removed,
       an munlock() is implicitly performed. An munlock()  is  also  performed
       implicitly when a page is deleted through file removal or truncation.


       Locks  established  with  mlock()  are not inherited by a child process
       after a fork() and are not nested.


       Attempts to mlock() more memory than a system-specific limit will fail.


       mlock() and munlock() have no effect when applied to shared memory seg‐
       ments  created by shmget_osm(2). To lock and unlock these segments, the
       MC_LOCK_GRANULE and MC_UNLOCK_GRANULE interfaces of memcntl() should be
       used instead.

RETURN VALUES
       Upon  successful completion, the mlock() and munlock() functions return
       0. Otherwise, no changes are made to any locks in the address space  of
       the  process,  the  functions  return  −1 and set errno to indicate the
       error.

ERRORS
       The mlock() and munlock() functions will fail if:

       EINVAL    The addr argument is not a  multiple  of  the  page  size  as
                 returned by sysconf(3C).


       ENOMEM    Addresses in the range [addr, addr + len) are invalid for the
                 address space of a process, or  specify  one  or  more  pages
                 which are not mapped.


       ENOSYS    The system does not support this memory locking interface.


       EPERM     The  {PRIV_PROC_LOCK_MEMORY} privilege is not asserted in the
                 effective set of the calling process.



       The mlock() function will fail if:

       EAGAIN    Some or all of the memory identified by the range [addr, addr
                 +  len)  could  not  be locked because of insufficient system
                 resources or because of a limit or resource control on locked
                 memory.


USAGE
       Because  of  the  impact  on  system  resources, the use of mlock() and
       munlock() is restricted to users with the {PRIV_PROC_LOCK_MEMORY} priv‐
       ilege.

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 _ MT-LevelMT-Safe _  Stan‐
       dardSee standards(7).


SEE ALSO
       fork(2),  memcntl(2),  mmap(2), shmget_osm(2), mlockall(3C), plock(3C),
       sysconf(3C), attributes(7), standards(7)



Oracle Solaris 11.4               16 Feb 2015                        mlock(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3