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ÓN

       La llamada al sistema madvise aconseja al núcleo sobre como manejar la paginación de entrada/salida en el
       rango  de  direcciones  que  comienza en start y tiene de longitud length bytes. Permite a una aplicación
       decirle al núcleo como espera usar algunas zonas de memoria compartida o mapeada, para que así el  núcleo
       pueda  elegir las técnicas apropiadas de pre-lectura y caché.  Esta llamada no influye en la semántica de
       la aplicación (excepto en el caso de MADV_DONTNEED), pero puede influir  en  su  rendimiento.  El  núcleo
       puede ignorar libremente este consejo.

       El consejo se indica en el parámetro advice que puede tomar los valores

       MADV_NORMAL
              Trato no especial. Éste es el valor por defecto.

       MADV_RANDOM
              Espera  las  referencias a páginas en orden aleatorio.  (Por tanto, la pre-lectura puede ser menos
              útil de lo habitual.)

       MADV_SEQUENTIAL
              Espera las referencias a páginas en orden secuencial.  (Por tanto, las páginas en  el  rango  dado
              pueden ser accedidas con pre-lectura y liberadas poco después del acceso.)

       MADV_WILLNEED
              Espera  algún  acceso en un futuro cercano.  (Por tanto, sería buena idea leer algunas páginas por
              adelantado.)

       MADV_DONTNEED
              No esperes ningún acceso en un futuro cercano (por el momento, la aplicación ha terminado de  usar
              el  rango  especificado,  por  lo que el núcleo puede liberar recursos asociados a la misma).  Los
              accesos siguientes a páginas en este rango tendrán exito, pero producirán o bien que se  vuelva  a
              cargar  el  contenido  de  memoria desde el fichero mapeado subyacente (véase mmap) o bien páginas
              llenas de ceros para mapeos sin fichero subyacente.

VALOR DEVUELTO

       En caso de éxito 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 límite de página, advice no es un valor
              válido,  o  la  aplicación  está  intentado  liberar  páginas  bloqueadas   o   compartidas   (con
              MADV_DONTNEED).

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

       ENOMEM (para MADV_WILLNEED) Memoria insuficiente - paginación fallida.

       EIO    (para  MADV_WILLNEED)  La  paginación  de  esta  área  excedería el tamaño máximo para el conjunto
              residente.

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

       EAGAIN un recurso del núcleo está temporalmente no disponible.

OBSERVACIONES LINUX

       La implementación actual de Linux (2.4.0) ve esta llamada al sistema más  como  una  orden  que  como  un
       consejo  y por lo tanto puede devolver un error cuando no puede llevar a cabo lo que habitualmente podría
       en respuesta a este consejo. (Véase la descripción de ERRORES arriba.)   Éste  es  un  comportamiento  no
       éstandar.

       La implementación de Linux requiere que la dirección start comienze en un límite de página, y permite que
       length sea cero. Si algunas partes del rango de direcciones especificado no están mapeadas, la versión de
       Linux de madvise las ignora y aplica la llamada sobre el resto (pero devuelve ENOMEM como debería ser).

HISTORIA

       La función madvise apareció 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 aquí. Hay un posix_fadvise similar para acceso a ficheros.

VÉASE TAMBIÉN

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

Linux 2.4.5                                       10 junio 2001                                       MADVISE(2)