可以通过进一步的键盘中断来中断linux内核键盘中断

时间:2017-09-07 00:50:31

标签: linux-kernel interrupt-handling keyboardinterrupt

在linux 0.11内核中,键盘中断处理程序是陷阱门,即不禁用INTR引脚的中断,

_keyboard_interrupt:
push eax
...
in al,60h // read scan code
call key_table[eax*4]
reset keyboard
...
mov al, 20h
out 20h, al // send EOI to 8259A interrupt controller
call _do_tty_interrupt
...
pop eax
iretd

将EOI发送到8259A中断控制器之后,CPU正在 _do_tty_interrupt 中进行处理时,可能会断言另一个键盘中断。 键盘中断可以通过进一步的键盘中断中断(嵌套)吗?

1 个答案:

答案 0 :(得分:0)

键盘中有一个缓冲区,无法从缓冲区读取密钥会阻止键盘后续的任何IRQ,也不需要禁用中断。

如果在_do_tty_interrupt期间发生另一个中断,PIC会告诉CPU它,并且一旦CPU再次将状态信息保存在堆栈上,就会执行新的中断处理程序。