我正在为Linux 3.5.7开发实时应用程序。该应用程序需要管理PCI-E设备。
为了访问PCI-E卡空间,我一直在使用mmap与/ dev / mem结合使用。但是(如果我错了,请纠正我)每次读取或写入映射内存时,/ dev / mem伪驱动程序都需要进行系统调用来处理内存访问。
为了避免这个系统调用的开销,我认为应该可以编写一个内核模块,以便在例如一个ioctl调用我可以修改进程页面表,以便将物理设备页面映射到用户空间页面并避免系统调用。
你能给我一些指导吗?
谢谢和问候
答案 0 :(得分:7)
但是(如果我错了,请纠正我)每次读取或写入映射内存时,都需要进行系统调用
你错了。
应该可以编写一个内核模块,以便在例如ioctl调用我可以修改进程页表
这正是mmap()所做的。