#![no_std]
#![no_main]

extern crate alloc;

use foundry_os::{
    arch::x86_64::processing::async_io::task::{Executor, Task},
    prelude::*,
    util::shell::shell,
};

#[unsafe(no_mangle)]
extern "C" fn kmain() -> ! {
    println_log!(" [ Initialising Kernel Systems ] ");
    if let Err(err) = foundry_os::boot() {
        panic!("{}", err);
    }
    println_log!(" [ Kernel Initialised Successfully ] ");

    let mut executor = Executor::new();
    executor.spawn(Task::new(shell()));
    executor.run()
}
