Der Wert des Statusregisters( mit kprintf("StatusRegister:%d", inb(0x64) ); ) gelesen ist nach und vor der Aktivierung 0x1c, also ganz normal.
Trotzdem erfahre ich mit (kprintf("Ausgabepuffer:%d", inb(0x60) ), dass auch nach dem Bestätigungs IRQ noch 0xfa im Puffer ist.
Wenn Ich versuche ihn im Handler gewaltsam mit outb(0x60, 0x00);zu leeren wird immer wieder der Bestätigungs IRQ ausgelöst wird:
Ja ein EOI SOLLTE zumindest gesendet werden wie man hier sieht:
void handle_irq(struct cpu_state* cpu)
{
kprintf("Interrupt: %d\n", cpu->intr);
if (cpu->intr >= 0x28) {
// EOI an Slave-PIC
outb(0xa0, 0x20);
}else if(cpu->intr==0x21){on_key_event(0x21);}
// EOI an Master-PIC
outb(0x20, 0x20);
}