//! The ableOS kernel. #![feature( abi_x86_interrupt, alloc_error_handler, panic_info_message, pointer_is_aligned, prelude_import, ptr_sub_ptr )] #![no_std] extern crate alloc; mod allocator; mod arch; mod kmain; mod logger; mod task; use versioning::Version; /// Kernel's version pub const VERSION: Version = Version { major: 0, minor: 2, patch: 0, }; #[panic_handler] fn panic(info: &core::panic::PanicInfo) -> ! { // TODO: Better panic handler let _ = crate::arch::log(format_args!( "\r\n\x1b[1m\x1b[4m\x1b[38;5;125mKernel Panic\x1b[0m\r\n", )); if let Some(loc) = info.location() { let _ = crate::arch::log(format_args!( "Location: {}: {}, {}\r\n", loc.file(), loc.line(), loc.column() )); } if let Some(msg) = info.message() { let _ = crate::arch::log(format_args!("{msg}\r\n")); } loop {} }