假设一个假设的远程帧缓冲协议,实现为Linux帧缓冲驱动程序。
这样的驱动程序是否可以在通过mmap映射或类似工具直接从用户空间写入帧缓冲区的内存时收到通知?
http://lxr.free-electrons.com/source/drivers/video/fbdev/skeletonfb.c?v=4.4#L653显示了模块编写者可以实现的所有函数来获取这些信息,但乍一看我看不到xxxfb_mmap或xxxfb_write的实现,这可能是候选者。
更新
我刚刚在http://lxr.free-electrons.com/source/drivers/video/fbdev/core/fbmem.c?v=4.4#L812
看到了fb_write
只有在通过文件描述符写入帧缓冲区时,或者通过mmapping写入其内存时,才会调用它吗?
我正在寻找一种方法,只在内容发生变化时才搜索内存中的帧缓冲区,而不是连续搜索它。
答案 0 :(得分:1)
您可以使用延期IO, 步骤描述为here:
static void hecubafb_dpy_deferred_io(struct fb_info *info,
struct list_head *pagelist)
{
}
static struct fb_deferred_io hecubafb_defio = {
.delay = HZ,
.deferred_io = hecubafb_dpy_deferred_io,
};
// init
info->fbdefio = &hecubafb_defio;
fb_deferred_io_init(info);
// cleanup
fb_deferred_io_cleanup(info);