Merge branch 'late_disable_graphic_debug' into 'master'

graphics/vesad: Disable kernel graphical debug as late as possible

See merge request redox-os/drivers!262
This commit is contained in:
Jeremy Soller
2025-04-06 17:54:07 +00:00
+16 -2
View File
@@ -3,9 +3,10 @@ extern crate syscall;
use driver_graphics::GraphicsScheme;
use event::{user_data, EventQueue};
use inputd::DisplayHandle;
use inputd::{DisplayHandle, VtEventKind};
use std::env;
use std::fs::File;
use std::io::Write;
use std::os::fd::AsRawFd;
use crate::framebuffer::FrameBuffer;
@@ -104,7 +105,10 @@ fn inner(daemon: redox_daemon::Daemon, framebuffers: Vec<FrameBuffer>) -> ! {
)
.unwrap();
let _ = File::open("/scheme/debug/disable-graphical-debug");
let mut disable_graphical_debug = Some(
File::open("/scheme/debug/disable-graphical-debug")
.expect("vesad: Failed to open /scheme/debug/disable-graphical-debug"),
);
libredox::call::setrens(0, 0).expect("vesad: failed to enter null namespace");
@@ -121,6 +125,16 @@ fn inner(daemon: redox_daemon::Daemon, framebuffers: Vec<FrameBuffer>) -> ! {
.read_vt_event()
.expect("vesad: failed to read display handle")
{
if let VtEventKind::Activate = vt_event.kind {
// Disable the kernel graphical debug writing once switching vt's for the
// first time. This way the kernel graphical debug remains enabled if the
// userspace logging infrastructure doesn't start up because for example a
// kernel panic happened prior to it starting up or logd crashed.
if let Some(mut disable_graphical_debug) = disable_graphical_debug.take() {
let _ = disable_graphical_debug.write(&[1]);
}
}
scheme.handle_vt_event(vt_event);
}
}