无需系统调用即可修改Linux进程页表以进行物理内存访问

时间:2013-06-05 19:43:30

标签: linux-kernel linux-device-driver

我正在为Linux 3.5.7开发实时应用程序。该应用程序需要管理PCI-E设备。

为了访问PCI-E卡空间,我一直在使用mmap与/ dev / mem结合使用。但是(如果我错了,请纠正我)每次读取或写入映射内存时,/ dev / mem伪驱动程序都需要进行系统调用来处理内存访问。

为了避免这个系统调用的开销,我认为应该可以编写一个内核模块,以便在例如一个ioctl调用我可以修改进程页面表,以便将物理设备页面映射到用户空间页面并避免系统调用。

你能给我一些指导吗?

谢谢和问候

1 个答案:

答案 0 :(得分:7)

  

但是(如果我错了,请纠正我)每次读取或写入映射内存时,都需要进行系统调用

你错了。

  

应该可以编写一个内核模块,以便在例如ioctl调用我可以修改进程页表

这正是mmap()所做的。