Linux帧缓冲驱动程序是否可以获得对其内容的所有更改的通知?

时间:2016-10-14 08:03:55

标签: linux linux-kernel rfb-protocol fbdev

假设一个假设的远程帧缓冲协议,实现为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写入其内存时,才会调用它吗?

我正在寻找一种方法,只在内容发生变化时才搜索内存中的帧缓冲区,而不是连续搜索它。

1 个答案:

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