From 8eabb75524125468375a0bd4af1f020ff457f797 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 26 Dec 2024 15:45:10 +0100 Subject: [PATCH] Update redox-scheme to 0.3.0 --- Cargo.lock | 4 ++-- acpid/src/main.rs | 6 +++--- acpid/src/scheme.rs | 4 ++-- graphics/fbbootlogd/src/main.rs | 15 ++++++++++++--- graphics/fbbootlogd/src/scheme.rs | 4 ++-- graphics/fbcond/src/main.rs | 19 +++++++++++++++---- graphics/fbcond/src/scheme.rs | 4 ++-- graphics/vesad/src/main.rs | 20 +++++++++++++++----- graphics/vesad/src/scheme.rs | 4 ++-- graphics/virtio-gpud/src/main.rs | 21 ++++++++++++++++----- graphics/virtio-gpud/src/scheme.rs | 10 +++++----- inputd/src/main.rs | 16 +++++++++++----- net/driver-network/src/lib.rs | 18 ++++++++++++------ net/rtl8139d/src/main.rs | 5 ++--- storage/ahcid/src/main.rs | 11 +++++------ storage/ahcid/src/scheme.rs | 4 ++-- storage/bcm2835-sdhcid/src/main.rs | 8 ++++---- storage/bcm2835-sdhcid/src/scheme.rs | 4 ++-- storage/ided/src/main.rs | 13 ++++++------- storage/ided/src/scheme.rs | 4 ++-- storage/lived/src/main.rs | 8 ++++---- storage/nvmed/src/main.rs | 6 +++--- storage/nvmed/src/scheme.rs | 4 ++-- storage/usbscsid/src/main.rs | 6 +++--- storage/usbscsid/src/scheme.rs | 4 ++-- storage/virtio-blkd/src/main.rs | 8 +++----- storage/virtio-blkd/src/scheme.rs | 4 ++-- 27 files changed, 141 insertions(+), 93 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 98e288a0d1..0e99da0d5d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1157,8 +1157,8 @@ dependencies = [ [[package]] name = "redox-scheme" -version = "0.2.4" -source = "git+https://gitlab.redox-os.org/redox-os/redox-scheme.git#efe7addc3d6c54149694f875ed51467f8c4aa8b9" +version = "0.3.0" +source = "git+https://gitlab.redox-os.org/redox-os/redox-scheme.git#d2bfa80a1072facb2662d0bc73656247f0b254b4" dependencies = [ "libredox", "redox_syscall", diff --git a/acpid/src/main.rs b/acpid/src/main.rs index 9ddd3ca01d..c9276d6662 100644 --- a/acpid/src/main.rs +++ b/acpid/src/main.rs @@ -7,7 +7,7 @@ use std::os::unix::io::AsRawFd; use std::sync::Arc; use event::{EventFlags, RawEventQueue}; -use redox_scheme::{RequestKind, SignalBehavior, Socket, V2}; +use redox_scheme::{RequestKind, SignalBehavior, Socket}; use syscall::{EAGAIN, EWOULDBLOCK}; mod acpi; @@ -66,7 +66,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { .expect("acpid: failed to open `/scheme/kernel.acpi/kstop`"); let mut event_queue = RawEventQueue::new().expect("acpid: failed to create event queue"); - let socket = Socket::::nonblock("acpi").expect("acpid: failed to create disk scheme"); + let socket = Socket::nonblock("acpi").expect("acpid: failed to create disk scheme"); daemon.ready().expect("acpid: failed to notify parent"); @@ -114,7 +114,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { } }; - let response = sqe.handle_scheme_mut(&mut scheme); + let response = sqe.handle_scheme(&mut scheme); socket .write_response(response, SignalBehavior::Restart) .expect("acpid: failed to write response"); diff --git a/acpid/src/scheme.rs b/acpid/src/scheme.rs index fec64bacee..19ab3d7454 100644 --- a/acpid/src/scheme.rs +++ b/acpid/src/scheme.rs @@ -1,6 +1,6 @@ use core::str; use parking_lot::RwLockReadGuard; -use redox_scheme::{CallerCtx, OpenResult, SchemeMut}; +use redox_scheme::{CallerCtx, OpenResult, Scheme}; use std::collections::BTreeMap; use std::convert::{TryFrom, TryInto}; use syscall::dirent::{DirEntry, DirentBuf, DirentKind}; @@ -141,7 +141,7 @@ fn parse_table(table: &[u8]) -> Option { }) } -impl SchemeMut for AcpiScheme<'_> { +impl Scheme for AcpiScheme<'_> { fn xopen(&mut self, path: &str, flags: usize, _ctx: &CallerCtx) -> Result { let path = path.trim_start_matches('/'); diff --git a/graphics/fbbootlogd/src/main.rs b/graphics/fbbootlogd/src/main.rs index a45601820d..2168f2ed63 100644 --- a/graphics/fbbootlogd/src/main.rs +++ b/graphics/fbbootlogd/src/main.rs @@ -11,7 +11,8 @@ #![feature(io_error_more)] -use redox_scheme::{RequestKind, SignalBehavior, Socket, V2}; +use libredox::errno::EOPNOTSUPP; +use redox_scheme::{RequestKind, Response, SignalBehavior, Socket}; use crate::scheme::FbbootlogScheme; @@ -23,7 +24,7 @@ fn main() { redox_daemon::Daemon::new(|daemon| inner(daemon)).expect("failed to create daemon"); } fn inner(daemon: redox_daemon::Daemon) -> ! { - let socket: Socket = + let socket = Socket::create("fbbootlog").expect("fbbootlogd: failed to create fbbootlog scheme"); let mut scheme = FbbootlogScheme::new(); @@ -54,11 +55,19 @@ fn inner(daemon: redox_daemon::Daemon) -> ! { RequestKind::Call(call_request) => { socket .write_response( - call_request.handle_scheme_mut(&mut scheme), + call_request.handle_scheme(&mut scheme), SignalBehavior::Restart, ) .expect("fbbootlogd: failed to write display scheme"); } + RequestKind::SendFd(sendfd_request) => { + socket + .write_response( + Response::for_sendfd(&sendfd_request, Err(syscall::Error::new(EOPNOTSUPP))), + SignalBehavior::Restart, + ) + .expect("fbbootlogd: failed to write scheme"); + } RequestKind::Cancellation(_cancellation_request) => {} RequestKind::MsyncMsg | RequestKind::MunmapMsg | RequestKind::MmapMsg => { unreachable!() diff --git a/graphics/fbbootlogd/src/scheme.rs b/graphics/fbbootlogd/src/scheme.rs index fa258d6c53..ca848b90da 100644 --- a/graphics/fbbootlogd/src/scheme.rs +++ b/graphics/fbbootlogd/src/scheme.rs @@ -1,6 +1,6 @@ use std::collections::BTreeMap; -use redox_scheme::SchemeMut; +use redox_scheme::Scheme; use syscall::{Error, EventFlags, Result, EBADF, EINVAL, ENOENT}; use crate::display::Display; @@ -31,7 +31,7 @@ impl FbbootlogScheme { } } -impl SchemeMut for FbbootlogScheme { +impl Scheme for FbbootlogScheme { fn open(&mut self, path_str: &str, _flags: usize, _uid: u32, _gid: u32) -> Result { if !path_str.is_empty() { return Err(Error::new(ENOENT)); diff --git a/graphics/fbcond/src/main.rs b/graphics/fbcond/src/main.rs index 7d270eb0d0..bdaac9f33a 100644 --- a/graphics/fbcond/src/main.rs +++ b/graphics/fbcond/src/main.rs @@ -1,7 +1,7 @@ #![feature(io_error_more)] use event::EventQueue; -use libredox::errno::{EAGAIN, EINTR, ESTALE}; +use libredox::errno::{EAGAIN, EINTR, EOPNOTSUPP, ESTALE}; use orbclient::Event; use redox_scheme::{CallRequest, RequestKind, Response, SignalBehavior, Socket}; use std::os::fd::{AsRawFd, BorrowedFd}; @@ -99,14 +99,25 @@ fn handle_event( match request.kind() { RequestKind::Call(call_request) => { - if let Some(resp) = call_request.handle_scheme_block_mut(scheme) { + if let Some(resp) = call_request.handle_scheme_block(scheme) { socket .write_response(resp, SignalBehavior::Restart) - .expect("vesad: failed to write display scheme"); + .expect("fbcond: failed to write display scheme"); } else { blocked.push(call_request); } } + RequestKind::SendFd(sendfd_request) => { + socket + .write_response( + Response::for_sendfd( + &sendfd_request, + Err(syscall::Error::new(EOPNOTSUPP)), + ), + SignalBehavior::Restart, + ) + .expect("fbcond: failed to write scheme"); + } RequestKind::Cancellation(cancellation_request) => { if let Some(i) = blocked .iter() @@ -154,7 +165,7 @@ fn handle_event( { let mut i = 0; while i < blocked.len() { - if let Some(resp) = blocked[i].handle_scheme_block_mut(scheme) { + if let Some(resp) = blocked[i].handle_scheme_block(scheme) { socket .write_response(resp, SignalBehavior::Restart) .expect("vesad: failed to write display scheme"); diff --git a/graphics/fbcond/src/scheme.rs b/graphics/fbcond/src/scheme.rs index 1b37b6674c..7e1d46d18e 100644 --- a/graphics/fbcond/src/scheme.rs +++ b/graphics/fbcond/src/scheme.rs @@ -2,7 +2,7 @@ use std::collections::BTreeMap; use std::os::fd::AsRawFd; use event::{EventQueue, UserData}; -use redox_scheme::SchemeBlockMut; +use redox_scheme::SchemeBlock; use syscall::{Error, EventFlags, Result, EBADF, EINVAL, ENOENT, O_NONBLOCK}; use crate::display::Display; @@ -69,7 +69,7 @@ impl FbconScheme { } } -impl SchemeBlockMut for FbconScheme { +impl SchemeBlock for FbconScheme { fn open( &mut self, path_str: &str, diff --git a/graphics/vesad/src/main.rs b/graphics/vesad/src/main.rs index 20bd314650..4880e1a67b 100644 --- a/graphics/vesad/src/main.rs +++ b/graphics/vesad/src/main.rs @@ -3,8 +3,8 @@ extern crate orbclient; extern crate syscall; use event::{user_data, EventQueue}; -use libredox::errno::EAGAIN; -use redox_scheme::{RequestKind, SignalBehavior, Socket, V2}; +use libredox::errno::{EAGAIN, EOPNOTSUPP}; +use redox_scheme::{RequestKind, Response, SignalBehavior, Socket}; use std::env; use std::fs::File; use std::os::fd::AsRawFd; @@ -78,8 +78,7 @@ fn main() { .expect("failed to create daemon"); } fn inner(daemon: redox_daemon::Daemon, framebuffers: Vec, spec: &[()]) -> ! { - let socket: Socket = - Socket::nonblock("display.vesa").expect("vesad: failed to create display scheme"); + let socket = Socket::nonblock("display.vesa").expect("vesad: failed to create display scheme"); let mut scheme = DisplayScheme::new(framebuffers, &spec); @@ -148,11 +147,22 @@ fn inner(daemon: redox_daemon::Daemon, framebuffers: Vec, spec: &[( RequestKind::Call(call_request) => { socket .write_response( - call_request.handle_scheme_mut(&mut scheme), + call_request.handle_scheme(&mut scheme), SignalBehavior::Restart, ) .expect("vesad: failed to write display scheme"); } + RequestKind::SendFd(sendfd_request) => { + socket + .write_response( + Response::for_sendfd( + &sendfd_request, + Err(syscall::Error::new(EOPNOTSUPP)), + ), + SignalBehavior::Restart, + ) + .expect("vesad: failed to write scheme"); + } RequestKind::Cancellation(_cancellation_request) => {} RequestKind::MsyncMsg | RequestKind::MunmapMsg | RequestKind::MmapMsg => { unreachable!() diff --git a/graphics/vesad/src/scheme.rs b/graphics/vesad/src/scheme.rs index 19ac71782d..a2cf93a011 100644 --- a/graphics/vesad/src/scheme.rs +++ b/graphics/vesad/src/scheme.rs @@ -2,7 +2,7 @@ use std::collections::BTreeMap; use std::str; use inputd::{VtEvent, VtEventKind}; -use redox_scheme::SchemeMut; +use redox_scheme::Scheme; use syscall::{Error, MapFlags, Result, EBADF, EINVAL, ENOENT}; use crate::{framebuffer::FrameBuffer, screen::GraphicScreen}; @@ -105,7 +105,7 @@ impl DisplayScheme { } } -impl SchemeMut for DisplayScheme { +impl Scheme for DisplayScheme { fn open(&mut self, path_str: &str, _flags: usize, _uid: u32, _gid: u32) -> Result { let mut parts = path_str.split('/'); let mut vt_screen = parts.next().unwrap_or("").split('.'); diff --git a/graphics/virtio-gpud/src/main.rs b/graphics/virtio-gpud/src/main.rs index 66f41b64dd..6543d97ddc 100644 --- a/graphics/virtio-gpud/src/main.rs +++ b/graphics/virtio-gpud/src/main.rs @@ -27,10 +27,10 @@ use std::os::fd::AsRawFd; use std::sync::atomic::{AtomicU32, Ordering}; use event::{user_data, EventQueue}; -use libredox::errno::EAGAIN; +use libredox::errno::{EAGAIN, EOPNOTSUPP}; use pcid_interface::PciFunctionHandle; -use redox_scheme::{RequestKind, SignalBehavior, Socket, V2}; +use redox_scheme::{RequestKind, Response, SignalBehavior, Socket}; use virtio_core::utils::VolatileCell; use virtio_core::MSIX_PRIMARY_VECTOR; @@ -439,8 +439,8 @@ fn deamon(deamon: redox_daemon::Daemon) -> anyhow::Result<()> { device.transport.run_device(); deamon.ready().unwrap(); - let socket: Socket = Socket::nonblock("display.virtio-gpu")?; - let mut scheme = futures::executor::block_on(scheme::Scheme::new( + let socket = Socket::nonblock("display.virtio-gpu")?; + let mut scheme = futures::executor::block_on(scheme::GpuScheme::new( config, control_queue.clone(), cursor_queue.clone(), @@ -505,11 +505,22 @@ fn deamon(deamon: redox_daemon::Daemon) -> anyhow::Result<()> { RequestKind::Call(call_request) => { socket .write_response( - call_request.handle_scheme_mut(&mut scheme), + call_request.handle_scheme(&mut scheme), SignalBehavior::Restart, ) .expect("virtio-gpud: failed to write display scheme"); } + RequestKind::SendFd(sendfd_request) => { + socket + .write_response( + Response::for_sendfd( + &sendfd_request, + Err(syscall::Error::new(EOPNOTSUPP)), + ), + SignalBehavior::Restart, + ) + .expect("virtio-gpud: failed to write scheme"); + } RequestKind::Cancellation(_cancellation_request) => {} RequestKind::MsyncMsg | RequestKind::MunmapMsg | RequestKind::MmapMsg => { unreachable!() diff --git a/graphics/virtio-gpud/src/scheme.rs b/graphics/virtio-gpud/src/scheme.rs index c7b3bed07a..deb7439843 100644 --- a/graphics/virtio-gpud/src/scheme.rs +++ b/graphics/virtio-gpud/src/scheme.rs @@ -7,7 +7,7 @@ use std::sync::Arc; use common::{dma::Dma, sgl}; use inputd::{Damage, VtEvent, VtEventKind}; -use redox_scheme::SchemeMut; +use redox_scheme::Scheme; use syscall::{Error as SysError, MapFlags, EINVAL, PAGE_SIZE}; use virtio_core::spec::{Buffer, ChainBuilder, DescriptorFlags}; @@ -227,7 +227,7 @@ struct Handle<'a> { vt: usize, } -pub struct Scheme<'a> { +pub struct GpuScheme<'a> { handles: BTreeMap>, /// Counter used for file descriptor allocation. next_id: AtomicUsize, @@ -235,13 +235,13 @@ pub struct Scheme<'a> { pub inputd_handle: inputd::DisplayHandle, } -impl<'a> Scheme<'a> { +impl<'a> GpuScheme<'a> { pub async fn new( config: &'a mut GpuConfig, control_queue: Arc>, cursor_queue: Arc>, transport: Arc, - ) -> Result, Error> { + ) -> Result, Error> { let displays = Self::probe( control_queue.clone(), cursor_queue.clone(), @@ -335,7 +335,7 @@ impl<'a> Scheme<'a> { } } -impl<'a> SchemeMut for Scheme<'a> { +impl<'a> Scheme for GpuScheme<'a> { fn open(&mut self, path: &str, _flags: usize, _uid: u32, _gid: u32) -> syscall::Result { if path.is_empty() { return Err(SysError::new(EINVAL)); diff --git a/inputd/src/main.rs b/inputd/src/main.rs index a79ba703df..edd0be1a33 100644 --- a/inputd/src/main.rs +++ b/inputd/src/main.rs @@ -18,8 +18,8 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use inputd::{VtActivate, VtEvent, VtEventKind}; -use libredox::errno::ESTALE; -use redox_scheme::{RequestKind, SchemeMut, SignalBehavior, Socket, V2}; +use libredox::errno::{EOPNOTSUPP, ESTALE}; +use redox_scheme::{RequestKind, Response, Scheme, SignalBehavior, Socket}; use orbclient::{Event, EventOption}; use syscall::{Error as SysError, EventFlags, EINVAL}; @@ -154,7 +154,7 @@ impl InputScheme { } } -impl SchemeMut for InputScheme { +impl Scheme for InputScheme { fn open(&mut self, path: &str, _flags: usize, _uid: u32, _gid: u32) -> syscall::Result { let mut path_parts = path.split('/'); @@ -483,7 +483,7 @@ impl SchemeMut for InputScheme { fn deamon(deamon: redox_daemon::Daemon) -> anyhow::Result<()> { // Create the ":input" scheme. - let socket_file: Socket = Socket::create("input")?; + let socket_file = Socket::create("input")?; let mut scheme = InputScheme::new(); deamon.ready().unwrap(); @@ -498,7 +498,13 @@ fn deamon(deamon: redox_daemon::Daemon) -> anyhow::Result<()> { match request.kind() { RequestKind::Call(call_request) => { socket_file.write_response( - call_request.handle_scheme_mut(&mut scheme), + call_request.handle_scheme(&mut scheme), + SignalBehavior::Restart, + )?; + } + RequestKind::SendFd(sendfd_request) => { + socket_file.write_response( + Response::for_sendfd(&sendfd_request, Err(syscall::Error::new(EOPNOTSUPP))), SignalBehavior::Restart, )?; } diff --git a/net/driver-network/src/lib.rs b/net/driver-network/src/lib.rs index 7f78a52695..c52d0d7481 100644 --- a/net/driver-network/src/lib.rs +++ b/net/driver-network/src/lib.rs @@ -1,11 +1,11 @@ use std::collections::BTreeMap; use std::{cmp, io}; +use libredox::errno::EOPNOTSUPP; use libredox::flag::O_NONBLOCK; use libredox::Fd; use redox_scheme::{ - CallRequest, CallerCtx, OpenResult, RequestKind, Response, SchemeBlockMut, SignalBehavior, - Socket, + CallRequest, CallerCtx, OpenResult, RequestKind, Response, SchemeBlock, SignalBehavior, Socket, }; use syscall::schemev2::NewFdFlags; use syscall::{ @@ -85,10 +85,10 @@ impl NetworkScheme { // Handle any blocked requests let mut i = 0; while i < self.blocked.len() { - if let Some(resp) = self.blocked[i].handle_scheme_block_mut(self) { + if let Some(resp) = self.blocked[i].handle_scheme_block(self) { self.socket .write_response(resp, SignalBehavior::Restart) - .expect("vesad: failed to write display scheme"); + .expect("driver-network: failed to write scheme"); self.blocked.remove(i); } else { i += 1; @@ -109,12 +109,18 @@ impl NetworkScheme { match request.kind() { RequestKind::Call(call_request) => { - if let Some(resp) = call_request.handle_scheme_block_mut(self) { + if let Some(resp) = call_request.handle_scheme_block(self) { self.socket.write_response(resp, SignalBehavior::Restart)?; } else { self.blocked.push(call_request); } } + RequestKind::SendFd(sendfd_request) => { + self.socket.write_response( + Response::for_sendfd(&sendfd_request, Err(syscall::Error::new(EOPNOTSUPP))), + SignalBehavior::Restart, + )?; + } RequestKind::Cancellation(cancellation_request) => { if let Some(i) = self .blocked @@ -146,7 +152,7 @@ impl NetworkScheme { } } -impl SchemeBlockMut for NetworkScheme { +impl SchemeBlock for NetworkScheme { fn xopen( &mut self, path: &str, diff --git a/net/rtl8139d/src/main.rs b/net/rtl8139d/src/main.rs index 70e56cd655..774341b83d 100644 --- a/net/rtl8139d/src/main.rs +++ b/net/rtl8139d/src/main.rs @@ -2,7 +2,7 @@ use std::convert::TryInto; use std::fs::File; -use std::io::{Read, Write}; +use std::io::{Read, Write}; use std::os::unix::io::AsRawFd; use std::ptr::NonNull; @@ -218,8 +218,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { } } - let event_queue = - EventQueue::::new().expect("rtl8139d: Could not create event queue."); + let event_queue = EventQueue::::new().expect("rtl8139d: Could not create event queue."); event_queue .subscribe( irq_file.as_raw_fd() as usize, diff --git a/storage/ahcid/src/main.rs b/storage/ahcid/src/main.rs index 3cfb63a435..0af3d33e7e 100644 --- a/storage/ahcid/src/main.rs +++ b/storage/ahcid/src/main.rs @@ -10,7 +10,7 @@ use std::usize; use event::{EventFlags, RawEventQueue}; use pcid_interface::PciFunctionHandle; -use redox_scheme::{RequestKind, Response, SignalBehavior, Socket, V2}; +use redox_scheme::{RequestKind, Response, SignalBehavior, Socket}; use syscall::error::{Error, ENODEV}; use log::{error, info}; @@ -53,8 +53,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { .as_ptr() as usize; { let scheme_name = format!("disk.{}", name); - let socket = - Socket::::nonblock(&scheme_name).expect("ahcid: failed to create disk scheme"); + let socket = Socket::nonblock(&scheme_name).expect("ahcid: failed to create disk scheme"); let mut irq_file = irq.irq_handle("ahcid"); let irq_fd = irq_file.as_raw_fd() as usize; @@ -109,7 +108,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { } }; - if let Some(response) = sqe.handle_scheme_block_mut(&mut scheme) { + if let Some(response) = sqe.handle_scheme_block(&mut scheme) { // TODO: handle full CQE? socket .write_response(response, SignalBehavior::Restart) @@ -133,7 +132,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { // Handle todos in order to finish previous packets if possible let mut i = 0; while i < todo.len() { - if let Some(resp) = todo[i].handle_scheme_block_mut(&mut scheme) { + if let Some(resp) = todo[i].handle_scheme_block(&mut scheme) { let _sqe = todo.remove(i); socket .write_response(resp, SignalBehavior::Restart) @@ -151,7 +150,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { // Handle todos to start new packets if possible let mut i = 0; while i < todo.len() { - if let Some(response) = todo[i].handle_scheme_block_mut(&mut scheme) { + if let Some(response) = todo[i].handle_scheme_block(&mut scheme) { let _sqe = todo.remove(i); socket .write_response(response, SignalBehavior::Restart) diff --git a/storage/ahcid/src/scheme.rs b/storage/ahcid/src/scheme.rs index 67ea31262e..ce153ffb1e 100644 --- a/storage/ahcid/src/scheme.rs +++ b/storage/ahcid/src/scheme.rs @@ -4,7 +4,7 @@ use std::str; use common::io::Io as _; use driver_block::{Disk, DiskWrapper}; -use redox_scheme::{CallerCtx, OpenResult, SchemeBlockMut}; +use redox_scheme::{CallerCtx, OpenResult, SchemeBlock}; use syscall::schemev2::NewFdFlags; use syscall::{ Error, Result, Stat, EACCES, EBADF, EINVAL, EISDIR, ENOENT, ENOLCK, EOVERFLOW, MODE_DIR, @@ -96,7 +96,7 @@ impl DiskScheme { } } -impl SchemeBlockMut for DiskScheme { +impl SchemeBlock for DiskScheme { fn xopen(&mut self, path: &str, flags: usize, ctx: &CallerCtx) -> Result> { if ctx.uid != 0 { return Err(Error::new(EACCES)); diff --git a/storage/bcm2835-sdhcid/src/main.rs b/storage/bcm2835-sdhcid/src/main.rs index c3a5bec63d..fded57eb4b 100644 --- a/storage/bcm2835-sdhcid/src/main.rs +++ b/storage/bcm2835-sdhcid/src/main.rs @@ -9,7 +9,7 @@ use std::{ use driver_block::Disk; use event::{EventFlags, RawEventQueue}; use fdt::{node::FdtNode, Fdt}; -use redox_scheme::{RequestKind, Response, SignalBehavior, Socket, V2}; +use redox_scheme::{RequestKind, Response, SignalBehavior, Socket}; use syscall::{ data::{Event, Packet}, error::{Error, ENODEV}, @@ -115,7 +115,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { } let scheme_name = "disk.mmc"; - let socket_fd = Socket::::create(&scheme_name).expect("mmcd: failed to create disk scheme"); + let socket_fd = Socket::create(&scheme_name).expect("mmcd: failed to create disk scheme"); let mut event_queue = RawEventQueue::new().expect("mmcd: failed to open event file"); event_queue @@ -158,7 +158,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { } } }; - if let Some(resp) = req.handle_scheme_block_mut(&mut scheme) { + if let Some(resp) = req.handle_scheme_block(&mut scheme) { socket_fd .write_response(resp, SignalBehavior::Restart) .expect("mmcd: failed to write disk scheme"); @@ -173,7 +173,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { // Handle todos to start new packets if possible let mut i = 0; while i < todo.len() { - if let Some(resp) = todo[i].handle_scheme_block_mut(&mut scheme) { + if let Some(resp) = todo[i].handle_scheme_block(&mut scheme) { socket_fd .write_response(resp, SignalBehavior::Restart) .expect("mmcd: failed to write disk scheme"); diff --git a/storage/bcm2835-sdhcid/src/scheme.rs b/storage/bcm2835-sdhcid/src/scheme.rs index 18e8d28a3f..27777290bb 100644 --- a/storage/bcm2835-sdhcid/src/scheme.rs +++ b/storage/bcm2835-sdhcid/src/scheme.rs @@ -10,7 +10,7 @@ use syscall::{ MODE_FILE, O_DIRECTORY, O_STAT, }; -use redox_scheme::{CallerCtx, OpenResult, SchemeBlockMut}; +use redox_scheme::{CallerCtx, OpenResult, SchemeBlock}; #[derive(Clone)] enum Handle { @@ -70,7 +70,7 @@ impl DiskScheme { } } -impl SchemeBlockMut for DiskScheme { +impl SchemeBlock for DiskScheme { fn xopen(&mut self, path: &str, flags: usize, ctx: &CallerCtx) -> Result> { if ctx.uid == 0 { let path_str = path.trim_matches('/'); diff --git a/storage/ided/src/main.rs b/storage/ided/src/main.rs index cc8abb79f2..178daba6b9 100644 --- a/storage/ided/src/main.rs +++ b/storage/ided/src/main.rs @@ -4,7 +4,7 @@ use event::{EventFlags, RawEventQueue}; use libredox::flag; use log::{error, info}; use pcid_interface::{PciBar, PciFunctionHandle}; -use redox_scheme::{RequestKind, Response, SignalBehavior, Socket, V2}; +use redox_scheme::{RequestKind, Response, SignalBehavior, Socket}; use std::{ fs::File, io::{ErrorKind, Read, Write}, @@ -200,8 +200,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { } let scheme_name = format!("disk.{}", name); - let socket_fd = - Socket::::nonblock(&scheme_name).expect("ided: failed to create disk scheme"); + let socket_fd = Socket::nonblock(&scheme_name).expect("ided: failed to create disk scheme"); let primary_irq_fd = libredox::call::open( &format!("/scheme/irq/{}", primary_irq), @@ -267,7 +266,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { } } }; - if let Some(resp) = req.handle_scheme_block_mut(&mut scheme) { + if let Some(resp) = req.handle_scheme_block(&mut scheme) { socket_fd .write_response(resp, SignalBehavior::Restart) .expect("ided: failed to write disk scheme"); @@ -290,7 +289,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { // Handle todos in order to finish previous packets if possible let mut i = 0; while i < todo.len() { - if let Some(resp) = todo[i].handle_scheme_block_mut(&mut scheme) { + if let Some(resp) = todo[i].handle_scheme_block(&mut scheme) { socket_fd .write_response(resp, SignalBehavior::Restart) .expect("ided: failed to write disk scheme"); @@ -315,7 +314,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { // Handle todos in order to finish previous packets if possible let mut i = 0; while i < todo.len() { - if let Some(resp) = todo[i].handle_scheme_block_mut(&mut scheme) { + if let Some(resp) = todo[i].handle_scheme_block(&mut scheme) { socket_fd .write_response(resp, SignalBehavior::Restart) .expect("ided: failed to write disk scheme"); @@ -332,7 +331,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { // Handle todos to start new packets if possible let mut i = 0; while i < todo.len() { - if let Some(resp) = todo[i].handle_scheme_block_mut(&mut scheme) { + if let Some(resp) = todo[i].handle_scheme_block(&mut scheme) { socket_fd .write_response(resp, SignalBehavior::Restart) .expect("ided: failed to write disk scheme"); diff --git a/storage/ided/src/scheme.rs b/storage/ided/src/scheme.rs index 0248cae6c5..d2ceaa4ad6 100644 --- a/storage/ided/src/scheme.rs +++ b/storage/ided/src/scheme.rs @@ -11,7 +11,7 @@ use syscall::{ }; use crate::ide::Channel; -use redox_scheme::{CallerCtx, OpenResult, SchemeBlockMut}; +use redox_scheme::{CallerCtx, OpenResult, SchemeBlock}; #[derive(Clone)] enum Handle { @@ -83,7 +83,7 @@ impl DiskScheme { } } -impl SchemeBlockMut for DiskScheme { +impl SchemeBlock for DiskScheme { fn xopen(&mut self, path: &str, flags: usize, ctx: &CallerCtx) -> Result> { if ctx.uid == 0 { let path_str = path.trim_matches('/'); diff --git a/storage/lived/src/main.rs b/storage/lived/src/main.rs index 2a611690f6..b2f9096600 100644 --- a/storage/lived/src/main.rs +++ b/storage/lived/src/main.rs @@ -9,7 +9,7 @@ use std::str; use libredox::call::MmapArgs; use libredox::flag; -use redox_scheme::{CallerCtx, OpenResult, RequestKind, SchemeMut, SignalBehavior, Socket, V2}; +use redox_scheme::{CallerCtx, OpenResult, RequestKind, Scheme, SignalBehavior, Socket}; use syscall::data::Stat; use syscall::error::*; @@ -97,7 +97,7 @@ impl DiskScheme { } } -impl SchemeMut for DiskScheme { +impl Scheme for DiskScheme { fn fsize(&mut self, id: usize) -> Result { Ok( match HandleType::try_from_raw(id).ok_or(Error::new(EBADF))? { @@ -195,7 +195,7 @@ impl SchemeMut for DiskScheme { } fn main() -> anyhow::Result<()> { redox_daemon::Daemon::new(move |daemon| { - let socket_fd = Socket::::create("disk.live").expect("failed to open scheme"); + let socket_fd = Socket::create("disk.live").expect("failed to open scheme"); let mut scheme = DiskScheme::new().unwrap_or_else(|err| { eprintln!("failed to initialize livedisk scheme: {}", err); std::process::exit(1) @@ -216,7 +216,7 @@ fn main() -> anyhow::Result<()> { } None => break, }; - let resp = req.handle_scheme_mut(&mut scheme); + let resp = req.handle_scheme(&mut scheme); socket_fd .write_response(resp, SignalBehavior::Restart) .expect("failed to write packet"); diff --git a/storage/nvmed/src/main.rs b/storage/nvmed/src/main.rs index 2a1040192c..618fdfaf12 100644 --- a/storage/nvmed/src/main.rs +++ b/storage/nvmed/src/main.rs @@ -12,7 +12,7 @@ use std::{slice, usize}; use libredox::flag; use pcid_interface::{PciFeature, PciFeatureInfo, PciFunction, PciFunctionHandle}; -use redox_scheme::{CallRequest, RequestKind, SignalBehavior, Socket, V2}; +use redox_scheme::{CallRequest, RequestKind, SignalBehavior, Socket}; use syscall::{Event, Packet, Result, SchemeBlockMut, PAGE_SIZE}; use self::nvme::{InterruptMethod, InterruptSources, Nvme}; @@ -170,7 +170,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { let address = unsafe { pcid_handle.map_bar(0).expect("nvmed").ptr }; - let socket = Socket::::create(&scheme_name).expect("nvmed: failed to create disk scheme"); + let socket = Socket::create(&scheme_name).expect("nvmed: failed to create disk scheme"); daemon.ready().expect("nvmed: failed to signal readiness"); @@ -220,7 +220,7 @@ fn daemon(daemon: redox_daemon::Daemon) -> ! { let mut i = 0; while i < todo.len() { - if let Some(resp) = todo[i].handle_scheme_block_mut(&mut scheme) { + if let Some(resp) = todo[i].handle_scheme_block(&mut scheme) { let _req = todo.remove(i); socket .write_response(resp, SignalBehavior::Restart) diff --git a/storage/nvmed/src/scheme.rs b/storage/nvmed/src/scheme.rs index 4c63169ce0..25b77e5578 100644 --- a/storage/nvmed/src/scheme.rs +++ b/storage/nvmed/src/scheme.rs @@ -6,7 +6,7 @@ use std::io::prelude::*; use std::sync::Arc; use std::{cmp, str}; -use redox_scheme::{CallerCtx, OpenResult, SchemeBlockMut}; +use redox_scheme::{CallerCtx, OpenResult, SchemeBlock}; use syscall::schemev2::NewFdFlags; use syscall::{ Error, Result, Stat, EACCES, EBADF, EINVAL, EISDIR, ENOENT, ENOLCK, EOVERFLOW, MODE_DIR, @@ -192,7 +192,7 @@ impl DiskScheme { } } -impl SchemeBlockMut for DiskScheme { +impl SchemeBlock for DiskScheme { fn xopen( &mut self, path_str: &str, diff --git a/storage/usbscsid/src/main.rs b/storage/usbscsid/src/main.rs index 4f15115c55..a4cb53992a 100644 --- a/storage/usbscsid/src/main.rs +++ b/storage/usbscsid/src/main.rs @@ -1,6 +1,6 @@ use std::env; -use redox_scheme::{RequestKind, SignalBehavior, Socket, V2}; +use redox_scheme::{RequestKind, SignalBehavior, Socket}; use xhcid_interface::{ConfigureEndpointsReq, XhciClientHandle}; pub mod protocol; @@ -83,7 +83,7 @@ fn daemon(daemon: redox_daemon::Daemon, scheme: String, port: usize, protocol: u // TODO: Let all of the USB drivers fork or be managed externally, and xhcid won't have to keep // track of all the drivers. let socket_fd = - Socket::::create(&disk_scheme_name).expect("usbscsid: failed to create disk scheme"); + Socket::create(&disk_scheme_name).expect("usbscsid: failed to create disk scheme"); //libredox::call::setrens(0, 0).expect("scsid: failed to enter null namespace"); let mut scsi = Scsi::new(&mut *protocol).expect("usbscsid: failed to setup SCSI"); @@ -109,7 +109,7 @@ fn daemon(daemon: redox_daemon::Daemon, scheme: String, port: usize, protocol: u } None => break, }; - let resp = req.handle_scheme_mut(&mut scsi_scheme); + let resp = req.handle_scheme(&mut scsi_scheme); socket_fd .write_response(resp, SignalBehavior::Restart) .expect("scsid: failed to write cqe"); diff --git a/storage/usbscsid/src/scheme.rs b/storage/usbscsid/src/scheme.rs index ed89dd2254..4462e3296a 100644 --- a/storage/usbscsid/src/scheme.rs +++ b/storage/usbscsid/src/scheme.rs @@ -4,7 +4,7 @@ use std::{cmp, str}; use crate::protocol::Protocol; use crate::scsi::Scsi; -use redox_scheme::{CallerCtx, OpenResult, SchemeMut}; +use redox_scheme::{CallerCtx, OpenResult, Scheme}; use syscall::error::{Error, Result}; use syscall::error::{EACCES, EBADF, EINVAL, EIO, ENOENT, ENOSYS}; use syscall::flag::{MODE_CHR, MODE_DIR}; @@ -39,7 +39,7 @@ impl<'a> ScsiScheme<'a> { } } -impl SchemeMut for ScsiScheme<'_> { +impl Scheme for ScsiScheme<'_> { fn xopen(&mut self, path_str: &str, flags: usize, ctx: &CallerCtx) -> Result { if ctx.uid != 0 { return Err(Error::new(EACCES)); diff --git a/storage/virtio-blkd/src/main.rs b/storage/virtio-blkd/src/main.rs index df5cda91a5..a7ef29308e 100644 --- a/storage/virtio-blkd/src/main.rs +++ b/storage/virtio-blkd/src/main.rs @@ -7,7 +7,7 @@ use std::os::fd::{FromRawFd, RawFd}; use std::sync::{Arc, Weak}; use libredox::flag; -use redox_scheme::{RequestKind, SignalBehavior, Socket, V2}; +use redox_scheme::{RequestKind, SignalBehavior, Socket}; use static_assertions::const_assert_eq; use pcid_interface::*; @@ -147,7 +147,7 @@ fn deamon(deamon: redox_daemon::Daemon) -> anyhow::Result<()> { let scheme_name = format!("disk.{}", name); - let socket_fd = Socket::::create(&scheme_name).map_err(Error::SyscallError)?; + let socket_fd = Socket::create(&scheme_name).map_err(Error::SyscallError)?; let mut scheme = scheme::DiskScheme::new(queue, device_space); @@ -167,9 +167,7 @@ fn deamon(deamon: redox_daemon::Daemon) -> anyhow::Result<()> { } None => break, }; - let resp = req - .handle_scheme_block_mut(&mut scheme) - .expect("TODO: block?"); + let resp = req.handle_scheme_block(&mut scheme).expect("TODO: block?"); socket_fd .write_response(resp, SignalBehavior::Restart) .expect("virtio-blkd: failed to write to disk scheme"); diff --git a/storage/virtio-blkd/src/scheme.rs b/storage/virtio-blkd/src/scheme.rs index 79d116db03..2b1c86d3ca 100644 --- a/storage/virtio-blkd/src/scheme.rs +++ b/storage/virtio-blkd/src/scheme.rs @@ -13,7 +13,7 @@ use partitionlib::PartitionTable; use redox_scheme::CallerCtx; use redox_scheme::OpenResult; -use redox_scheme::SchemeBlockMut; +use redox_scheme::SchemeBlock; use syscall::error::*; use syscall::flag::*; use syscall::schemev2::NewFdFlags; @@ -201,7 +201,7 @@ impl<'a> DiskScheme<'a> { } } -impl<'a> SchemeBlockMut for DiskScheme<'a> { +impl<'a> SchemeBlock for DiskScheme<'a> { fn xopen( &mut self, path: &str,