C linux mmap-如何识别对它的任何访问

C linux mmap-如何识别对它的任何访问,c,linux,linux-device-driver,C,Linux,Linux Device Driver,我为Linux内核编写了一个简单的字符开发模块,以了解mmap是如何工作的。我已经为vm_操作_结构编写了简单的“错误”处理程序。但现在我想知道mmap到底是如何工作的。如果应用程序第一次命中某个MMAP地址,则应调用我的“错误”处理程序。但是,如果这个应用程序第二次和下一次命中映射区域的地址,它不应该引发任何“错误”,因为这个区域已经映射了?我说得对不对 假设我有一些虚拟设备(不是物理设备),如何从驱动程序的角度识别对mmapped区域的任何访问 是否有任何类型的触发器告诉我现在是对mmap区

我为Linux内核编写了一个简单的字符开发模块,以了解mmap是如何工作的。我已经为vm_操作_结构编写了简单的“错误”处理程序。但现在我想知道mmap到底是如何工作的。如果应用程序第一次命中某个MMAP地址,则应调用我的“错误”处理程序。但是,如果这个应用程序第二次和下一次命中映射区域的地址,它不应该引发任何“错误”,因为这个区域已经映射了?我说得对不对

假设我有一些虚拟设备(不是物理设备),如何从驱动程序的角度识别对mmapped区域的任何访问


是否有任何类型的触发器告诉我现在是对mmap区域的R/W访问?

mmap函数返回一个指针,因此您应该知道映射的地址范围。为每个R/W触发一个事件还有什么好处?在另一种驱动程序中需要R/W,例如在代理(虚拟)帧缓冲区中。我还问了这些问题,因为我想知道什么时候有人写了任何东西来代理fb来旋转它或做其他事情,然后将它发送到真正的帧缓冲区。