2022-04-11 17:23:11 -05:00
//! The ableOS kernel.
2023-05-28 04:51:51 -05:00
//! 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 ,
custom_test_frameworks
2023-03-30 16:43:04 -05:00
) ]
2023-06-16 05:20:37 -05:00
#![ deny(clippy::pedantic, missing_docs, warnings) ]
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 ;
2022-03-11 13:51:47 -06:00
2023-03-30 16:43:04 -05:00
mod allocator ;
mod arch ;
2023-07-08 23:22:44 -05:00
mod bootmodules ;
2023-07-10 22:54:05 -05:00
pub mod capabilities ;
2023-05-06 06:50:24 -05:00
pub mod device_tree ;
2023-04-07 16:44:33 -05:00
pub mod handle ;
2023-06-26 06:36:30 -05:00
pub mod host ;
2023-05-15 02:19:34 -05:00
pub mod ipc ;
2023-03-30 16:43:04 -05:00
mod kmain ;
mod logger ;
mod memory ;
2023-06-26 07:55:37 -05:00
mod scheduler ;
2023-05-06 06:50:24 -05:00
pub mod utils ;
2022-02-28 08:54:41 -06:00
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 ) -> ! {
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 ( ) ;
}
}