1
0
Fork 0
forked from AbleOS/ableos
ableos_time/kernel/src/lib.rs

70 lines
1.4 KiB
Rust
Raw Normal View History

2022-04-11 17:23:11 -05:00
//! 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
2022-04-11 17:23:11 -05:00
2023-05-23 05:16:14 -05:00
#![no_std]
2023-03-30 16:43:04 -05:00
#![feature(
abi_x86_interrupt,
alloc_error_handler,
inline_const,
panic_info_message,
pointer_is_aligned,
2023-05-23 05:16:14 -05:00
ptr_sub_ptr,
2023-10-27 20:26:04 -05:00
custom_test_frameworks,
naked_functions,
2023-03-30 16:43:04 -05:00
)]
2023-05-23 05:16:14 -05:00
#![allow(dead_code)]
2023-05-15 02:19:34 -05:00
#![test_runner(crate::test_runner)]
2022-05-07 07:08:34 -05:00
extern crate alloc;
2023-03-30 16:43:04 -05:00
mod allocator;
mod arch;
2023-07-08 23:22:44 -05:00
mod bootmodules;
2023-08-22 08:52:30 -05:00
mod capabilities;
mod device_tree;
mod handle;
mod holeybytes;
mod ipc;
2023-03-30 16:43:04 -05:00
mod kmain;
mod logger;
mod memory;
2023-08-22 08:52:30 -05:00
mod task;
mod utils;
2022-03-02 08:38:22 -06:00
use versioning::Version;
2022-04-11 17:23:11 -05:00
/// Kernel's version
2023-03-30 16:43:04 -05:00
pub const VERSION: Version = Version {
2022-03-02 08:38:22 -06:00
major: 0,
2023-03-30 16:43:04 -05:00
minor: 2,
patch: 0,
2022-03-02 08:38:22 -06:00
};
2023-03-30 16:43:04 -05:00
#[panic_handler]
fn panic(info: &core::panic::PanicInfo) -> ! {
arch::register_dump();
2023-03-30 16:43:04 -05:00
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 {}
}
2023-05-15 02:19:34 -05:00
#[cfg(test)]
fn test_runner(tests: &[&dyn Fn()]) {
println!("Running {} tests", tests.len());
for test in tests {
test();
}
}