假设有一个假设的远程帧缓冲协议,作为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写入时,才会调用此函数?
我正在寻找一种方法,当内存中的帧缓冲区的内容发生更改时,只搜索其更改,而不是连续搜索。

最佳答案

你可以使用延迟IO,
步骤如下:

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);

10-05 18:11