Rechercher une page de manuel
mmap
Langue: es
Version: 12 Abril 1996 (fedora - 25/11/07)
Section: 2 (Appels système)
NOMBRE
mmap, munmap - ubica o elimina ficheros o dispositivos en memoriaSINOPSIS
#include <unistd.h>#include <sys/mman.h>
caddr_t mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);
int munmap(void *start, size_t length);
DESCRIPCIÓN
La función mmap intenta ubicar length bytes comenzando en el desplazamiento offset desde el fichero (u otro objeto) espeficicado por fd en memoria, preferiblemente en la dirección start. Esta última dirección es una sugerencia y normalmente se especifica como 0. El lugar donde es ubicado el objeto es devuelto por mmap. El argumento prot describe la protección de memoria deseada. Lo forman los siguientes bits:- PROT_EXEC
- Las páginas deben ser ejecutadas.
- PROT_READ
- Las páginas deben ser leídas.
- PROT_WRITE
- Las páginas deben ser escritas.
- PROT_NONE
- Las páginas no pueden ser accedidas.
El parámetro flags especifica el tipo de objeto insertado, las opciones de asociación y si las modificaciones hechas a la copia insertada en memoria son privadas al proceso o son compartidas por otras referencias. Tiene los bits:
- MAP_FIXED
- No seleccionar una dirección diferente a la especificada. Si la dirección especificada no puede ser utilizada, mmap fallará. Si MAP_FIXED es especificado, start debe ser un múltiplo del tamaño de página. Utilizar esta opción es desaconsejable.
- MAP_SHARED
- Comparte este área con todos los otros objetos que señalan a este objeto.
- MAP_PRIVATE
- Crear un área privada "copy-on-write".
Debe especificarse exactamente uno de los parámetros MAP_SHARED o MAP_PRIVATE.
Los tres parámetros anteriores están descritos en POSIX.1b (formalmente POSIX.4). Linux también reconoce MAP_DENYWRITE, MAP_EXECUTABLE y MAP_ANON(YMOUS).
La llamada al sistema munmap borra las ubicaciones para el rango de direcciones especificado, y produce referencias a las direcciones dentro del rango a fin de generar referencias a memoria inválidas.
VALOR DEVUELTO
Si ha funcionado mmap devuelve un puntero al área reservada. En caso de error, es devuelto -1, y errno es modificado apropiadamente. Si ha funcionado munmap devuelve 0, si hay error -1, y errno es fijada (probablemente a EINVAL).ERRORES
- EBADF
- fd no es un descriptor de fichero válido (y MAP_ANONYMOUS no ha sido fijado).
- EACCES
- MAP_PRIVATE fue indicado, pero fd no ha sido abierto para lectura. O MAP_SHARED fue invocado y PROT_WRITE fue fijado, y fd no está abierto para escritura.
- EINVAL
- No es correcto start o length o offset. (E.g., son demasiado grandes, o no están alineados en los límites de un valor múltiplo de PAGESIZE).
- ETXTBUSY
- MAP_DENYWRITE fue fijado pero el objeto especificado por fd está abierto para escritura.
- EAGAIN
- El fichero ha sido bloqueado, o se ha bloqueado una cantidad excesiva de memoria.
- ENOMEM
- No hay memoria disponible.
CONFORME A
SVr4, POSIX.1b (formalmente POSIX.4), 4.4BSD. Svr4 documenta los códigos de error ENXIO y ENODEV.VÉASE TAMBIÉN
getpagesize(2), msync(2), shm_open(2), B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre