2017-03-01 6 views
0

私は入力されたGNU/Linuxドライバを研究しています。たとえば、usb mouse driverのように、私はそれらがどのように相互作用するかを知っていますが、カーネルがこのドライバをロードするデバイスの種類を認識する方法はわかりません。私は斜めにLinux Device Driversを見てきましたが、この問題については何も見つかりませんでした。Linuxはどのような入力ドライバを読み込む必要があるのでしょうか?

このプロセスを理解するために何を読むべきですか?

答えて

2

背景:カーネルはkobject_uevent_env機能を使用してueventsと呼ばれるものを送信します。このueventsは、netlinkソケットのデーモンudevによって読み込まれています(以前のバージョンではhotplugが使用されていました)。開始前に、udevは/etc/udev/rules.d/からルールをプリロードします。このルールには、カーネルからの適切なuevent(fe. insmod a module)への反応として何が行われる必要があるかに関する情報が含まれています。

あなたの質問についてどうぞ。一般的にどのようなUEVENTメッセージが同梱されてMODALIASで、それは次のようになります。

MODALIAS = usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02 

USBデバイスに格納ベンダIDとデバイスID MODALIASが構築されている場合、それらは、また、使用されています。動的にロードできるカーネルデバイスドライバ(.koファイル)には、デバイスIDを格納することもできます。このドライバは、このドライバで動作します。ドライバは、MODULE_DEVICE_TABLEマクロを使用して、適切なデバイス/ベンダIDで動作することをアナウンスすることができます。それで、デバイスとダイナミックモジュールの関係がどのように確立されるのでしょうか。

+1

"*これは、デバイスとダイナミックモジュールの関係がどのように確立されるかです。" * - この合計ステートメントは広すぎます。あなたはUSBデバイスについてしか説明していません。 OPのタイトルはUSBデバイスに限られていません。 I.一般的なSoCに見られるような別の周辺バス上のADC、UART、さらにはUSBコントローラなどのデバイスは、ほとんど自己識別ではありません。 – sawdust

+0

@sawdustあなたが答えが嫌いなら、あなた自身が提案することができます。私があなたが言及したことを説明できるなら、私はうれしいでしょう。私は私が知っている情報の一部を投稿しました。 –

+0

どこでこれについて読むことができますか? – WhilseySoon

関連する問題