b9874d0941
Add redbear-usb-storage-check in-guest binary that validates USB mass storage read and write I/O: discovers /scheme/disk/ devices, writes a test pattern to sector 2048, reads it back, verifies match, restores original content. Updates test-usb-storage-qemu.sh with write-proof verification step. Includes all accumulated Red Bear OS work: kernel patches, relibc patches, driver infrastructure, DRM/GPU, KDE recipes, firmware, validation tooling, build system hardening, and documentation.
43 lines
1.3 KiB
Rust
43 lines
1.3 KiB
Rust
mod scheme;
|
|
|
|
use std::io::Write;
|
|
|
|
use scheme::AccessibilityScheme;
|
|
|
|
fn log_msg(level: &str, msg: &str) {
|
|
let _ = writeln!(std::io::stderr(), "[accessibility] {} {}", level, msg);
|
|
}
|
|
|
|
fn main() {
|
|
let mut scheme = AccessibilityScheme::new();
|
|
|
|
let socket = redox_scheme::Socket::nonblock("accessibility")
|
|
.expect("accessibility: failed to register scheme:accessibility");
|
|
log_msg("INFO", "registered scheme:accessibility");
|
|
|
|
loop {
|
|
let request = match socket.next_request(redox_scheme::SignalBehavior::Restart) {
|
|
Ok(Some(r)) => r,
|
|
Ok(None) => {
|
|
log_msg("INFO", "scheme unmounted, exiting");
|
|
break;
|
|
}
|
|
Err(e) => {
|
|
log_msg("ERROR", &format!("failed to read request: {}", e));
|
|
std::process::exit(1);
|
|
}
|
|
};
|
|
|
|
match request.handle_scheme_block_mut(&mut scheme) {
|
|
Ok(response) => {
|
|
if let Err(e) = socket.write_response(response, redox_scheme::SignalBehavior::Restart) {
|
|
log_msg("ERROR", &format!("failed to write response: {}", e));
|
|
}
|
|
}
|
|
Err(_request) => {
|
|
log_msg("ERROR", "unhandled scheme request");
|
|
}
|
|
}
|
|
}
|
|
}
|