sys_mincore  [mm/mincore.c]


Gets information on whether pages are in core.

This system call is used to request a vector describing which pages of a file are in core and can be read without disk access. However it's important to note that not locked pages in core can come and go any moment, and the contents of obtained vector may be stale already when this call returns.

Arguments

eax 218
ebx Pointer to an integer value which specifies the starting address of the pages. The address must lie on a page boundary.
ecx Length in bytes. It's need not be a multiple of the page size.
edx Pointer to a buffer which will receive the vector. It must be large enough to contain (ecx+PAGE_SIZE-1) / PAGE_SIZE bytes.
Upon successful return this buffer will be filled with byte of which the least significant bit indicates if a page is core resident. (The other bits are undefined, reserved for possible later use.)

Return values

If the system call succeeds the return value is 0.
If the system call fails the return value is one of the following errno values:

-EAGAIN Kernel is temporarily out of resources.
-EFAULT edx points to an invalid address.
-EINVAL Value pointed by ebx is not a multiple of the page size.
-ENOMEM ecx is greater than (TASK_SIZE - ebx). (This could occur if a negative value is specified for ebx, 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.

Remarks

Up to Linux 2.6.5 (and possibly later), sys_mincore does not return correct information for MAP_PRIVATE mappings.

Compatibility

n/a