Provided by:
manpages-es_1.55-10_all 
NOMBRE
mlockall - desactiva la paginacion para el proceso invocador
SINOPSIS
#include <sys/mman.h>
int mlockall(int flags);
DESCRIPCI'ON
mlockall desactiva la paginacion para todas las paginas asociadas en el
espacio de direcciones del proceso que hace la llamada. Esto incluye
las paginas del codigo, de los datos y del segmento de pila, asi como
las bibliotecas compartidas, datos de nucleo en espacio de usuario,
memoria compartida y ficheros asociados a memoria. Se garantiza que
todas las paginas asociadas estaran en RAM cuando la llamada al sistema
mlockall regrese con exito, y se garantiza que permaneceran en RAM
hasta que las paginas se desbloqueen de nuevo mediante munlock o
munlockall o hasta que el proceso termine o empiece otro programa
debido a la llamada exec. Los procesos hijos no heredan bloqueos de
pagina a traves de un fork.
El bloqueo de memoria tiene dos aplicaciones principales: algoritmos de
tiempo real y procesamiento de datos de alta seguridad. Las
aplicaciones en tiempo real requieren tiempos deterministas, y, como la
planificacion, la paginacion es una de las principales causas de
retrasos inesperados en la ejecucion de programas. Las aplicaciones de
tiempo real normalmente tambien cambiaran a un planificador de tiempo
real con sched_setscheduler. Los programas de seguridad criptograficos
a menudo manejan bytes criticos como contrasenas o claves secretas como
estructuras de datos. Como resultado de la paginacion, estos datos
secretos pueden transferirse a un medio de almacenamiento permanente
como resultado del trasiego (swap), donde podrian ser accesibles al
enemigo bastante tiempo despues de que el programa de seguridad hubiera
terminado y borrado los datos secretos de la RAM. Para aplicaciones de
seguridad, solo tienen que bloquearse partes pequenas de la memoria,
para lo cual se dispone de mlock.
El parametro flags puede construirse aplicando el operador logico de
bits O (OR) a las siguientes constantes:
MCL_CURRENT Bloquea todas las paginas que estan asociadas actualmente
en el espacio de direcciones del proceso.
MCL_FUTURE Bloquea todas las paginas que en el futuro se asociaran en
el espacio de direcciones del proceso. Estas podrian ser,
por ejemplo, paginas nuevas requeridas por una pila y
monton crecientes asi como nuevos ficheros asociados a
memoria o regiones de memoria compartida.
Si se ha especifiado MCL_FUTURE y el numero de paginas bloqueadas
excede el limite superior de las paginas bloqueadas permitidas,
entonces la llamada al sistema que haya causado la nueva asociacion
fallara con ENOMEM. Si estas nuevas paginas han sido asociadas por la
pila creciente, entonces el nucleo denegara la expansion de la pila y
mandara una senal SIGSEGV.
Los procesos en tiempo real deberian reservar bastantes paginas
bloqueadas antes de entrar en la seccion critica de tiempo, de forma
que ninguna llamada a funcion pueda provocar un fallo de pagina. Esto
puede lograrse llamando a una funcion que tenga una variable automatica
suficientemente grande y que escriba en la memoria ocupada por este
vector grande, para tocar estas paginas de la pila. De esta forma, se
asociaran bastantes paginas para la pila y se pueden bloquear en la
RAM. Las escrituras falsas aseguraran que ni siquiera ocurran fallos de
pagina de copia-en-escritura en la seccion critica.
Los bloqueos de memoria no se apilan; esto es, las paginas que hayan
sido bloqueadas varias veces mediante llamadas a mlockall o a mlock se
desbloquearan con una simple llamada a munlockall. Las paginas que
esten asociadas a varias localizaciones o por varios procesos
permanecen bloqueadas en RAM mientras que esten bloqueadas al menos en
una localizacion o al menos por un proceso.
En sistemas POSIX en los cuales esten disponibles mlockall y
munlockall, se define _POSIX_MEMLOCK en <unistd.h>.
VALOR DEVUELTO
En caso de exito, mlockall devuelve cero. En caso de error, se devuelve
-1 y se pone un valor apropiado en errno.
ERRORES
ENOMEM El proceso intento excederse en el numero maximo de paginas
bloqueadas permitido.
EPERM El proceso que hace la llamada no tiene los privilegios
apropiados. Solo los procesos de root tienen permiso para
bloquear paginas.
EINVAL Se han especificado flags desconocidos.
CONFORME A
POSIX.1b, SVr4. SVr4 documenta un codigo de error adicional, EAGAIN.
V'EASE TAMBI'EN
munlockall(2), mlock(2), munlock(2)