diff --git a/scheme/sys/cpu.rs b/scheme/sys/cpu.rs new file mode 100644 index 0000000..70c1694 --- /dev/null +++ b/scheme/sys/cpu.rs @@ -0,0 +1,13 @@ +use collections::Vec; + +use arch::device::cpu::cpu_info; +use syscall::error::{Error, EIO, Result}; + +pub fn resource() -> Result> { + let mut string = format!("CPUs: {}\n", ::cpu_count()); + + match cpu_info(&mut string) { + Ok(()) => Ok(string.into_bytes()), + Err(_) => Err(Error::new(EIO)) + } +} diff --git a/scheme/sys/mod.rs b/scheme/sys/mod.rs index f5ed0bf..b0dfac4 100644 --- a/scheme/sys/mod.rs +++ b/scheme/sys/mod.rs @@ -10,6 +10,7 @@ use syscall::flag::{MODE_DIR, MODE_FILE, SEEK_CUR, SEEK_END, SEEK_SET}; use syscall::scheme::Scheme; mod context; +mod cpu; mod memory; mod scheme; //mod interrupt; @@ -37,6 +38,7 @@ impl SysScheme { let mut files: BTreeMap<&'static [u8], Box> = BTreeMap::new(); files.insert(b"context", Box::new(move || context::resource())); + files.insert(b"cpu", Box::new(move || cpu::resource())); files.insert(b"memory", Box::new(move || memory::resource())); files.insert(b"scheme", Box::new(move || scheme::resource())); //files.insert(b"interrupt", Box::new(move || interrupt::resource()));