Hello.
I recently added interrupts to my kernel and wanted to check if they work correctly, but I came across the fact that the interrupt only works once, that is, in the example with the keyboard: I press a button - a pixel is drawn, but if I press it further, the interrupt does not work.
For debugging, I used the output to the COM port, after which qemu wrote the data to the document. Output to the document occurred only once.
I do not understand why this happens, because the processor is constantly waiting for an interrupt and must perform not only the first interrupt (look bootloader.asm).
Here is irq1_header().
Here is a link to the repository with the system.
Interrupt is called only once
Re: Interrupt is called only once
You won't get any further keyboard interrupts until you read the keystroke from the keyboard port.
-
linguofreak
- Member

- Posts: 510
- Joined: Wed Mar 09, 2011 3:55 am
Re: Interrupt is called only once
More generally, you don't just need to ensure that the CPU is ready to *receive* the next interrupt, but that the interrupt controller is ready to pass the next interrupt on, and that the device in question is ready to *send* the next interrupt. It doesn't do any good for the CPU to be ready for an interrupt if it never receives it in the first place.
Re: Interrupt is called only once
Thanks.iansjack wrote:You won't get any further keyboard interrupts until you read the keystroke from the keyboard port.
