From 1d153d694e7021391d6704d801fb2cc9f7189fc0 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 25 Jan 2019 14:20:00 +0100 Subject: [PATCH] Add a keyboard interrupt handler --- src/interrupts.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/interrupts.rs b/src/interrupts.rs index d6f80904..735fbfbb 100644 --- a/src/interrupts.rs +++ b/src/interrupts.rs @@ -13,6 +13,7 @@ pub const PIC_1_OFFSET: u8 = 32; pub const PIC_2_OFFSET: u8 = PIC_1_OFFSET + 8; pub const TIMER_INTERRUPT_ID: u8 = PIC_1_OFFSET; +pub const KEYBOARD_INTERRUPT_ID: u8 = PIC_1_OFFSET + 1; pub static PICS: spin::Mutex = spin::Mutex::new(unsafe { ChainedPics::new(PIC_1_OFFSET, PIC_2_OFFSET) }); @@ -28,6 +29,7 @@ lazy_static! { .set_stack_index(gdt::DOUBLE_FAULT_IST_INDEX); } idt[usize::from(TIMER_INTERRUPT_ID)].set_handler_fn(timer_interrupt_handler); + idt[usize::from(KEYBOARD_INTERRUPT_ID)].set_handler_fn(keyboard_interrupt_handler); idt }; } @@ -52,3 +54,8 @@ extern "x86-interrupt" fn timer_interrupt_handler(_stack_frame: &mut ExceptionSt print!("."); unsafe { PICS.lock().notify_end_of_interrupt(TIMER_INTERRUPT_ID) } } + +extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: &mut ExceptionStackFrame) { + print!("k"); + unsafe { PICS.lock().notify_end_of_interrupt(KEYBOARD_INTERRUPT_ID) } +}