2

/dev/port を mmap することは可能ですか? 試してみると「そのようなデバイスはありません」というメッセージが表示されます。

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

同じオプションで通常のファイルをmmapできました。

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/port無理mmapです。しかし、Python をどのように使用しているかを見てみましょう。動的型の真の力を活用しましょう! mmap同じインターフェースをサポートするが、lseekその下で使用するようなオブジェクトを作成してみませんか?

于 2012-02-22T03:46:49.130 に答える