Linux デバイス ドライバーの「ドメイン」間の関係は何ですか?

Linux デバイス ドライバーの「ドメイン」間の関係は何ですか?

Linux デバイス ドライバーと電源管理 API について読んでいると、「システム レベル」、「サブシステム」、「プラットフォーム」、「クラス」などの用語に何度も遭遇します。

それらの関係はどのようなものですか? システムはプラットフォームのサブタイプですか? それとも、システムとプラットフォームは包含関係なしで並行して存在しますか? 「クラス」と「システム」の違いは何ですか? 各ドメインは何に適していますか (つまり、特定の機能を実装する場合、クラス レベルの機能にすべきですか、それともプラットフォーム機能にすべきですか、それとも他の機能にすべきですか)?

要するに、これらのさまざまなものが何であるかを誰か私に説明してもらえますか?

答え1

これらは定義が難しい。一般的に、デバイス列挙の文脈では、

  • 「プラットフォーム」デバイスは、通常 PC 上、または通常 Raspberry Pi 上に搭載されているものです。

    カーネルは PC または RPi 上で実行するようにコンパイルされているため、まずそれらを探し始めます。マザーボード コンポーネントの一部、CPU、メモリがこのカテゴリに該当します。

  • 「サブシステム」とは、基本的に、異なるハードウェアに対して同様の機能を備えたドライバーのグループです。

    個々のドライバは、別のサブシステムのドライバを使用することもできます。たとえば、「サウンド」サブシステム ドライバは個々のサウンド カードを処理し、共通のサウンド カード インターフェイスを提供しますが、ドライバは、使用されているサウスブリッジ チップの種類に関係なく、PCI サブシステムを使用してサウンド カードを見つけることができます。

  • 「クラス」ドライバーは、共通のインターフェースを実装するさまざまなベンダーのデバイスを処理します。

    これは、たとえば大容量ストレージ デバイスの標準があり、互換性があると主張するすべてのデバイスを単一のドライバーで処理する USB デバイスでは一般的です。

関連情報