1

Linux カーネル 3.0 以降、pci プローブは次のように自動化されます。pci_register_driver(&pci_driver);

Linux カーネル 2.6 以前では、プログラマーはキャラクター デバイスを作成し、PCI リストを調べて、適切な PCI を選択し、それを操作する必要がありました。この手順の手順、PCI ドライバを使用する前にキャラクタ デバイスの初期化が必要な理由、およびキャラクタ ドライバを登録する必要がなくなった理由を教えてください。

4

1 に答える 1

1

Linux 2.4以前を参照していると思います。バス、デバイス、およびドライバーを備えた現在のカーネル デバイス モデルは、常に 2.6 シリーズの一部です。

あなたの質問は何ですか?

ブート時に PCI デバイスのリストが作成されます。次に、ドライバーが登録されると、バス上に存在するデバイスと一致するようにpci_driver構造体フィールドが使用されます。id_table次に、一致したデバイス構造へのポインターを使用して、pci_driver プローブ関数が呼び出されます。

  • pci_driver が登録されました
  • バス上に存在するデバイスごとに、デバイスの id 要素 (製品 ID とベンダー ID) が、pci_driver によって提供される id_table の id 要素と比較されます。
  • 一致する場合は、pci_driver プローブ関数が呼び出され、このプローブ関数で、char デバイスやブロック デバイスなどを登録できます。

そのため、2.4 と大差ありませんが、すべてのプロービング、マッチング ドライバーとデバイスなどは、pci ドライバーではなく「デバイス コア」によって処理されます。

詳しい説明はこちらのPDFこちらのページをご覧ください

于 2012-08-28T07:29:34.833 に答える