Linux:用于非常规文件的mmap()

时间:2014-01-21 10:41:09

标签: linux linux-kernel mmap

据我所知,mmap()允许应用程序将文件映射到内存中,因此内存地址与文件中的单词之间存在一对一的对应关系。

但我的问题是,如果文件是由设备驱动程序创建的非常规文件,该怎么办?据我所知,一些非常规文件是mmap-able,有些则不是。从编程的角度来看,这意味着什么?如果我希望我的非常规文件是mmap-able,我该怎么办?

1 个答案:

答案 0 :(得分:2)

我参与了一个Linux内核模块,我在其中实现了mmap函数指针(struct file_operations)。该模块将在/ dev /目录中创建设备条目。现在我的用户空间应用程序将使用“打开”打开此条目,并将进行mmap系统调用。最终在Linux-Kernel-module内部,我将调用mmap函数并执行已实现的处理并返回用户空间。

这只是表示用户空间向OS(内核)请求的服务的示例。 当用户想要访问硬件或想要从内核请求服务(例如将物理内存映射到用户虚拟地址空间)时,可以使用/ dev /或/ sys /中的驱动程序创建的条目来执行此操作或/ proc / etc.这些文件可以称为内核的“虚拟接口”。