use bootloader_api::BootInfo;
use self::{framebuffer::FrameBuffer, os::OS};
use crate::hal::sys::halt;
mod framebuffer;
mod os;
pub struct Kernel {
_boot_info: &'static mut BootInfo,
os: OS,
}
impl Kernel {
pub fn new(boot_info: &'static mut BootInfo) -> Self {
let os = OS {
framebuffer: FrameBuffer::new(boot_info),
};
Self {
_boot_info: boot_info,
os,
}
}
pub fn run(self) -> ! {
if let Err(error) = self.os.run() {
panic!("FATAL | {error}");
}
halt()
}
}