summaryrefslogtreecommitdiff
path: root/kernel/src/interrupts/interrupt_handlers.rs
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/interrupts/interrupt_handlers.rs')
-rw-r--r--kernel/src/interrupts/interrupt_handlers.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/kernel/src/interrupts/interrupt_handlers.rs b/kernel/src/interrupts/interrupt_handlers.rs
index 4624723..e7af0e1 100644
--- a/kernel/src/interrupts/interrupt_handlers.rs
+++ b/kernel/src/interrupts/interrupt_handlers.rs
@@ -1,11 +1,21 @@
use super::InterruptType;
use crate::io::qemu;
+use core::fmt::Write;
use x86_64::structures::idt::{InterruptStackFrame, PageFaultErrorCode};
+use x86_64::structures::port;
pub extern "x86-interrupt" fn timer_handler(stack_frame: &mut InterruptStackFrame) {
- panic!("Timer interrupt recieved\n\n");
+ write!(crate::io::vga_text::OStream::new(), "Timer");
if let Some(apic) = unsafe { super::apic::get_local_apic() } {
apic.end_of_interrupt()
}
}
+
+pub extern "x86-interrupt" fn keyboard_handler(stack_frame: &mut InterruptStackFrame) {
+ let code: u8 = unsafe { port::PortRead::read_from_port(0x60) };
+ write!(crate::io::vga_text::OStream::new(), "{}", code);
+ if let Some(apic) = unsafe { super::apic::get_local_apic() } {
+ apic.end_of_interrupt()
+ }
+}