Rev | Author | # | Line |
---|---|---|---|
1 | perry | 1 | !!NAME |
2 | PerryLorier | 2 | mincore - get information on whether pages are in core |
1 | perry | 3 | |
4 | !!SYNOPSIS | ||
2 | PerryLorier | 5 | #include <unistd.h> |
6 | #include <sys/mman.h> | ||
1 | perry | 7 | |
2 | PerryLorier | 8 | __int mincore(void *__''start''__, size_t__ ''length''__, unsigned char *__ ''vec''__);__ |
1 | perry | 9 | |
10 | !!DESCRIPTION | ||
2 | PerryLorier | 11 | The mincore(2) 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'' |
12 | 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 | ||
1 | perry | 13 | resident. |
14 | |||
2 | PerryLorier | 15 | For mincore(2) 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 bytes. One may obtain the page size from |
16 | getpagesize(2). | ||
1 | perry | 17 | |
18 | !!RETURN VALUE | ||
2 | PerryLorier | 19 | On success, __mincore__ returns zero. On error, -1 is returned, and ''errno'' is set appropriately. |
1 | perry | 20 | !!ERRORS |
2 | PerryLorier | 21 | ;[EAGAIN]: kernel is temporarily out of resources |
22 | ;[EINVAL]: is not a multiple of the page size, or has a non-positive value | ||
23 | ;[EFAULT]: ''vec'' points to an illegal address | ||
24 | ;[ENOMEM]: ''address'' to ''address'' + ''length'' contained unmapped memory, or memory not part of a file. | ||
1 | perry | 25 | |
26 | !!BUGS | ||
2 | PerryLorier | 27 | mincore(2) should return a bit vector and not a byte vector. As of Linux 2.4.5, it is not possible to gain information on the core residency of pages which are not |
28 | backed by a file. In other words, calling mincore(2) on an region returned by an anonymous mmap(2) does not work and sets errno to [ENOMEM]. Unless pages are locked in memory, the contents of ''vec'' may be stale by the time they reach userspace. | ||
1 | perry | 29 | |
30 | !!CONFORMING TO | ||
2 | PerryLorier | 31 | mincore(2) does not appear to be part of POSIX or the Single Unix Specification. |
1 | perry | 32 | |
33 | !!HISTORY | ||
2 | PerryLorier | 34 | The mincore(2) function first appeared in 4.4BSD. |
1 | perry | 35 | |
36 | !!AVAILABILITY | ||
2 | PerryLorier | 37 | Since Linux 2.3.99pre1 and glibc 2.2. |
1 | perry | 38 | |
39 | !!SEE ALSO | ||
40 | getpagesize(2), mmap(2) |
lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 11 times)