NOMBRE¶
mincore - obtiene información de qué páginas están
en memoria
SINOPSIS¶
#include <unistd.h>
#include <sys/mman.h>
int mincore(void *start, size_t length, unsigned
char *vec);
DESCRIPCIÓN¶
La función
mincore solicita un vector describiendo qué
páginas de un fichero están en memoria y pueden ser
leídas sin acceder a disco. El núcleo suministrará los
datos para los
length bytes siguientes a la dirección
start. Cuando regrese, el núcleo habrá rellenado
vec con bytes, de los cuales el bit menos significativo indica si una
página está residente en memoria.
Para que
mincore tenga éxito,
start debe estar situada en
un límite de página. Es responsabilidad del invocador redondear
este valor a la página más cercana. El parámetro
length no necesita ser un múltiplo del tamaño de
página. El vector
vec debe ser lo suficientemente grande para
contener length/PAGE_SIZE bytes. El tamaño de página puede
obtenerse con
getpagesize(2).
VALOR DEVUELTO¶
En caso de éxito,
mincore devuelve cero. En caso de error, se
devuelve -1, y
errno es modificado con el valor apropiado.
ERRORES¶
EAGAIN el núcleo se ha quedado temporalmente sin recursos
- EINVAL
- start no es múltiplo del tamaño de página, o
len tiene un valor no positivo
- EFAULT
- vec apunta a una dirección inválida
- ENOMEM
- address a address + length contiene memoria sin
ubicar, o la memoria no es parte de un fichero.
FALLOS¶
mincore debería devolver un vector de bits y no un vector de
bytes, A partir de la versión 2.4.5 de Linux, no es posible obtener
información sobre la residencia en memoria de páginas no
respaldadas por un fichero. En otras palabras, una llamada a
mincore
sobre una región anónima devuelta por
mmap(2) no funciona
y asigna a errno el valor ENOMEM. A menos que las páginas estén
bloqueadas en memoria, el contenido de
vec puede estar desfasado para
cuando alcancen el espacio de usuario.
mincore no parece ser parte de POSIX o de la Single Unix Specification.
HISTORIA¶
La función mincore() apareció por primera vez en 4.4BSD.
DISPONIBILIDAD¶
Presente desde Linux 2.3.99pre1 y glibc 2.2.
VÉASE TAMBIÉN¶
getpagesize(2),
mmap(2)