Provided by: manpages-dev_2.17-1_all bug


       mincore - get information on whether pages are in core


       #include <unistd.h>
       #include <sys/mman.h>

       int mincore(void *start, size_t length, unsigned char *vec);


       The  mincore()  function  requests a vector describing which pages of a
       file are in core and can be read without disk access. The  kernel  will
       supply  data  for  length bytes following the start address. On return,
       the kernel will  have  filled  vec  with  bytes,  of  which  the  least
       significant  bit  indicates if a page is core resident. (The other bits
       are undefined, reserved for possible later use.)   Of  course  this  is
       only  a snapshot: pages that are not locked in core can come and go any
       moment, and the contents of vec may be stale  already  when  this  call

       For  mincore()  to  return  successfully,  start  must  lie  on  a page
       boundary. It is the caller’s responsibility to round up to the  nearest
       page. The length parameter need not be a multiple of the page size. The
       vector vec must be  large  enough  to  contain  (length+PAGE_SIZE-1)  /
       PAGE_SIZE bytes.  One may obtain the page size from getpagesize(2).


       On  success,  mincore()  returns  zero.   On error, -1 is returned, and
       errno is set appropriately.


       EAGAIN kernel is temporarily out of resources

       EFAULT vec points to an invalid address

       EINVAL start is not a multiple of the page size.

       ENOMEM len is greater than (TASK_SIZE - start).  (This could occur if a
              negative  value  is  specified for len, 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 address to address + length contained unmapped memory, or memory
              not part of a file.


       Up to now (Linux 2.6.5), mincore() does not return correct  information
       for MAP_PRIVATE mappings.


       mincore()  is not specified in POSIX.1-2001, and it is not available on
       all Unix implementations.


       The mincore() function first appeared in 4.4BSD.


       Since Linux 2.3.99pre1 and glibc 2.2.


       getpagesize(2), mlock(2), mmap(2)