Question

Est-il possible de mmap / dev / port? Je n'obtiens pas un tel appareil quand j'essaye.

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
>>> 

J'ai pu mmap un fichier régulier avec les mêmes options.

Était-ce utile?

La solution

ERRNO 19 est répertorié comme «aucun dispositif de ce type» (Linux), ou «Opération non pris en charge par l'appareil» (FreeBSD).

Regarder le code source pour /dev/port dans drivers/char/mem.c, en particulier le struct file_operations, tu voir:

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

Cet appareil ne prend pas en charge MMAP. Ouverture, recherche, lecture et écriture seulement.

Autres conseils

Comme cela a été souligné, /dev/port not mmap-pouvoir. Mais vu comment vous utilisez Python - exploitons le vrai pouvoir des types dynamiques! Pourquoi ne pas créer un mmap-Le objet qui prend en charge la même interface, mais utilise lseek sous?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top