1

假设一个假设的远程帧缓冲协议,实现为 Linux 帧缓冲驱动程序。

当帧缓冲区的内存通过 mmap 映射或类似方式直接从用户空间写入时,这样的驱动程序能否收到通知?

http://lxr.free-electrons.com/source/drivers/video/fbdev/skeletonfb.c?v=4.4#L653显示了模块编写器可以实现的所有功能以获取此类信息,但乍一看我不能查看可能候选的 xxxfb_mmap 或 xxxfb_write 的实现。


更新:

我刚刚fb_writehttp://lxr.free-electrons.com/source/drivers/video/fbdev/core/fbmem.c?v=4.4#L812看到

仅当通过文件描述符写入帧缓冲区或通过映射写入其内存时才会调用此方法吗?

我正在寻找一种方法,仅在其内容发生更改时搜索内存帧缓冲区的更改,而不是连续搜索它。

4

1 回答 1

1

您可以使用延迟 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);
于 2017-01-04T12:15:13.797 回答