2

Linuxカーネルのデバイスドライバーについて学習しようとしています。そのために、次の3つのモジュールを作成しました。

  • バスタイプ
  • デバイスドライバー
  • 今は何もしない偽のデバイスが登録されているだけです

バス、ドライバー、およびデバイスを作成するモジュールをロードできます。デバイスとデバイス ドライバーがバインドされていることを示すリンクを含め、すべてが sysfs に表示されます。

udevadm monitorまた、ドライバーとデバイスが読み込まれると、いくつかのイベントが発生することもわかります。

KERNEL[1275564332.144997] add      /module/bustest_driver (module)
KERNEL[1275564332.145289] add      /bus/bustest/drivers/bustest_example (drivers)
UDEV  [1275564332.157428] add      /module/bustest_driver (module)
UDEV  [1275564332.157483] add      /bus/bustest/drivers/bustest_example (drivers)
KERNEL[1275564337.656650] add      /module/bustest_device (module)
KERNEL[1275564337.656817] add      /devices/bustest_device (bustest)
UDEV  [1275564337.658294] add      /module/bustest_device (module)
UDEV  [1275564337.664707] add      /devices/bustest_device (bustest)

しかし、結局デバイスは hal に表示されません。hal に見えるようにするには、他に何が必要ですか?

4

1 に答える 1

0

問題は、Hal がサブシステムごとにハンドラーを必要とすることです (ハンドラーのリストは にあります)。明らかに、hal は、このケースのために考案されたサブシステムである をhald/linux/device.cサポートしていません。bustest

バスが "bustest" ではなく "pseudo" という名前で登録されている場合、hal は偽のデバイス用に定義された一連のハンドラーを使用してデータベース エントリを初期化し、登録してDeviceAddedイベントを送信します。

于 2010-06-03T15:50:11.543 に答える