//! The ableOS kernel. //! Named akern. //! Akern is woefully undersupported at the moment but we are looking to add support improve hardware discovery and make our lives as kernel and operating system developers easier and better #![no_std] #![feature( abi_x86_interrupt, alloc_error_handler, inline_const, panic_info_message, pointer_is_aligned, prelude_import, ptr_sub_ptr, custom_test_frameworks )] #![deny(clippy::pedantic, missing_docs, warnings)] #![allow(dead_code)] #![test_runner(crate::test_runner)] extern crate alloc; mod allocator; mod arch; mod bootmodules; pub mod device_tree; pub mod handle; pub mod host; pub mod ipc; mod kmain; mod logger; mod memory; mod scheduler; pub mod utils; 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) -> ! { 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 {} } #[cfg(test)] fn test_runner(tests: &[&dyn Fn()]) { println!("Running {} tests", tests.len()); for test in tests { test(); } }