2017-09-07 2 views
0

In Linux 0.11 Kernel unterbrochen werden, ist die Tastatur-Interrupt-Handler ein Trap Gate, dh nicht Interruptsperre von INTR Stift,Kann Kernel Tastatur linux Interrupt durch eine weitere Tastatur-Interrupt

_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 

Während CPU-Verarbeitung ist in _do_tty_interrupt nach senden EOI zu 8259A Interrupt-Controller, kann eine andere Tastatur Interrupt geltend gemacht werden. Kann Tastatur-Interrupt durch weitere Tastatur-Interrupts unterbrochen (verschachtelt) werden?

Antwort

0

Sie haben einen Puffer in der Tastatur, Fehler beim Lesen des Schlüssels aus dem Puffer verhindert nachfolgende IRQs von der Tastatur, es besteht keine Notwendigkeit, den Interrupt zu deaktivieren.

Wenn während _do_tty_interrupt ein anderer Interrupt auftritt, teilt der PIC der CPU dies mit und ein neuer Interrupt-Handler wird ausgeführt, sobald die CPU wieder Statusinformationen auf dem Stack speichert.

+0

Möglicherweise möchten Sie eine Erläuterung des Interrupt-Handshakes zwischen dem Tastaturcontroller und dem 8259A hinzufügen. – rcgldr

+0

Bevor EOI an den Interrupt-Controller 8259A gesendet wird, ** wurde der Schlüssel aus dem Schlüsselpuffer gelesen und dann wird die Tastatur zurückgesetzt ** (siehe meine aktualisierte Frage), daher denke ich, dass nachfolgende IRQs über die Tastatur generiert werden können. Ist es richtig? –

Verwandte Themen