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

NOMBRE

       madvise - aconseja sobre el uso de memoria

SINOPSIS

       #include <sys/mman.h>

       int madvise(void *start, size_t length, int advice);

DESCRIPCI'ON

       La  llamada al sistema madvise aconseja al nucleo sobre como manejar la
       paginacion de entrada/salida en el rango de direcciones que comienza en
       start  y  tiene  de  longitud  length  bytes.  Permite a una aplicacion
       decirle al nucleo como espera usar algunas zonas de memoria  compartida
       o  mapeada, para que asi el nucleo pueda elegir las tecnicas apropiadas
       de pre-lectura y cache.  Esta llamada no influye en la semantica de  la
       aplicacion (excepto en el caso de MADV_DONTNEED), pero puede influir en
       su rendimiento. El nucleo puede ignorar libremente este consejo.

       El consejo se indica en el parametro advice que puede tomar los valores

       MADV_NORMAL
              Trato no especial. Este es el valor por defecto.

       MADV_RANDOM
              Espera las referencias  a  paginas  en  orden  aleatorio.   (Por
              tanto, la pre-lectura puede ser menos util de lo habitual.)

       MADV_SEQUENTIAL
              Espera  las  referencias  a  paginas  en orden secuencial.  (Por
              tanto, las paginas en el rango dado  pueden  ser  accedidas  con
              pre-lectura y liberadas poco despues del acceso.)

       MADV_WILLNEED
              Espera  algun  acceso  en  un futuro cercano.  (Por tanto, seria
              buena idea leer algunas paginas por adelantado.)

       MADV_DONTNEED
              No esperes ningun acceso en un futuro cercano (por  el  momento,
              la aplicacion ha terminado de usar el rango especificado, por lo
              que el nucleo puede liberar recursos asociados a la misma).  Los
              accesos  siguientes  a paginas en este rango tendran exito, pero
              produciran o bien que se vuelva a cargar el contenido de memoria
              desde  el fichero mapeado subyacente (vease mmap) o bien paginas
              llenas de ceros para mapeos sin fichero subyacente.

VALOR DEVUELTO

       En caso de exito madvise devuelve cero. En caso de error, devuelve -1 y
       modifica errno con el valor apropiado.

ERRORES

       EINVAL el  valor len es negativo, start no se encuentra en un limite de
              pagina, advice no es un  valor  valido,  o  la  aplicacion  esta
              intentado   liberar   paginas   bloqueadas  o  compartidas  (con
              MADV_DONTNEED).

       ENOMEM las direcciones en  el  rango  especificado  no  estan  mapeadas
              actualmente, o estan fuera del rango de direcciones del proceso.

       ENOMEM (para MADV_WILLNEED) Memoria insuficiente - paginacion fallida.

       EIO    (para  MADV_WILLNEED)  La  paginacion  de esta area excederia el
              tamano maximo para el conjunto residente.

       EBADF  existe  la  correspondencia,  pero  el  area   mapeada   no   se
              corresponde con un fichero.

       EAGAIN un recurso del nucleo esta temporalmente no disponible.

OBSERVACIONES LINUX

       La  implementacion  actual  de Linux (2.4.0) ve esta llamada al sistema
       mas como una orden que como un consejo y por lo tanto puede devolver un
       error  cuando  no  puede  llevar  a cabo lo que habitualmente podria en
       respuesta a este consejo. (Vease la  descripcion  de  ERRORES  arriba.)
       Este es un comportamiento no estandar.

       La  implementacion de Linux requiere que la direccion start comienze en
       un limite de pagina, y permite que length sea cero. Si  algunas  partes
       del  rango de direcciones especificado no estan mapeadas, la version de
       Linux de madvise las ignora y aplica la llamada sobre  el  resto  (pero
       devuelve ENOMEM como deberia ser).

HISTORIA

       La funcion madvise aparecio por primera vez en 4.4BSD.

CONFORME A

       POSIX.1b  (POSIX.4).   POSIX 1003.1-2001 describe posix_madvise con las
       constantes POSIX_MADV_NORMAL, etc., con un comportamiento  parecido  al
       descrito aqui. Hay un posix_fadvise similar para acceso a ficheros.

V'EASE TAMBI'EN

       getrlimit(2), mmap(2), mincore(2), mprotect(2), msync(2), munmap(2)