我需要编写linux内核模块,它将在屏幕上的所有其他窗口上显示消息框。我需要在内核中绘制图像,不需要从用户空间应用程序访问此图片。我不明白该怎么做。我应该使用什么框架 - framebuffers还是v4l?我想直接编程显示控制器并不是一个好主意,因为内核中还有其他驱动程序已经这样做了。所以,问题是:如何在内核驱动程序之间进行交互,以及如何指定我的图片应该在顶部?
如果有任何帮助,我将不胜感激。
答案 0 :(得分:0)
你想要的东西不能用这种方式完成,因为内核不处理GUI,特别是它不处理窗口系统。它以一种或另一种形式提供对视频输出设备的访问,但屏幕的所有实际绘图和合成都在用户空间中完成。
现在,内核模块可以只覆盖帧缓冲区,但是,正如您所注意到的,有多个接口可用于不同目的。此外,甚至对于2D桌面使用3D渲染也很常见。为您的目的劫持3D命令流将是不成比例的困难。
即使您完成了所有这些操作,也无法保证用户空间窗口系统不会立即覆盖您的消息框。也许甚至在它到达显示器之前。
所以不,它不能直接从内核以任何实际的方式完成。您最好的选择是用户空间守护程序代表您的内核代码通过标准通道显示消息,就像任何其他GUI程序一样。