Originální popis anglicky:
mincore - get information on whether pages are in core
Návod, kniha: Linux Programmer's Manual
#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 returns.
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, or
len has a non-positive value
- 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 does not appear to be part of POSIX or the Single Unix
Specification.
The mincore() function first appeared in 4.4BSD.
Since Linux 2.3.99pre1 and glibc 2.2.
getpagesize(2),
mlock(2),
mmap(2)