diff --git a/src/kernel/arch_i386/interrupts.c b/src/kernel/arch_i386/interrupts.c index 9dd7ea9..45ab349 100644 --- a/src/kernel/arch_i386/interrupts.c +++ b/src/kernel/arch_i386/interrupts.c @@ -62,6 +62,10 @@ cpu_registers_t *syscall(cpu_registers_t *regs){ } +void install_irq_handler(void (*handler)(), uint8_t irqno){ + interrupt_handlers[irqno] = handler; +} + void init_idt(){ for(uint32_t i = 0; i < 32; i++){ set_idt_entry(i, (_isr0 + ((_isr1 - _isr0) * i)), IDT_GATE_INT, 0x10); diff --git a/src/kernel/shared/interrupts.h b/src/kernel/shared/interrupts.h index d5df1c6..0bb1ba2 100644 --- a/src/kernel/shared/interrupts.h +++ b/src/kernel/shared/interrupts.h @@ -28,4 +28,5 @@ inline void enable_interrupts(){ } inline void disable_interrupts(){ asm volatile("cli"); -} \ No newline at end of file +} +void install_irq_handler(void (*handler)(), uint8_t irqno); \ No newline at end of file