2011-03-07 14 views
6

¿Alguien ha tenido éxito en mmaping un archivo/proc/pid/mem con Linux kernel 2.6? Recibo un error ENODEV (No such device) error. Mi llamado es el siguiente:mmap en/proc/pid/mem

char * map = mmap(NULL, PAGE_SIZE, PROT_READ, MAP_SHARED, mem_fd, offset); 

Y he verificado por mirar el archivo/proc/PID/mapas durante la depuración que, cuando la ejecución llega a esta llamada, offset tiene el valor de la parte superior de la PAGE_SIZE pila menos . También he verificado con ptrace que mmap está configurando errno en ENODEV.

Respuesta

17

Ver proc_mem_operations in /usr/src/linux/fs/proc/base.c: /proc/.../mem no es compatible con mmap.

+0

¡Muchas gracias! No parece tener ese archivo base.c en mi Ubuntu x86_64 - mi directorio/usr/src está vacío. ¿Qué distribución estás ejecutando? –

+0

@Amittai: Puede instalar el paquete 'linux-source' o buscar el origen del kernel de Linux directamente desde kernel.org. – ephemient

+0

error 404 en los enlaces mencionados :( – ashish