# mincore

## NAME



           mincore - determine whether pages are resident in memory
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <sys/mman.h>**
    
           **int mincore(** size_t length;
                       **void** _addr_**[**_length_**], size_t** _length_**, unsigned char ***_vec_**);**
    
       Feature Test Macro Requirements for glibc (see
       feature_test_macros(7)):
    
           **mincore**():
               Since glibc 2.19:
                   _DEFAULT_SOURCE
               glibc 2.19 and earlier:
                   _BSD_SOURCE || _SVID_SOURCE
    


## DESCRIPTION



           **mincore**() returns a vector that indicates whether pages of the
           calling process's virtual memory are resident in core (RAM), and
           so will not cause a disk access (page fault) if referenced.  The
           kernel returns residency information about the pages starting at
           the address _addr_ , and continuing for _length_ bytes.
    
           The _addr_ argument must be a multiple of the system page size.  The
           _length_ argument need not be a multiple of the page size, but since
           residency information is returned for whole pages, _length_ is
           effectively rounded up to the next multiple of the page size.  One
           may obtain the page size (**PAGE_SIZE**) using _sysconf(_SC_PAGESIZE)_.
    
           The _vec_ argument must point to an array containing at least
           _(length+PAGE_SIZE-1) / PAGE_SIZE_ bytes.  On return, the least
           significant bit of each byte will be set if the corresponding page
           is currently resident in memory, and be clear otherwise.  (The
           settings of the other bits in each byte are undefined; these bits
           are reserved for possible later use.)  Of course the information
           returned in _vec_ is only a snapshot: pages that are not locked in
           memory can come and go at any moment, and the contents of _vec_ may
           already be stale by the time this call returns.
    


## RETURN VALUE



           On success, **mincore**() returns zero.  On error, -1 is returned, and
           _errno_ is set to indicate the error.
    


## ERRORS



           **EAGAIN** kernel is temporarily out of resources.
    
           **EFAULT** _vec_ points to an invalid address.
    
           **EINVAL** _addr_ is not a multiple of the page size.
    
           **ENOMEM** _length_ is greater than (_TASK_SIZE_ - _addr_).  (This could
                  occur if a negative value is specified for _length_ , since
                  that value will be interpreted as a large unsigned
                  integer.)  In Linux 2.6.11 and earlier, the error **EINVAL**
                  was returned for this condition.
    
           **ENOMEM** _addr_ to _addr_ + _length_ contained unmapped memory.
    


## STANDARDS



           None.
    


## BUGS



           Before Linux 2.6.21, **mincore**() did not return correct information
           for **MAP_PRIVATE** mappings, or for nonlinear mappings (established
           using remap_file_pages(2)).
    


* * *