@@ -11,6 +11,7 @@ static LOGGER: OnceCell<LockedLogger> = OnceCell::uninit();
|
||||
/// A logger instance protected by a spinlock.
|
||||
struct LockedLogger {
|
||||
framebuffer: Option<Spinlock<framebuffer::FrameBufferWriter>>,
|
||||
serial: Option<Spinlock<serial::SerialPort>>
|
||||
}
|
||||
|
||||
impl LockedLogger {
|
||||
@@ -20,9 +21,11 @@ impl LockedLogger {
|
||||
info: FrameBufferInfo,
|
||||
) -> Self {
|
||||
let framebuffer = Some(Spinlock::new(framebuffer::FrameBufferWriter::new(framebuffer, info)));
|
||||
let serial = Some(Spinlock::new(unsafe { serial::SerialPort::init() }));
|
||||
|
||||
LockedLogger {
|
||||
framebuffer,
|
||||
serial
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +37,10 @@ impl LockedLogger {
|
||||
if let Some(framebuffer) = &self.framebuffer {
|
||||
unsafe { framebuffer.force_unlock() };
|
||||
}
|
||||
|
||||
if let Some(serial) = &self.serial {
|
||||
unsafe { serial.force_unlock() };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +54,11 @@ impl log::Log for LockedLogger {
|
||||
let mut framebuffer = framebuffer.lock();
|
||||
writeln!(framebuffer, "{:5}: {}", record.level(), record.args()).unwrap();
|
||||
}
|
||||
|
||||
if let Some(serial) = &self.serial {
|
||||
let mut serial = serial.lock();
|
||||
writeln!(serial, "{:5}: {}", record.level(), record.args()).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
fn flush(&self) {}
|
||||
|
Reference in New Issue
Block a user