Обновить src/interrupts.rs

This commit is contained in:
2026-03-31 00:47:36 +03:00
parent 8cc70a6a1a
commit a35b0b9706

View File

@@ -4,12 +4,11 @@ use pic8259::ChainedPics;
use spin; use spin;
use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame, PageFaultErrorCode}; use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame, PageFaultErrorCode};
#[derive(Debug, Clone, Copy)] pub const PIC_1_OFFSET: u8 = 32;
#[repr(u8)] pub const PIC_2_OFFSET: u8 = PIC_1_OFFSET + 8;
pub enum InterruptIndex {
Timer = PIC_1_OFFSET, pub static PICS: spin::Mutex<ChainedPics> =
Keyboard, spin::Mutex::new(unsafe { ChainedPics::new(PIC_1_OFFSET, PIC_2_OFFSET) });
}
lazy_static! { lazy_static! {
static ref IDT: InterruptDescriptorTable = { static ref IDT: InterruptDescriptorTable = {
@@ -28,6 +27,23 @@ lazy_static! {
}; };
} }
#[derive(Debug, Clone, Copy)]
#[repr(u8)]
pub enum InterruptIndex {
Timer = PIC_1_OFFSET,
Keyboard,
}
impl InterruptIndex {
fn as_u8(self) -> u8 {
self as u8
}
fn as_usize(self) -> usize {
usize::from(self.as_u8())
}
}
pub fn init_idt() { pub fn init_idt() {
IDT.load(); IDT.load();
} }
@@ -110,19 +126,3 @@ fn test_breakpoint_exception() {
// invoke a breakpoint exception // invoke a breakpoint exception
x86_64::instructions::interrupts::int3(); x86_64::instructions::interrupts::int3();
} }
pub const PIC_1_OFFSET: u8 = 32;
pub const PIC_2_OFFSET: u8 = PIC_1_OFFSET + 8;
pub static PICS: spin::Mutex<ChainedPics> =
spin::Mutex::new(unsafe { ChainedPics::new(PIC_1_OFFSET, PIC_2_OFFSET) });
impl InterruptIndex {
fn as_u8(self) -> u8 {
self as u8
}
fn as_usize(self) -> usize {
usize::from(self.as_u8())
}
}