Add sys:exe to get current executable
This commit is contained in:
parent
61871c6071
commit
a916e29b3c
16
kernel/scheme/sys/exe.rs
Normal file
16
kernel/scheme/sys/exe.rs
Normal file
|
@ -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)
|
||||||
|
}
|
|
@ -11,6 +11,7 @@ use syscall::scheme::Scheme;
|
||||||
|
|
||||||
mod context;
|
mod context;
|
||||||
mod cpu;
|
mod cpu;
|
||||||
|
mod exe;
|
||||||
mod memory;
|
mod memory;
|
||||||
mod scheme;
|
mod scheme;
|
||||||
//mod interrupt;
|
//mod interrupt;
|
||||||
|
@ -39,6 +40,7 @@ impl SysScheme {
|
||||||
|
|
||||||
files.insert(b"context", Box::new(move || context::resource()));
|
files.insert(b"context", Box::new(move || context::resource()));
|
||||||
files.insert(b"cpu", Box::new(move || cpu::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"memory", Box::new(move || memory::resource()));
|
||||||
files.insert(b"scheme", Box::new(move || scheme::resource()));
|
files.insert(b"scheme", Box::new(move || scheme::resource()));
|
||||||
//files.insert(b"interrupt", Box::new(move || interrupt::resource()));
|
//files.insert(b"interrupt", Box::new(move || interrupt::resource()));
|
||||||
|
|
Loading…
Reference in a new issue