Pregunta

¿Es posible mmap /dev /puerto? No estoy obteniendo 'ningún dispositivo' cuando lo intento.

Python 2.7.2+ (default, Oct  4 2011, 20:06:09) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import mmap
>>> os.open('/dev/port', os.O_RDWR|os.O_NDELAY)
3
>>> mapfd = mmap.mmap(3, 0xfff)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
mmap.error: [Errno 19] No such device
>>> 

He podido enviar un archivo regular con las mismas opciones.

¿Fue útil?

Solución

Errno 19 figura como "no hay dispositivo" (Linux), o "operación no es compatible con el dispositivo" (FreeBSD).

Mirando el código fuente para /dev/port en drivers/char/mem.c, especialmente el struct file_operations, ver:

770 #ifdef CONFIG_DEVPORT
771 static const struct file_operations port_fops = {
772         .llseek         = memory_lseek,
773         .read           = read_port,
774         .write          = write_port,
775         .open           = open_port,
776 };
777 #endif

Este dispositivo no es compatible con MMAP. Solo apertura, búsqueda, lectura y escritura.

Otros consejos

Como se ha señalado, /dev/port no es mmap-poder. Pero viendo cómo estás usando Python, ¡aprovechemos el verdadero poder de los tipos dinámicos! ¿Por qué no crear un mmap-El objeto que admite la misma interfaz, pero usa lseek ¿debajo?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top