diff --git a/console.rs b/console.rs new file mode 100644 index 0000000..d2dfeca --- /dev/null +++ b/console.rs @@ -0,0 +1,15 @@ +use ransid::Console; +use spin::{Once, Mutex, MutexGuard}; + +/// Console +static CONSOLE: Once> = Once::new(); + +/// Initialize console, called if needed +fn init_console() -> Mutex { + Mutex::new(Console::new(0, 0)) +} + +/// Get the global console +pub fn console() -> MutexGuard<'static, Console> { + CONSOLE.call_once(init_console).lock() +} diff --git a/lib.rs b/lib.rs index f4c85f0..3b1d6eb 100644 --- a/lib.rs +++ b/lib.rs @@ -80,6 +80,11 @@ use arch::interrupt; #[macro_use] extern crate arch_test as arch; +/// Architecture specific items (ARM) +#[cfg(all(not(test), target_arch = "arm"))] +#[macro_use] +extern crate arch_arm as arch; + /// Architecture specific items (x86_64) #[cfg(all(not(test), target_arch = "x86_64"))] #[macro_use] @@ -92,12 +97,17 @@ extern crate collections; #[macro_use] extern crate bitflags; extern crate goblin; +extern crate ransid; extern crate spin; +/// Console +pub mod console; + /// Context management pub mod context; /// ELF file parsing +#[cfg(all(not(test), target_arch = "x86_64"))] pub mod elf; /// Schemes, filesystem handlers diff --git a/scheme/debug.rs b/scheme/debug.rs index 43882ae..0555b09 100644 --- a/scheme/debug.rs +++ b/scheme/debug.rs @@ -1,4 +1,5 @@ use core::str; + use syscall::Result; use super::Scheme;