对于我正在编写的软件,我需要知道 linux 帧缓冲区何时更新。我需要 Windows Mirror Drivers 之类的东西(有关更多信息,请查看 Wikipedia 上的 Mirror_driver)。
环顾四周,我没有找到任何东西,所以我正在寻找一种方法来实现这一点。
从我所见,我需要编写一个在帧缓冲区特定模块之后加载的模块,并挂钩 fb ops 结构以注入自己的东西并捕获更新。
有人可以给我一个提示吗?我对内核模块编写没有太多经验。
谢谢!
对于我正在编写的软件,我需要知道 linux 帧缓冲区何时更新。我需要 Windows Mirror Drivers 之类的东西(有关更多信息,请查看 Wikipedia 上的 Mirror_driver)。
环顾四周,我没有找到任何东西,所以我正在寻找一种方法来实现这一点。
从我所见,我需要编写一个在帧缓冲区特定模块之后加载的模块,并挂钩 fb ops 结构以注入自己的东西并捕获更新。
有人可以给我一个提示吗?我对内核模块编写没有太多经验。
谢谢!
对于一般内核模块编写技巧,您可以阅读以下书籍:Linux Kernel Development、Linux Kernel in a Nutshell和Linux Device Drivers。
在您了解了如何构建和安装自己的内核模块的基础知识之后,您可以阅读内核的源代码以找出帧缓冲区的内容(从 Documentation/fb/framebuffer.txt 开始)。我不确定您是否可以像这样连接帧缓冲区驱动程序,如果不能,您可能需要自己添加挂钩支持或“劫持”主驱动程序的事件以模拟挂钩。例如,假设有一个函数在有更新时被调用。您可以找到声明指向该函数的指针的位置,保存该值,然后使用指向您的函数的指针对其进行修改。在您的函数内部,您调用原始函数,然后调用您自己的代码来操作您想要的内容并正确返回。
我对帧缓冲区的东西不太了解,所以我只是猜测你的选择是什么。有可能在某个地方有一个特定于 linux-fb 主题的讨论列表。这可能是我一个好的开始。