有关Xserver模块的版本信息

时间:2010-12-21 01:00:47

标签: xorg

我正在尝试找到一个工具,它将从Xserver模块中提取模块版本信息(模块记录的一部分)。例如,在Xorg日志中,我可以在我的Xorg.0.log文件中看到librecord模块的以下信息......

[    39.892] (II) Loading /usr/lib/xorg/modules/extensions/librecord.so
[    39.905] (II) Module record: vendor="X.Org Foundation"
[    39.905]    compiled for 1.9.0, module version = 1.13.0
[    39.905]    Module class: X.Org Server Extension
[    39.905]    ABI class: X.Org Server Extension, version 4.0

是否有工具可以让我轻松提取上述信息。有时您可以在模块上使用modinfo并且它将具有版本信息,但这并不总是有效。我现在知道的唯一一致方法是解析xorg日志文件。感谢。

1 个答案:

答案 0 :(得分:1)

是的,有,你也可以尝试写一个小的。

http://gitorious.org/xdriverprobe

问题是xdriverprobe不能在较新的服务器上编译,因为我没有将它更新到最新的ABI。此外,xdriverprobe仅用于视频驱动程序,但它可以适用于其他模块。主要的源代码文件(xdriverprobe.c)少于500行,因此您可以通过阅读轻松学习。

它适用于Ubuntu 11.10 ... ./xdriverprobe -o moduledata提供您想要的信息。

查看其源代码。它确实:

  • dlopen()模块
  • 找到名为modulenameModuleData的符号(如果您的模块名为modulename
  • 该符号为XF86ModuleData*,请参阅/usr/include/xorg/xf86Module.h
  • 检查名为vers
  • 的成员

花几个小时,你就可以编写一个非常小的代码来完成你想要的工作。

更多信息:http://www.xfree86.org/current/DESIGN17.html#65(非常古老的文档,但今天写的大部分内容仍然是正确的)。如果您对该文档不满意,则必须阅读Xorg源代码。

快乐的黑客攻击!