Provided by: manpages-es_1.55-10_all bug

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)