我正在为x86编写一个内核(使用qemu来模拟)作为一个学校项目,我遇到了奇怪的问题。 即使我在eflags寄存器中设置了中断标志,我也没有得到任何时钟中断(我用qemu info register命令查看,我看到eflag = 0x292,这意味着它被设置)。
准确地说,当我在用户模式下运行旋转测试(while(1); program)时,我得到一个时钟中断,但在那之后,它停止,qemu似乎没有模拟更多!它发生在其他人身上吗?还有其他可以影响中断的机制吗?
任何人都有线索?
晒。
答案 0 :(得分:3)
显然在x86中,你必须在每一个之后确认时钟中断。 即每次中断后都必须向圈中发送确认信息。
答案 1 :(得分:0)
如果您期望来自RTC的中断,则必须首先通过读取REG_C(CMOS寄存器0x0C)来确认先前的中断。