# mlock

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



           mlock, munlock — lock or unlock a range of process address space
           (**REALTIME**)
    


## 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 shall cause those whole pages containing any
           part of the address space of the process starting at address _addr_
           and continuing for _len_ bytes to be memory-resident until unlocked
           or until the process exits or _exec_ s another process image. The
           implementation may require that _addr_ be a multiple of {PAGESIZE}.
    
           The _munlock_() function shall unlock those whole pages containing
           any part of the address space of the process starting at address
           _addr_ and continuing for _len_ bytes, regardless of how many times
           _mlock_() has been called by the process for any of the pages in the
           specified range. The implementation may require that _addr_ be a
           multiple of {PAGESIZE}.
    
           If any of the pages in the range specified to a call to _munlock_()
           are also mapped into the address spaces of other processes, any
           locks established on those pages by another process are unaffected
           by the call of this process to _munlock_().  If any of the pages in
           the range specified by a call to _munlock_() are also mapped into
           other portions of the address space of the calling process outside
           the range specified, any locks established on those pages via the
           other mappings are also unaffected by this call.
    
           Upon successful return from _mlock_(), pages in the specified range
           shall be locked and memory-resident. Upon successful return from
           _munlock_(), pages in the specified range shall be unlocked with
           respect to the address space of the process. Memory residency of
           unlocked pages is unspecified.
    
           Appropriate privileges are required to lock process memory with
           _mlock_().
    


## RETURN VALUE



           Upon successful completion, the _mlock_() and _munlock_() functions
           shall return a value of zero. Otherwise, no change is made to any
           locks in the address space of the process, and the function shall
           return a value of -1 and set _errno_ to indicate the error.
    


## ERRORS



           The _mlock_() and _munlock_() functions shall fail if:
    
           **ENOMEM** Some or all of the address range specified by the _addr_ and
                  _len_ arguments does not correspond to valid mapped pages in
                  the address space of the process.
    
           The _mlock_() function shall fail if:
    
           **EAGAIN** Some or all of the memory identified by the operation could
                  not be locked when the call was made.
    
           The _mlock_() and _munlock_() functions may fail if:
    
           **EINVAL** The _addr_ argument is not a multiple of {PAGESIZE}.
    
           The _mlock_() function may fail if:
    
           **ENOMEM** Locking the pages mapped by the specified range would
                  exceed an implementation-defined limit on the amount of
                  memory that the process may lock.
    
           **EPERM** The calling process does not have appropriate privileges to
                  perform the requested operation.
    
           _The following sections are informative._
    


## EXAMPLES



           None.
    


## APPLICATION USAGE



           None.
    


## RATIONALE



           None.
    


## FUTURE DIRECTIONS



           None.
    


* * *