From a916e29b3cc94f81ceec97e4a0e3731be2a3d7a0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 14 Nov 2016 20:54:33 -0700 Subject: [PATCH] Add sys:exe to get current executable --- kernel/scheme/sys/exe.rs | 16 ++++++++++++++++ kernel/scheme/sys/mod.rs | 2 ++ 2 files changed, 18 insertions(+) create mode 100644 kernel/scheme/sys/exe.rs diff --git a/kernel/scheme/sys/exe.rs b/kernel/scheme/sys/exe.rs new file mode 100644 index 0000000..84eb266 --- /dev/null +++ b/kernel/scheme/sys/exe.rs @@ -0,0 +1,16 @@ +use collections::Vec; + +use context; +use syscall::error::{Error, ESRCH, Result}; + +pub fn resource() -> Result> { + 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/kernel/scheme/sys/mod.rs b/kernel/scheme/sys/mod.rs index b0dfac4..3f47ac8 100644 --- a/kernel/scheme/sys/mod.rs +++ b/kernel/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()));