static void interrupt_handler(struct trapframe *tf) { extern clock_int_handler(void *); extern serial_int_handler(void *); int i; for (i = 0; i < 8; i++) { if (tf->tf_cause & (1 << (CAUSEB_IP + i))) { switch (i) { case 2: //D9000_IRQ dm9000_interrupt_handler(); break; case TIMER0_IRQ: clock_int_handler(NULL); break; case COM1_IRQ: serial_int_handler(NULL); break; default: print_trapframe(tf); panic("Unknown interrupt!"); } } } }
static void interrupt_handler(struct trapframe *tf) { extern clock_int_handler(void*); extern serial_int_handler(void*); extern keyboard_int_handler(); int i; for(i=0;i<8;i++){ if(tf->tf_cause & (1<<(CAUSEB_IP+i))){ switch(i){ case TIMER0_IRQ: clock_int_handler(NULL); break; case COM1_IRQ: //kprintf("COM1_IRQ!\n"); serial_int_handler(NULL); break; case KEYBOARD_IRQ: //kprintf("KEYBOARD\n"); keyboard_int_handler(); break; default: print_trapframe(tf); panic("Unknown interrupt!"); } } } }