Python mmap / dev / port - PullRequest
       45

Python mmap / dev / port

2 голосов
/ 21 февраля 2012

Возможно ли использовать mmap / dev / port?При попытке получить сообщение «Нет такого устройства».

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

Я смог отобразить обычный файл с такими же параметрами.

Ответы [ 2 ]

4 голосов
/ 21 февраля 2012

Ошибка 19 указана как «Нет такого устройства» (Linux) или «Операция не поддерживается устройством» (FreeBSD).

Глядя на исходный код для /dev/port в drivers/char/mem.c, особенно struct file_operations, вы увидите :

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

Это устройство не 't поддержка Mmap.Только открытие, поиск, чтение и письмо.

0 голосов
/ 22 февраля 2012

Как уже отмечалось, /dev/port не mmap -поддерживается.Но посмотрим, как вы используете Python - давайте использовать всю мощь динамических типов!Почему бы не создать mmap -подобный объект, который поддерживает тот же интерфейс, но использует lseek внизу?

...