MADVISE(2) | Manual del Programador de Linux | MADVISE(2) |
madvise - aconseja sobre el uso de memoria
#include <sys/mman.h>
int madvise(void *start, size_t length, int advice);
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
En caso de éxito madvise devuelve cero. En caso de error, devuelve -1 y modifica errno con el valor apropiado.
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).
La función madvise apareció por primera vez en 4.4BSD.
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.
getrlimit(2), mmap(2), mincore(2), mprotect(2), msync(2), munmap(2)
10 junio 2001 | Linux 2.4.5 |