2010-12-21 97 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源代碼。

快樂黑客!