JuliOS/src/interrupts/pic/mod.rs
Julien CLEMENT b5ebe0d4ad linted code
Signed-off-by: Julien CLEMENT <julien.clement@epita.fr>
2022-12-11 01:39:22 +01:00

36 lines
735 B
Rust

use crate::println;
pub use keyboard::keyboard_interrupt_handler;
use pic8259::ChainedPics;
pub use pit::timer_interrupt_handler;
pub mod keyboard;
pub mod pit;
pub const PIC_1_OFFSET: u8 = 32;
pub const PIC_2_OFFSET: u8 = PIC_1_OFFSET + 8;
#[derive(Debug, Clone, Copy)]
#[repr(u8)]
pub enum InterruptIndex {
Timer = PIC_1_OFFSET,
Keyboard,
}
impl InterruptIndex {
pub fn as_u8(self) -> u8 {
self as u8
}
pub fn as_usize(self) -> usize {
usize::from(self.as_u8())
}
}
pub static PICS: spin::Mutex<ChainedPics> =
spin::Mutex::new(unsafe { ChainedPics::new(PIC_1_OFFSET, PIC_2_OFFSET) });
pub fn init_pic() {
println!("Initializing PIC");
unsafe { PICS.lock().initialize() };
}