Add a keyboard interrupt handler

This commit is contained in:
Philipp Oppermann
2019-01-25 14:20:00 +01:00
parent c2e4e8c96f
commit 1d153d694e

View File

@@ -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<ChainedPics> =
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) }
}