Linuxはドライバをデバイスファイルにどのように関連付けますか?

Linuxはドライバをデバイスファイルにどのように関連付けますか?

ULKベースのデバイスファイルとドライバに問題があるため、カーネルは2.6.11です。私の理解は次のとおりです。

  1. ユーザーが一部のデバイスファイルでシステムコールopen()を実行すると、カーネルはデバイスファイルのinodeから読み取り/書き込み機能を要求することがあります。

  2. デバイスファイルは、/sysフォルダのデバイスに基づいてudevによって生成されます。これは、デバイスファイルのinodeに、read()やwrite()などのデバイスとの通信方法を知る関数を指すi_fopフィールドがあることを意味します。これは、各デバイスファイルのinode-> i_fopフィールドが異なるfile_Operations構造を指す必要があることを意味します。

  3. その場合、デバイスドライバは、これらの読み取り/書き込み機能、おそらく読み取り/書き込み/ioctlなどを含む完全なfile_Operations構造を提供します。

これで、ULKは(デバイスファイルのopen()システムコールの説明で)「デバイスファイルの種類に応じて、inodeオブジェクトのi_fopフィールドをdef_blk_fopsまたはdef_chr_fopsファイル作業テーブルのアドレスに設定します」と言います。ブロックデバイスファイル同じ読み取り/書き込み機能を使用して、ユーザーはどのように他のデバイスと通信しますか?

また、device_driver構造を確認しましたが、実際にファイル操作機能のためのスペースがありません。それでは、オープンシステムコールがデバイス固有のドライバを使用してどのように動作するのですか?デバイス固有のタスク機能がdevice_driverにない場合、デバイス固有のタスク機能はどこにありますか?

ベストアンサー1

おすすめ記事