netstack: Merge the redox_netstack lib into smolnetd

This commit is contained in:
bjorn3
2025-06-28 16:18:34 +02:00
parent 20ee161085
commit 2f51590d9f
9 changed files with 25 additions and 10 deletions
+20
View File
@@ -1,6 +1,7 @@
use redox_scheme::{RequestKind, SignalBehavior, Socket};
use std::env;
use std::fs::OpenOptions;
use std::io::{Read, Write};
use std::process;
use crate::scheme::LogScheme;
@@ -19,6 +20,11 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! {
let socket = Socket::create("log").expect("logd: failed to create log scheme");
std::process::Command::new(std::env::current_exe().unwrap())
.arg("--internal-copy-kernel-log")
.spawn()
.unwrap();
eprintln!("logd: ready for logging on log:");
daemon.ready().expect("logd: failed to notify parent");
@@ -47,5 +53,19 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! {
}
fn main() {
if std::env::args().nth(1).as_deref() == Some("--internal-copy-kernel-log") {
let mut debug_file = std::fs::File::open("/scheme/sys/log").unwrap();
let mut log_file = std::fs::OpenOptions::new()
.write(true)
.open("/scheme/log/kernel")
.unwrap();
let mut buf = [0; 4096];
loop {
let n = debug_file.read(&mut buf).unwrap();
assert!(n != 0); // FIXME currently fails as /scheme/log/kernel presents a snapshot of the log queue
log_file.write_all(&buf[..n]).unwrap();
}
}
redox_daemon::Daemon::new(daemon).expect("logd: failed to daemonize");
}