2

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ログファイルを解析することです。ありがとう。

4

1 に答える 1

1

はい、あります。小さなものを書いてみることもできます。

http://gitorious.org/xdriverprobe

問題は、xdriverprobeを最新のABIに更新しなかったため、xdriverprobeが新しいサーバーでコンパイルされないことです。また、xdriverprobeはビデオドライバーにのみ使用されますが、他のモジュールで使用するように適合させることができます。メインのソースコードファイル(xdriverprobe.c)は500行未満なので、読んで簡単に学ぶことができます。

Ubuntu11.10で動作します..../xdriverprobe -o moduledata必要な情報を提供します。

そのソースコードを見てください。します:

  • dlopen()モジュール
  • と呼ばれるシンボルを見つけmodulenameModuleDataます(モジュールが呼び出された場合modulename
  • そのシンボルはXF86ModuleData*Seeです/usr/include/xorg/xf86Module.h
  • 名前の付いたメンバーを確認してくださいvers

数時間を費やすと、あなたが望むことをする非常に小さなコードを書くことができるでしょう。

詳細情報:http ://www.xfree86.org/current/DESIGN17.html#65 (非常に古い文書ですが、そこに書かれていることのほとんどは今日でも当てはまります)。そのドキュメントに満足できない場合は、Xorgソースコードを読む必要があります。

ハッピーハッキング!

于 2011-10-19T19:30:27.783 に答える