forked from M-Labs/artiq
Rust: aggregate kernel CPU log messages and print line by line.
This commit is contained in:
parent
3362887d75
commit
2ae30b5a95
|
@ -55,7 +55,8 @@ enum KernelState {
|
||||||
struct Session<'a> {
|
struct Session<'a> {
|
||||||
congress: &'a mut Congress,
|
congress: &'a mut Congress,
|
||||||
kernel_state: KernelState,
|
kernel_state: KernelState,
|
||||||
watchdog_set: clock::WatchdogSet
|
watchdog_set: clock::WatchdogSet,
|
||||||
|
log_buffer: String
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Session<'a> {
|
impl<'a> Session<'a> {
|
||||||
|
@ -63,7 +64,8 @@ impl<'a> Session<'a> {
|
||||||
Session {
|
Session {
|
||||||
congress: congress,
|
congress: congress,
|
||||||
kernel_state: KernelState::Absent,
|
kernel_state: KernelState::Absent,
|
||||||
watchdog_set: clock::WatchdogSet::new()
|
watchdog_set: clock::WatchdogSet::new(),
|
||||||
|
log_buffer: String::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,8 +288,16 @@ fn process_kern_message(waiter: Waiter,
|
||||||
trace!("comm<-kern {:?}", request);
|
trace!("comm<-kern {:?}", request);
|
||||||
match request {
|
match request {
|
||||||
kern::Log(log) => {
|
kern::Log(log) => {
|
||||||
info!(target: "kernel", "{}", log);
|
session.log_buffer += log;
|
||||||
kern_acknowledge()
|
try!(kern_acknowledge());
|
||||||
|
|
||||||
|
if &log[log.len() - 1..] == "\n" {
|
||||||
|
for line in session.log_buffer.lines() {
|
||||||
|
info!(target: "kernel", "{}", line);
|
||||||
|
}
|
||||||
|
session.log_buffer.clear()
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
kern::NowInitRequest =>
|
kern::NowInitRequest =>
|
||||||
|
|
Loading…
Reference in New Issue