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

NOMBRE

       mlockall - desactiva la paginación para el proceso invocador

SINOPSIS

       #include <sys/mman.h>

       int mlockall(int flags);

DESCRIPCIÓN

       mlockall desactiva la paginación para todas las páginas asociadas en el
       espacio de direcciones del proceso que hace la  llamada.  Esto  incluye
       las  páginas  del código, de los datos y del segmento de pila, así como
       las bibliotecas compartidas, datos de núcleo  en  espacio  de  usuario,
       memoria  compartida  y  ficheros  asociados a memoria. Se garantiza que
       todas las páginas asociadas estarán en RAM cuando la llamada al sistema
       mlockall  regrese  con  éxito,  y  se garantiza que permanecerán en RAM
       hasta que las páginas  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
       página a través 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
       planificación, la paginación  es  una  de  las  principales  causas  de
       retrasos  inesperados en la ejecución de programas. Las aplicaciones de
       tiempo real normalmente también cambiarán a un planificador  de  tiempo
       real con sched_setscheduler.  Los programas de seguridad criptográficos
       a menudo manejan bytes críticos como contraseñas o claves secretas como
       estructuras  de  datos.  Como  resultado  de la paginación, estos datos
       secretos pueden transferirse a un medio  de  almacenamiento  permanente
       como  resultado  del  trasiego  (swap), donde podrían ser accesibles al
       enemigo bastante tiempo después de que el programa de seguridad hubiera
       terminado  y borrado los datos secretos de la RAM. Para aplicaciones de
       seguridad, sólo tienen que bloquearse partes pequeñas  de  la  memoria,
       para lo cual se dispone de mlock.

       El  parámetro  flags  puede construirse aplicando el operador lógico de
       bits O (OR) a las siguientes constantes:

       MCL_CURRENT Bloquea todas las páginas que están  asociadas  actualmente
                   en el espacio de direcciones del proceso.

       MCL_FUTURE  Bloquea  todas las páginas que en el futuro se asociarán en
                   el espacio de direcciones del proceso. Éstas  podrían  ser,
                   por  ejemplo,  páginas  nuevas  requeridas  por  una pila y
                   montón crecientes así  como  nuevos  ficheros  asociados  a
                   memoria o regiones de memoria compartida.

       Si  se  ha  especifiado  MCL_FUTURE  y  el número de páginas bloqueadas
       excede  el  límite  superior  de  las  páginas  bloqueadas  permitidas,
       entonces  la  llamada  al  sistema que haya causado la nueva asociación
       fallará con ENOMEM.  Si estas nuevas páginas han sido asociadas por  la
       pila  creciente,  entonces el núcleo denegará la expansión de la pila y
       mandará una señal SIGSEGV.

       Los  procesos  en  tiempo  real  deberían  reservar  bastantes  páginas
       bloqueadas  antes  de  entrar en la sección crítica de tiempo, de forma
       que ninguna llamada a función pueda provocar un fallo de  página.  Esto
       puede lograrse llamando a una función que tenga una variable automática
       suficientemente grande y que escriba en la  memoria  ocupada  por  este
       vector  grande,  para tocar estas páginas de la pila. De esta forma, se
       asociarán bastantes páginas para la pila y se  pueden  bloquear  en  la
       RAM. Las escrituras falsas asegurarán que ni siquiera ocurran fallos de
       página de copia-en-escritura en la sección crítica.

       Los bloqueos de memoria no se apilan; esto es, las  páginas  que  hayan
       sido  bloqueadas varias veces mediante llamadas a mlockall o a mlock se
       desbloquearán con una simple llamada a  munlockall.   Las  páginas  que
       estén   asociadas   a  varias  localizaciones  o  por  varios  procesos
       permanecen bloqueadas en RAM mientras que estén bloqueadas al menos  en
       una localización o al menos por un proceso.

       En   sistemas   POSIX  en  los  cuales  estén  disponibles  mlockall  y
       munlockall, se define _POSIX_MEMLOCK en <unistd.h>.

VALOR DEVUELTO

       En caso de éxito, mlockall devuelve cero. En caso de error, se devuelve
       -1 y se pone un valor apropiado en errno.

ERRORES

       ENOMEM El  proceso  intentó  excederse  en  el número máximo de páginas
              bloqueadas permitido.

       EPERM  El  proceso  que  hace  la  llamada  no  tiene  los  privilegios
              apropiados.  Sólo  los  procesos  de  root  tienen  permiso para
              bloquear páginas.

       EINVAL Se han especificado flags desconocidos.

CONFORME A

       POSIX.1b, SVr4.   SVr4 documenta un código de error adicional,  EAGAIN.

VÉASE TAMBIÉN

       munlockall(2), mlock(2), munlock(2)