SATAデバイスの列挙プロセスを理解するために、コマンド出力に私のシステムのSATAホストドライバとして表示されるドライバ/ata/ata_piix.cを見ましたlspci
。
00:1f.2 IDE interface: Intel Corporation NM10/ICH7 Family SATA Controller [IDE mode] (rev 01)
Subsystem: Elitegroup Computer Systems Device 2672
Kernel driver in use: ata_piix
Kernel modules: pata_acpi
SATAホストコントローラであるAFAIKは、PCIバスに接続されたPCIデバイスです。 ata_piix.cのプローブメソッドが実行されると、ホストコントローラが初期化され、プローブ呼び出しで他の多くの初期化シーケンスが完了します。プローブメソッドの最後で次のコードを実行します。
/* perform each probe asynchronously */
for (i = 0; i < host->n_ports; i++) {
struct ata_port *ap = host->ports[i];
async_schedule(async_port_probe, ap);
}
したがって、私が理解しているように、コールはaync_schedule()
ホストポートに接続されているSATAデバイスのプローブメソッドを1つずつ呼び出します。私の質問は次のとおりです。
- 上記の理解は正しいですか?これはSATAデバイスの列挙が機能する方法であり、そうでない場合はLinuxカーネルがSATAデバイスの列挙プロセスを処理する方法です。
aync_schedule()
正確にどのように機能するかを提案してください。- SATAホストコントローラ用のカーネルドライバとして使用されている場合、
ata_piix.c
デバイス用のカーネルモジュールがコマンドpata_acpi
出力に表示されるのはなぜですかlspci
?