Use redox-daemon

This commit is contained in:
4lDO2
2022-07-18 16:21:21 +02:00
parent ec22a4f393
commit 54d64d6ecb
4 changed files with 26 additions and 8 deletions
Generated
+11
View File
@@ -270,6 +270,16 @@ version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
[[package]]
name = "redox-daemon"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21e31c834277709c7ff3eb74959fe62be4b45b1189ba9d41fd3744cd3a9c554f"
dependencies = [
"libc",
"redox_syscall",
]
[[package]]
name = "redox_event"
version = "0.1.0"
@@ -286,6 +296,7 @@ dependencies = [
"dns-parser",
"log 0.3.9",
"netutils",
"redox-daemon",
"redox_event",
"redox_syscall",
"smoltcp",
+1
View File
@@ -17,6 +17,7 @@ path = "src/lib/lib.rs"
[dependencies]
netutils = { git = "https://gitlab.redox-os.org/redox-os/netutils.git", branch = "redox-unix" }
redox_event = { git = "https://gitlab.redox-os.org/redox-os/event.git" }
redox-daemon = "0.1"
redox_syscall = "0.2.12"
byteorder = { version = "1.0", default-features = false }
dns-parser = "0.7.1"
+7 -4
View File
@@ -21,7 +21,7 @@ use syscall::{CloneFlags, EventFlags};
mod scheme;
fn run() -> Result<()> {
fn run(daemon: redox_daemon::Daemon) -> Result<()> {
use syscall::flag::*;
let dns_fd = syscall::open(":dns", O_RDWR | O_CREAT | O_NONBLOCK)
@@ -53,6 +53,8 @@ fn run() -> Result<()> {
syscall::setrens(0, 0).expect("dnsd: failed to enter null namespace");
daemon.ready().expect("dnsd: failed to notify parent");
let dnsd_ = Rc::clone(&dnsd);
event_queue
@@ -82,11 +84,12 @@ fn run() -> Result<()> {
}
fn main() {
if unsafe { syscall::clone(CloneFlags::empty()).unwrap() } == 0 {
redox_daemon::Daemon::new(move |daemon| {
logger::init_logger();
if let Err(err) = run() {
if let Err(err) = run(daemon) {
error!("dnsd: {}", err);
process::exit(1);
}
}
process::exit(0);
}).expect("dnsd: failed to daemonize");
}
+7 -4
View File
@@ -27,7 +27,7 @@ mod device;
mod port_set;
mod scheme;
fn run() -> Result<()> {
fn run(daemon: redox_daemon::Daemon) -> Result<()> {
use syscall::flag::*;
trace!("opening network:");
@@ -91,6 +91,8 @@ fn run() -> Result<()> {
syscall::setrens(0, 0).expect("smolnetd: failed to enter null namespace");
daemon.ready().expect("smolnetd: failed to notify parent");
let smolnetd_ = Rc::clone(&smolnetd);
event_queue
@@ -150,12 +152,13 @@ fn run() -> Result<()> {
}
fn main() {
if unsafe { syscall::clone(CloneFlags::empty()).unwrap() } == 0 {
redox_daemon::Daemon::new(move |daemon| {
logger::init_logger();
if let Err(err) = run() {
if let Err(err) = run(daemon) {
error!("smoltcpd: {}", err);
process::exit(1);
}
}
process::exit(0);
}).expect("smoltcp: failed to daemonize");
}