Linuxカーネルのソースコードディレクトリには、多数のデバイスのドライバソースコードが含まれています/drivers
。時々、ソースコードの説明を見ると、ドライバがどのデバイスをターゲットにしているかについてのヒントが得られます。ただし、ドライバがどのデバイスやデバイスファミリを対象とするのかがわからないことがよくあります。そのデバイスのドライバを再追跡できますか?
答え1
これは、ドライバが作成されたデバイスの種類によって異なります。簡単ですが、一般的な例は次のとおりです。PCIデバイス。
PCIデバイスは一連のレジスタを介して自分自身を識別します。PCI構成スペース。たとえば、ネットワークカードは、Linuxカーネルが読み取ることができる一連のレジスタ値を介してどのタイプのカードを識別します。
PCIデバイス用のデバイスドライバは、ドライバ自体が制御できるデバイスを説明するPCI IDテーブルをエクスポートします。このIDテーブルはLinuxカーネルに登録されています。その後、Linuxカーネルはシステムに接続されている各デバイスを繰り返し、デバイスからPCI IDを取得し、そのIDに登録されているドライバを確認できます。これが特定のPCIハードウェア用のドライバを選択する方法です。
総合的に書きました。ブログ投稿Linuxネットワーキングスタック(調整、最適化、監視など)に関するすべて。そのブログ記事の冒頭で、私はigb
Linuxネットワークドライバコード(実際のコード例を含む)を見て、コードを示しました。PCI IDのエクスポート運転者が制御できる装置の場合igb
。