]>
git.dujemihanovic.xyz Git - nameless-os.git/blob - kernel/arch/x86/irq/interrupt.c
2 #include <irq/interrupt.h>
5 #include <irq/i8259a.h>
7 /* This table will hold pointers to our interrupt handlers. */
8 static int (*int_handler_table
[256])(struct interrupt_frame
*);
10 void int_handler(struct interrupt_frame
*frame
)
12 int interrupt
= frame
->interrupt
;
13 if (int_handler_table
[interrupt
] == NULL
) {
14 kprint("WARNING: Unhandled interrupt ", 0);
15 kprintb(interrupt
, 1);
16 kprint(" occurred!\n", 0);
18 int ret
= (*int_handler_table
[interrupt
])(frame
);
20 kprint("WARNING: Error while handling interrupt ", 0);
21 kprintb(interrupt
, 1);
25 if (interrupt
>= 0x20) {
26 pic_send_eoi(interrupt
- 0x20);
30 int register_interrupt(int irq
, int (*handler
)(struct interrupt_frame
*))
32 int_handler_table
[irq
] = handler
;
33 if (irq
>= 32 && irq
< 48) {