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

NOMBRE

       mlock - desactiva la paginacion para algunas zonas de memoria

SINOPSIS

       #include <sys/mman.h>

       int mlock(const void *addr, size_t len);

DESCRIPCI'ON

       mlock   desactiva  la  paginacion  para  la  memoria  en  el  grupo  de
       direcciones que comienza en la direccion addr con longitud  len  bytes.
       Se  garantiza  que  todas  las  paginas  que  contienen algunas de esas
       direcciones estaran residentes en RAM  cuando  la  llamada  al  sistema
       mlock  termine sin error y permaneceran en RAM hasta que dichas paginas
       sean desbloquedadas con munlock o munlockall,  hasta  que  las  paginas
       sean  desalojadas via munmap, o hasta que termine el proceso o comience
       otro programa con exec.  Los procesos hijos creados  mediante  fork  no
       heredan los bloqueos de paginas.

       El  bloqueo de memoria tiene dos aplicaciones fundamentales: algoritmos
       en tiempo real y procesado de datos de alta seguridad. Las aplicaciones
       en   tiempo   real  requieren  una  temporizacion  determinista,  y  la
       paginacion es una de las causas principales de retardos inesperados  en
       la ejecucion de programas, junto con la planificacion (scheduling). Las
       aplicaciones en tiempo real suelen conmutar a un planificador en tiempo
       real  con sched_setscheduler.  El software de seguridad criptografico a
       menudo trabaja con bytes  criticos  tales  como  contrasenas  o  claves
       secretas.  Como  resultado  de la paginacion, estos secretos pueden ser
       transferidos a un medio de almacenamiento de  intercambio  persistente,
       donde  podria ser leido por el enemigo mucho despues de que el programa
       de seguridad haya borrado los secretos de la RAM y terminado.

       Los bloqueos de memoria no son acumulativos, es decir, si una pagina ha
       sido  bloqueda  varias  veces mediante llamadas a mlock o mlockall sera
       desbloqueada  con  una  simple  llamada  a  munlock   para   el   rango
       correspondiente  o  con  munlockall.   Las  paginas que son asociadas a
       varias zonas o a varios procesos permanecen bloqueadas en RAM  mientras
       lo esten por alguna zona o proceso.

       En  los  sistemas  POSIX  con  mlock  y  munlock disponibles, se define
       _POSIX_MEMLOCK_RANGE en <unistd.h> y el valor de PAGESIZE de <limits.h>
       indica el numero de bytes por pagina.

OBSERVACIONES

       Con  la  llamada  al  sistema  de  Linux,  addr se redondea hacia abajo
       automaticamente hacia el limite de pagina mas  cercano.   Sin  embargo,
       POSIX 1003.1-2001 permite una implementacion que requiere que addr este
       en situado un limite de pagina, por lo que  las  aplicaciones  deberian
       asegurar este requisito.

VALOR DEVUELTO

       En  caso  de  exito, mlock devuelve cero. Si hay error, se devuelve -1,
       errno se activa convenientemente y  no  se  realiza  ningun  cambio  en
       ningun bloqueo en el espacio de direcciones del proceso.

ERRORES

       ENOMEM Alguna  parte  del rango de direcciones no corresponde a paginas
              asociadas en el espacio de direcciones del proceso o el  proceso
              intento   exceder   el   numero  maximo  de  paginas  bloqueadas
              permitido.

       EPERM  El proceso invocador no tiene los privilegios  necesarios.  Solo
              se permite bloquear paginas a los procesos del superusuario.

       EINVAL len no era un numero positivo.

CONFORME A

       POSIX.1b, SVr4.  SVr4 anade un codigo de error adicional (EAGAIN).

V'EASE TAMBI'EN

       mlockall(2), munlock(2), munlockall(2), munmap(2), setrlimit(2)