diff --git a/scheme/sys/exe.rs b/scheme/sys/exe.rs new file mode 100644 index 0000000000000000000000000000000000000000..84eb266f3c9551e615dddf8e295f7005ff65e9ce --- /dev/null +++ b/scheme/sys/exe.rs @@ -0,0 +1,16 @@ +use collections::Vec; + +use context; +use syscall::error::{Error, ESRCH, Result}; + +pub fn resource() -> Result<Vec<u8>> { + let mut name = { + let contexts = context::contexts(); + let context_lock = contexts.current().ok_or(Error::new(ESRCH))?; + let context = context_lock.read(); + let name = context.name.lock(); + name.clone() + }; + name.push(b'\n'); + Ok(name) +} diff --git a/scheme/sys/mod.rs b/scheme/sys/mod.rs index b0dfac4d888550223aa10f57561419c0666f9a99..3f47ac8733265bc93cc5db9ea0d84ac509611e3e 100644 --- a/scheme/sys/mod.rs +++ b/scheme/sys/mod.rs @@ -11,6 +11,7 @@ use syscall::scheme::Scheme; mod context; mod cpu; +mod exe; mod memory; mod scheme; //mod interrupt; @@ -39,6 +40,7 @@ impl SysScheme { files.insert(b"context", Box::new(move || context::resource())); files.insert(b"cpu", Box::new(move || cpu::resource())); + files.insert(b"exe", Box::new(move || exe::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()));