diff --git a/Cargo.lock b/Cargo.lock index 86d3255d5d..2fc04f2524 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "bitflags" -version = "2.4.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "ipcd" @@ -21,15 +21,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libredox" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "309ba69985d5170852ebbe8fbb33850d20794d0aed5b210dfea2db798df64e10" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags", "libc", @@ -48,9 +48,9 @@ dependencies = [ [[package]] name = "redox-scheme" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a4d4161697395d7cc9b182a14a753b2ba0243dcf622e278e644c6e7f74904c1" +checksum = "2148c23b7ed5bf1cc3919b4830e4bf2a674a5d3691c619317624ccd78d13a3ac" dependencies = [ "libredox", "redox_syscall", @@ -68,9 +68,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c178f952cc7eac391f3124bd9851d1ac0bdbc4c9de2d892ccd5f0d8b160e96" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags", ] diff --git a/Cargo.toml b/Cargo.toml index ae758ca5fe..89199359fa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,8 +4,8 @@ name = "ipcd" version = "0.1.0" [dependencies] -libredox = "0.1.2" +libredox = "0.1.3" redox-daemon = "0.1.2" redox_syscall = "0.5" -redox-scheme = "0.2.0" +redox-scheme = "0.2.1" redox_event = "0.4.0" diff --git a/src/chan.rs b/src/chan.rs index 13a79dcc91..087bbca90a 100644 --- a/src/chan.rs +++ b/src/chan.rs @@ -3,7 +3,7 @@ use std::{ collections::{HashMap, VecDeque}, }; use syscall::{flag::*, error::*, Error}; -use redox_scheme::SchemeBlockMut; +use redox_scheme::{SchemeBlockMut, V2}; #[derive(Debug, Default)] pub struct Client { @@ -100,7 +100,7 @@ impl ChanScheme { handles: HashMap::new(), listeners: HashMap::new(), next_id: 0, - socket: redox_scheme::Socket::nonblock("chan")?, + socket: redox_scheme::Socket::::nonblock("chan")?, }) } } @@ -228,7 +228,7 @@ impl SchemeBlockMut for ChanScheme { // | | |_| | | (_> < | |___| |__| |_| |___) | |___ // |___\___/ \___/\/ \____|_____\___/|____/|_____| - fn write(&mut self, id: usize, buf: &[u8]) -> Result> { + fn write(&mut self, id: usize, buf: &[u8], _offset: u64, flags: u32) -> Result> { let handle = self.handles.get_mut(&id).ok_or(Error::new(EBADF))?; let client = handle.require_client()?; @@ -248,7 +248,7 @@ impl SchemeBlockMut for ChanScheme { } } else if client.remote == Connection::Closed { Err(Error::new(EPIPE)) - } else if handle.flags & O_NONBLOCK == O_NONBLOCK { + } else if (flags as usize) & O_NONBLOCK == O_NONBLOCK { Err(Error::new(EAGAIN)) } else { Ok(None) @@ -276,7 +276,7 @@ impl SchemeBlockMut for ChanScheme { .ok_or(Error::new(EBADF)) .and(Ok(Some(id))) } - fn read(&mut self, id: usize, buf: &mut [u8]) -> Result> { + fn read(&mut self, id: usize, buf: &mut [u8], _offset: u64, flags: u32) -> Result> { let handle = self.handles.get_mut(&id).ok_or(Error::new(EBADF))?; let client = handle.require_client()?; @@ -288,7 +288,7 @@ impl SchemeBlockMut for ChanScheme { } else if client.remote == Connection::Closed { // Remote dropped, send EOF Ok(Some(0)) - } else if handle.flags & O_NONBLOCK == O_NONBLOCK { + } else if (flags as usize) & O_NONBLOCK == O_NONBLOCK { Err(Error::new(EAGAIN)) } else { Ok(None) diff --git a/src/main.rs b/src/main.rs index d3c767bb45..710a784439 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ use std::collections::VecDeque; use event::{EventQueue, EventFlags}; use redox_scheme::{CallRequest, RequestKind, Response, SignalBehavior}; -use syscall::{Error, Result, EAGAIN, EWOULDBLOCK, ENODEV, EINTR, KSMSG_CANCEL}; +use syscall::{Error, Result, EAGAIN, EWOULDBLOCK, ENODEV, EINTR}; mod chan; mod shm; @@ -84,19 +84,19 @@ fn inner(daemon: redox_daemon::Daemon) -> Result<()> { let req = slot.req.take().unwrap(); match req.handle_scheme_block_mut(chan) { - Ok(res) => { + Some(res) => { if let Err(err) = chan.socket.write_response(res, SignalBehavior::Restart) { error = Some(err); } false } - Err(req) if slot.canceling => { + None if slot.canceling => { if let Err(err) = chan.socket.write_response(Response::new(&req, Err(Error::new(EINTR))), SignalBehavior::Restart) { error = Some(err); } false } - Err(req) => { + None => { slot.req = Some(req); true } diff --git a/src/shm.rs b/src/shm.rs index 732e519f7e..ac2b87ff0b 100644 --- a/src/shm.rs +++ b/src/shm.rs @@ -4,7 +4,7 @@ use std::{ rc::Rc, }; use syscall::{error::*, Error, Map, Result, MapFlags, PAGE_SIZE, MAP_PRIVATE}; -use redox_scheme::SchemeMut; +use redox_scheme::{SchemeMut, V2}; #[derive(Default)] pub struct ShmHandle { @@ -23,7 +23,7 @@ impl ShmScheme { maps: HashMap::new(), handles: HashMap::new(), next_id: 0, - socket: redox_scheme::Socket::nonblock("shm")?, + socket: redox_scheme::Socket::::nonblock("shm")?, }) } }