summaryrefslogtreecommitdiff
path: root/kernel/src/interrupts/interrupt_handlers.rs
blob: defe5495b9c2bf9c5f6bba66b61eef172fe48334 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use core::fmt::Write;
use x86_64::structures::idt::InterruptStackFrame;
use x86_64::structures::port;

pub extern "x86-interrupt" fn timer_handler(_stack_frame: &mut InterruptStackFrame) {
    crate::vga_println!("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) };
    crate::vga_println!("{}", code);
    if let Some(apic) = unsafe { super::apic::get_local_apic() } {
        apic.end_of_interrupt()
    }
}