Hack to allow rustc to wait on non-child process.
Add sys:syscall for seeing active system calls
This commit is contained in:
@@ -15,7 +15,6 @@ pub fn resource() -> Result<Vec<u8>> {
|
||||
let contexts = context::contexts();
|
||||
for (id, context_lock) in contexts.iter() {
|
||||
let context = context_lock.read();
|
||||
|
||||
rows.push((*id, context.name.lock().clone(), context.files.lock().clone()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,10 +15,8 @@ mod exe;
|
||||
mod iostat;
|
||||
mod scheme;
|
||||
mod scheme_num;
|
||||
mod syscall;
|
||||
mod uname;
|
||||
//mod interrupt;
|
||||
//mod log;
|
||||
//mod test;
|
||||
|
||||
struct Handle {
|
||||
path: &'static [u8],
|
||||
@@ -46,10 +44,8 @@ impl SysScheme {
|
||||
files.insert(b"iostat", Box::new(move || iostat::resource()));
|
||||
files.insert(b"scheme", Box::new(move || scheme::resource()));
|
||||
files.insert(b"scheme_num", Box::new(move || scheme_num::resource()));
|
||||
files.insert(b"syscall", Box::new(move || syscall::resource()));
|
||||
files.insert(b"uname", Box::new(move || uname::resource()));
|
||||
//files.insert(b"interrupt", Box::new(move || interrupt::resource()));
|
||||
//files.insert(b"log", Box::new(move || log::resource()));
|
||||
//files.insert(b"test", Box::new(move || test::resource()));
|
||||
|
||||
SysScheme {
|
||||
next_id: AtomicUsize::new(0),
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
use collections::{String, Vec};
|
||||
use core::fmt::Write;
|
||||
use core::str;
|
||||
|
||||
use context;
|
||||
use syscall;
|
||||
use syscall::error::Result;
|
||||
|
||||
pub fn resource() -> Result<Vec<u8>> {
|
||||
let mut string = String::new();
|
||||
|
||||
{
|
||||
let mut rows = Vec::new();
|
||||
{
|
||||
let contexts = context::contexts();
|
||||
for (id, context_lock) in contexts.iter() {
|
||||
let context = context_lock.read();
|
||||
rows.push((*id, context.name.lock().clone(), context.syscall.clone()));
|
||||
}
|
||||
}
|
||||
|
||||
for row in rows.iter() {
|
||||
let id: usize = row.0.into();
|
||||
let name = str::from_utf8(&row.1).unwrap_or(".");
|
||||
|
||||
let _ = writeln!(string, "{}: {}", id, name);
|
||||
|
||||
if let Some((a, b, c, d, e, f)) = row.2 {
|
||||
match syscall::debug::format_call(a, b, c, d, e, f) {
|
||||
Ok(data) => {
|
||||
let _ = writeln!(string, " {}", data);
|
||||
},
|
||||
Err(err) => {
|
||||
let _ = writeln!(string, " error: {}", err);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(string.into_bytes())
|
||||
}
|
||||
Reference in New Issue
Block a user