Provided by: manpages-es_1.55-8_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)