#![cfg_attr(feature = "no_std", no_std)]
#![feature(decl_macro)]
#![feature(abi_x86_interrupt)]
use x86_64::instructions::interrupts::*;
pub(crate) mod idt;
pub(crate) mod pic;
pub(crate) mod gdt;
pub unsafe fn initialize() -> Result<(), &'static str> {
pic::initialize();
Ok(())
}
pub fn enable_irq(id : u8) {
idt::clear_irq_mask(id);
}
pub fn disable_irq(id : u8) {
idt::set_irq_mask(id);
}
pub fn set_irq_handler(id : u8, handler : fn()) {
without_interrupts( || {
idt::set_basic_handler(id, handler);
});
}