From 95cd78840f0891e60f5ebecc8a8eb4fbaf3c2ebf Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Sun, 12 Jan 2025 01:17:36 -0600 Subject: PROJECT RESTRUCTURING Move the entire kernel into its own directory. Create new directories for system commands, libraries and other required essentials for a complete Unix-like operating system. Signed-off-by: Danny Holman --- kernel/core/interrupt.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 kernel/core/interrupt.c (limited to 'kernel/core/interrupt.c') diff --git a/kernel/core/interrupt.c b/kernel/core/interrupt.c new file mode 100644 index 0000000..6d9e69d --- /dev/null +++ b/kernel/core/interrupt.c @@ -0,0 +1,21 @@ +#include +#include +#include + +static void (*isr_handlers[MAX_ISR])(struct isr_frame *frame); + +void register_isr_handler(unsigned int isr, void (*handler)(struct isr_frame *frame)) { + if (isr > MAX_ISR) + panic("Attempted to set non-existant interrupt vector"); + isr_handlers[isr] = handler; +} + +void clear_isr_handler(unsigned int isr) { + if (isr > MAX_ISR) + panic("Attempted to clear non-existant interrupt vector"); + isr_handlers[isr] = NULL; +} + +void isr_dispatch(struct isr_frame frame) { + (*isr_handlers[frame.isr_vector])(&frame); +} -- cgit v1.2.3