Improvements for graphical debug and system76 EC debug

This commit is contained in:
Jeremy Soller
2022-03-01 16:25:15 -07:00
parent 2b5aa1f375
commit fe468aa1ab
4 changed files with 10 additions and 19 deletions

View File

@@ -1,7 +1,7 @@
use super::Display;
pub struct DebugDisplay {
display: Display,
pub (crate) display: Display,
x: usize,
y: usize,
w: usize,
@@ -21,14 +21,6 @@ impl DebugDisplay {
}
}
pub fn as_display(&self) -> &Display {
&self.display
}
pub fn into_display(self) -> Display {
self.display
}
pub fn write_char(&mut self, c: char) {
if self.x >= self.w || c == '\n' {
self.x = 0;

View File

@@ -48,10 +48,9 @@ impl Display {
let offset = cmp::min(self.height, lines) * self.width;
let size = self.data.len() - offset;
unsafe {
let src = self.data.as_ptr();
let dst = self.data.as_mut_ptr().add(offset);
ptr::copy(src, dst, size);
ptr::write_bytes(dst, 0, offset);
let ptr = self.data.as_mut_ptr();
ptr::copy(ptr.add(offset), ptr, size);
ptr::write_bytes(ptr.add(size), 0, offset);
}
}
}

View File

@@ -183,7 +183,7 @@ unsafe fn inner<A: Arch>(
use super::paging::entry::EntryFlags;
let (base, size) = if let Some(debug_display) = &*DEBUG_DISPLAY.lock() {
let data = &debug_display.as_display().data;
let data = &debug_display.display.data;
(
data.as_ptr() as usize - crate::PHYS_OFFSET,
data.len() * 4

View File

@@ -91,9 +91,12 @@ pub unsafe extern fn kstart(args_ptr: *const KernelArgs) -> ! {
let env = slice::from_raw_parts((env_base + crate::PHYS_OFFSET) as *const u8, env_size);
// Set up graphical debug
#[cfg(feature="graphical_debug")]
#[cfg(feature = "graphical_debug")]
graphical_debug::init(env);
#[cfg(feature = "system76_ec_debug")]
device::system76_ec::init();
// Initialize logger
log::init_logger(|r| {
use core::fmt::Write;
@@ -163,9 +166,6 @@ pub unsafe extern fn kstart(args_ptr: *const KernelArgs) -> ! {
// Activate memory logging
log::init();
#[cfg(feature = "system76_ec_debug")]
device::system76_ec::init();
// Initialize devices
device::init(&mut active_table);
@@ -184,7 +184,7 @@ pub unsafe extern fn kstart(args_ptr: *const KernelArgs) -> ! {
device::init_noncore();
// Stop graphical debug
#[cfg(feature="graphical_debug")]
#[cfg(feature = "graphical_debug")]
graphical_debug::fini();
BSP_READY.store(true, Ordering::SeqCst);