Espresso 0.0.1c
This commit is contained in:
@ -4,19 +4,26 @@
|
||||
|
||||
#include <drivers/irq.h>
|
||||
|
||||
irq_func_t func_list[64];
|
||||
|
||||
void irq_init(void)
|
||||
{
|
||||
set_irq_handler(0, (irq_func_t*)pit_handler);
|
||||
set_irq_handler(1, (irq_func_t*)keyboard_handler);
|
||||
}
|
||||
|
||||
void irq_handler(uint8_t irq_number)
|
||||
{
|
||||
switch (irq_number)
|
||||
if (irq_number < 64 && func_list[irq_number])
|
||||
{
|
||||
case 0:
|
||||
pit_handler();
|
||||
break;
|
||||
case 1:
|
||||
keyboard_handler();
|
||||
break;
|
||||
default:
|
||||
printf("Unhandled IRQ %u\n", irq_number);
|
||||
break;
|
||||
func_list[irq_number]();
|
||||
}
|
||||
}
|
||||
|
||||
void set_irq_handler(uint32_t num, irq_func_t* handler)
|
||||
{
|
||||
if (num < 64)
|
||||
{
|
||||
func_list[num] = (irq_func_t)handler;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user