diff --git a/audiod/src/main.rs b/audiod/src/main.rs index 66c63692e4..13835c8ffe 100644 --- a/audiod/src/main.rs +++ b/audiod/src/main.rs @@ -2,12 +2,12 @@ extern crate syscall; use std::mem::MaybeUninit; use std::ptr::addr_of_mut; -use std::{mem, process, slice, thread}; use std::sync::{Arc, Mutex}; +use std::{mem, process, slice, thread}; use libredox::flag; -use libredox::{Fd, error::Result}; -use redox_scheme::{Socket, SignalBehavior}; +use libredox::{error::Result, Fd}; +use redox_scheme::{SignalBehavior, Socket}; use redox_daemon::Daemon; @@ -17,17 +17,14 @@ mod scheme; extern "C" fn sigusr_handler(_sig: usize) {} -fn thread(scheme: Arc>, pid: usize, mut hw_file: Fd) -> Result<()> { +fn thread(scheme: Arc>, pid: usize, hw_file: Fd) -> Result<()> { // Enter null namespace libredox::call::setrens(0, 0)?; loop { let buffer = scheme.lock().unwrap().buffer(); let buffer_u8 = unsafe { - slice::from_raw_parts( - buffer.as_ptr() as *const u8, - mem::size_of_val(&buffer), - ) + slice::from_raw_parts(buffer.as_ptr() as *const u8, mem::size_of_val(&buffer)) }; // Wake up the scheme thread @@ -70,19 +67,21 @@ fn daemon(daemon: Daemon) -> Result<()> { let mut pending = Vec::new(); - loop { + loop { match socket.next_request(SignalBehavior::Interrupt) { - Ok(Some(request)) => match request.handle_scheme_block_mut(&mut *scheme.lock().unwrap()) { - Ok(response) => { - socket.write_responses(&[response], SignalBehavior::Restart)?; + Ok(Some(request)) => { + match request.handle_scheme_block_mut(&mut *scheme.lock().unwrap()) { + Ok(response) => { + socket.write_responses(&[response], SignalBehavior::Restart)?; + } + Err(request) => pending.push(request), } - Err(request) => pending.push(request), - }, - Ok(None) => {}, - Err(err) => match err.errno { - libredox::errno::EINTR => {}, - _ => return Err(err), } + Ok(None) => {} + Err(err) => match err.errno { + libredox::errno::EINTR => {} + _ => return Err(err), + }, } let mut i = 0; @@ -93,27 +92,23 @@ fn daemon(daemon: Daemon) -> Result<()> { pending.remove(i); socket.write_responses(&[response], SignalBehavior::Restart)?; } - Err(_) => { - i += 1 - } + Err(_) => i += 1, } } } } fn main() { - if let Err(err) = Daemon::new(|x| { - match daemon(x) { - Ok(()) => { - process::exit(0); - }, - Err(err) => { - eprintln!("audiod: {}", err); - process::exit(1); - } + let Err(err) = Daemon::new(|x| match daemon(x) { + Ok(()) => { + process::exit(0); } - }) { - eprintln!("audiod: {}", err); - process::exit(1); - } + Err(err) => { + eprintln!("audiod: {}", err); + process::exit(1); + } + }); + + eprintln!("audiod: {}", err); + process::exit(1); } diff --git a/audiod/src/scheme.rs b/audiod/src/scheme.rs index 68e3dde4ac..fe525ae7fc 100644 --- a/audiod/src/scheme.rs +++ b/audiod/src/scheme.rs @@ -17,7 +17,6 @@ enum Handle { }, //TODO: move volume to audiohw:? Volume { - flags: usize, offset: usize, } } @@ -75,7 +74,6 @@ impl SchemeBlockMut for AudioScheme { buffer: VecDeque::new() }, "volume" => Handle::Volume { - flags, offset: 0, }, _ => return Err(Error::new(ENOENT)), @@ -95,7 +93,7 @@ impl SchemeBlockMut for AudioScheme { //TODO: audio input? Err(Error::new(EBADF)) }, - Handle::Volume { flags: _, ref mut offset } => { + Handle::Volume { ref mut offset } => { //TODO: should we allocate every time? let string = format!("{}", self.volume); let bytes = string.as_bytes(); @@ -136,7 +134,7 @@ impl SchemeBlockMut for AudioScheme { Ok(Some(i)) } }, - Handle::Volume { flags: _, ref mut offset } => { + Handle::Volume { ref mut offset } => { //TODO: support other offsets? if *offset == 0 { let value = str::from_utf8(buf) diff --git a/netstack/src/dnsd/scheme.rs b/netstack/src/dnsd/scheme.rs index 08a56be7e0..12c2a93685 100644 --- a/netstack/src/dnsd/scheme.rs +++ b/netstack/src/dnsd/scheme.rs @@ -354,7 +354,7 @@ impl<'q> Dnsd<'q> { *file = DnsFile::Timeout; } } - self.wakeup_fds(&fds_to_wakeup); + self.wakeup_fds(&fds_to_wakeup)?; } time.tv_sec += Dnsd::TIME_EVENT_TIMEOUT_S; @@ -438,10 +438,10 @@ impl<'q> Dnsd<'q> { *file = DnsFile::Failed; } } - self.wakeup_fds(&fds_to_fail); + self.wakeup_fds(&fds_to_fail)?; } Some(DnsParsingResult::WakeUpFiles(fds_to_wakeup)) => { - self.wakeup_fds(&fds_to_wakeup); + self.wakeup_fds(&fds_to_wakeup)?; } None => {} } @@ -453,7 +453,7 @@ impl<'q> Dnsd<'q> { Ok(()) } - fn wakeup_fds(&mut self, fds_to_wakeup: &BTreeSet) { + fn wakeup_fds(&mut self, fds_to_wakeup: &BTreeSet) -> Result<()> { for fd in fds_to_wakeup { let Some(affected) = self.blocked_fds.remove(&fd) else { continue; @@ -474,9 +474,11 @@ impl<'q> Dnsd<'q> { Response::new(res, op) }; self.scheme_socket - .write_response(resp, SignalBehavior::Restart); + .write_response(resp, SignalBehavior::Restart) + .context("scheme write fail")?; } } + Ok(()) } fn validate_domain(domain: &str) -> bool { diff --git a/ramfs/src/filesystem.rs b/ramfs/src/filesystem.rs index 73c9fb4989..bec19453cf 100644 --- a/ramfs/src/filesystem.rs +++ b/ramfs/src/filesystem.rs @@ -23,7 +23,6 @@ pub struct File { pub atime: TimeSpec, pub ctime: TimeSpec, pub mtime: TimeSpec, - pub crtime: TimeSpec, pub data: FileData, } @@ -65,7 +64,6 @@ impl Filesystem { let cur_time = current_time(); File { atime: cur_time, - crtime: cur_time, ctime: cur_time, mtime: cur_time, diff --git a/ramfs/src/scheme.rs b/ramfs/src/scheme.rs index 0e3c9e17e7..78cac0a766 100644 --- a/ramfs/src/scheme.rs +++ b/ramfs/src/scheme.rs @@ -182,7 +182,6 @@ impl SchemeSync for Scheme { File { atime: current_time, - crtime: current_time, ctime: current_time, mtime: current_time, gid: ctx.gid, @@ -203,7 +202,6 @@ impl SchemeSync for Scheme { File { atime: current_time, - crtime: current_time, ctime: current_time, mtime: current_time, gid: ctx.gid, diff --git a/randd/src/main.rs b/randd/src/main.rs index 35399b8eb6..1e94fa6f67 100644 --- a/randd/src/main.rs +++ b/randd/src/main.rs @@ -17,8 +17,8 @@ use redox_scheme::{RequestKind, SchemeMut, SignalBehavior, Socket, V2}; use syscall::data::Stat; use syscall::flag::EventFlags; use syscall::{ - Error, Result, EBADF, EBADFD, EEXIST, EINVAL, ENOENT, EPERM, MODE_CHR, O_CLOEXEC, O_CREAT, - O_EXCL, O_RDONLY, O_RDWR, O_STAT, O_WRONLY, + Error, Result, EBADF, EBADFD, EEXIST, ENOENT, EPERM, MODE_CHR, O_CREAT, O_EXCL, O_RDONLY, + O_RDWR, O_WRONLY, }; // Create an RNG Seed to create initial seed from the rdrand intel instruction @@ -166,6 +166,8 @@ impl RandScheme { #[test] fn test_scheme_perms() { + use syscall::{O_CLOEXEC, O_STAT}; + let mut scheme = RandScheme::new(File::open(".").unwrap()); scheme.prng_stat.st_mode = MODE_CHR | 0o200; scheme.prng_stat.st_uid = 1;