セカンダリ IDE コントローラーの最初のディスクが QEMU で解放されるのを待機しようとすると、inb(0x177) は常に 0 を返します)
手順は次のとおりです。
次のようにして、3番目のディスクをQEMUに追加しようとしました:
1) 新しい空のディスク イメージを作成します。 2) QEMU オプションで hdc としてイメージを追加します。 3) セカンダリ チャネルを処理するための ide.c という名前の新しいファイルを作成します。(ハードウェアマニュアルで指定されているように、0x1F* の代わりにポート 0x17* を使用)
ide.c には、セカンダリ コントローラーが存在するかどうかを確認するための次のコードがあります。
outb(0x173, 0x88);
int r = inb(0x173);
printf("SECONDARY DISK CONTROLLER%s\n", r==0x88?" present":"not present")
&それはそうであることを示しています。
しかし、チェックデバイスがビジーではありません。それがなぜなのか誰か知っていますか?
static int
ide_wait_ready(bool check_error)
{
int r;
//WAIT FOR !BUSY
while (((r = inb(0x177)) > 0)
;
}