当我尝试等待辅助IDE控制器中的第一个磁盘在QEMU中空闲时,inb(0x177)始终返回0)

Steps followed:

我尝试通过执行以下操作向QEMU添加第3个磁盘:

1)创建一个新的空白磁盘映像2)在QEMU选项中将映像添加为hdc 3)创建一个名为ide.c的新文件来处理辅助通道 . (使用h / w手册中指定的端口0x17 *而不是0x1F *)

在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)
        ;
}