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.