JuliOS/src/interrupts/pic/mod.rs
Julien CLEMENT 9b5004bf81
All checks were successful
continuous-integration/drone Build is passing
continuous-integration/drone/push Build is passing
feat(keyboard): add distinct module for keyboard
Signed-off-by: Julien CLEMENT <julien.clement@epita.fr>
2022-04-21 17:38:46 +02:00

39 lines
742 B
Rust

use pic8259::ChainedPics;
use crate::{println};
pub use pit::{timer_interrupt_handler};
pub use keyboard::keyboard_interrupt_handler;
pub mod pit;
pub mod keyboard;
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() };
}