2025-06-13 18:03:39 -05:00
|
|
|
#ifndef _IRQ_H
|
|
|
|
|
#define _IRQ_H
|
|
|
|
|
|
|
|
|
|
#include <types.h>
|
|
|
|
|
|
2026-03-20 16:57:08 -05:00
|
|
|
typedef struct {
|
|
|
|
|
uint32_t ds, es, fs, gs;
|
|
|
|
|
|
|
|
|
|
uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax;
|
|
|
|
|
|
|
|
|
|
uint32_t int_no;
|
|
|
|
|
uint32_t err_code;
|
|
|
|
|
|
|
|
|
|
uint32_t eip;
|
|
|
|
|
uint32_t cs;
|
|
|
|
|
uint32_t eflags;
|
|
|
|
|
} registers_t;
|
|
|
|
|
|
|
|
|
|
typedef registers_t* (*irq_func_t)(registers_t*);
|
2025-07-01 20:39:38 -05:00
|
|
|
|
|
|
|
|
void irq_init(void);
|
2025-07-03 20:30:21 -05:00
|
|
|
|
2026-03-20 16:57:08 -05:00
|
|
|
registers_t* irq_handler(uint32_t irq, registers_t* regs);
|
|
|
|
|
|
|
|
|
|
void set_irq_handler(uint32_t num, irq_func_t handler);
|
|
|
|
|
/*void add_irq_handler(uint32_t num, irq_func_t* handler);*/
|
2025-07-03 20:30:21 -05:00
|
|
|
|
2026-03-20 16:57:08 -05:00
|
|
|
uint32_t get_interrupts_missed(void);
|
2025-06-13 18:03:39 -05:00
|
|
|
|
|
|
|
|
#endif
|