Add in-memory logging, retrievable from sys:log

This commit is contained in:
Jeremy Soller
2019-03-17 09:31:34 -06:00
parent f7c9712977
commit d2095d8d0f
6 changed files with 70 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
use alloc::vec::Vec;
use log::LOG;
use syscall::error::Result;
pub fn resource() -> Result<Vec<u8>> {
let mut vec = Vec::new();
if let Some(ref log) = *LOG.lock() {
let slices = log.read();
vec.reserve_exact(slices.0.len() + slices.1.len());
vec.extend_from_slice(slices.0);
vec.extend_from_slice(slices.1);
}
Ok(vec)
}
+2
View File
@@ -14,6 +14,7 @@ mod context;
mod cpu;
mod exe;
mod iostat;
mod log;
mod scheme;
mod scheme_num;
mod syscall;
@@ -43,6 +44,7 @@ impl SysScheme {
files.insert(b"cpu", Box::new(move || cpu::resource()));
files.insert(b"exe", Box::new(move || exe::resource()));
files.insert(b"iostat", Box::new(move || iostat::resource()));
files.insert(b"log", Box::new(move || log::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()));