aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatasha Moongrave <natasha@256phi.eu>2026-03-11 11:05:29 +0100
committerNatasha Moongrave <natasha@256phi.eu>2026-03-11 11:05:29 +0100
commit2b4e3f8e68e0fd2c75fb1ca289b632c7dc655d72 (patch)
tree791c09f2b6219d63b96dbb62474a9054894b8961
parente722a692daa7e734f425dd3e92d85c1c5b3b9eea (diff)
added base handling for keyboard (PS/2) hardware interrupts in src/interrupts.rs
-rw-r--r--StrixKernel/src/interrupts.rs20
1 files changed, 18 insertions, 2 deletions
diff --git a/StrixKernel/src/interrupts.rs b/StrixKernel/src/interrupts.rs
index 02d39f0..039cb3c 100644
--- a/StrixKernel/src/interrupts.rs
+++ b/StrixKernel/src/interrupts.rs
@@ -15,10 +15,13 @@ lazy_static! {
idt.breakpoint.set_handler_fn(breakpoint_handler); // breakpoint exception handler
unsafe {
idt.double_fault.set_handler_fn(double_fault_handler)
- .set_stack_index(gdt::DOUBLE_FAULT_IST_INDEX); // new
+ .set_stack_index(gdt::DOUBLE_FAULT_IST_INDEX);
}
idt[InterruptIndex::Timer.as_usize()]
- .set_handler_fn(timer_interrupt_handler); // new
+ .set_handler_fn(timer_interrupt_handler);
+
+ idt[InterruptIndex::Keyboard.as_usize()]
+ .set_handler_fn(keyboard_interrupt_handler);
idt
@@ -57,6 +60,7 @@ pub static PICS: spin::Mutex<ChainedPics> =
#[repr(u8)]
pub enum InterruptIndex {
Timer = PIC_1_OFFSET,
+ Keyboard,
}
impl InterruptIndex {
@@ -80,6 +84,18 @@ extern "x86-interrupt" fn timer_interrupt_handler(
}
}
+extern "x86-interrupt" fn keyboard_interrupt_handler(
+ _stack_frame: InterruptStackFrame)
+{
+ print!("k");
+
+ unsafe {
+ PICS.lock()
+ .notify_end_of_interrupt(InterruptIndex::Keyboard.as_u8());
+ }
+}
+
+
// TESTS //