2

是否可以映射 /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
>>> 

我已经能够使用相同的选项映射一个常规文件。

4

2 回答 2

4

Errno 19 被列为“No such device”(Linux)或“Operation not supported by device”(FreeBSD)。

查看/dev/portin的源代码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

此设备不支持 mmap。只有打开,寻找,阅读和写作。

于 2012-02-21T17:44:30.223 回答
0

正如已经指出的那样,/dev/portis not mmap-able。但是看看你是如何使用 python 的——让我们利用动态类型的真正力量!为什么不创建一个mmap支持相同接口但lseek在下面使用的类似对象?

于 2012-02-22T03:46:49.130 回答