2010-12-21 57 views
2

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

[ 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

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

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源代码。

快乐黑客!