From 027728487440e24139df6d0888c0e76df4a48613 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Tue, 18 Jul 2023 13:59:44 +0200 Subject: [PATCH] Switch to common::Dma for each non-initfs driver. --- ac97d/Cargo.toml | 1 + ac97d/src/device.rs | 3 ++- alxd/src/device/mod.rs | 6 ++++-- e1000d/src/device.rs | 3 ++- ixgbed/src/device.rs | 5 +++-- ixgbed/src/main.rs | 3 +++ rtl8139d/src/device.rs | 6 ++++-- rtl8168d/src/device.rs | 6 ++++-- sb16d/Cargo.toml | 1 + sb16d/src/device.rs | 3 ++- vboxd/src/main.rs | 4 +++- xhcid/src/xhci/context.rs | 4 +++- xhcid/src/xhci/event.rs | 4 +++- xhcid/src/xhci/mod.rs | 8 +++++--- xhcid/src/xhci/ring.rs | 3 ++- xhcid/src/xhci/scheme.rs | 3 ++- 16 files changed, 44 insertions(+), 19 deletions(-) diff --git a/ac97d/Cargo.toml b/ac97d/Cargo.toml index 249ea0ed03..1657a30cfb 100644 --- a/ac97d/Cargo.toml +++ b/ac97d/Cargo.toml @@ -5,6 +5,7 @@ edition = "2018" [dependencies] bitflags = "1" +common = { path = "../common" } log = "0.4" redox-daemon = "0.1" redox-log = "0.1" diff --git a/ac97d/src/device.rs b/ac97d/src/device.rs index 1a6fd0a93b..e40b7e44a0 100644 --- a/ac97d/src/device.rs +++ b/ac97d/src/device.rs @@ -5,9 +5,10 @@ use std::collections::BTreeMap; use std::sync::atomic::{AtomicUsize, Ordering}; use syscall::error::{Error, EACCES, EBADF, Result, EINVAL, ENOENT}; -use syscall::io::{Dma, PhysBox, Mmio, Pio, Io}; +use syscall::io::{Mmio, Pio, Io}; use syscall::scheme::SchemeBlockMut; +use common::dma::{Dma, PhysBox}; use spin::Mutex; const NUM_SUB_BUFFS: usize = 32; diff --git a/alxd/src/device/mod.rs b/alxd/src/device/mod.rs index b92a12fb92..26395be10a 100644 --- a/alxd/src/device/mod.rs +++ b/alxd/src/device/mod.rs @@ -1,12 +1,14 @@ use std::{ptr, thread, time}; use std::convert::TryInto; -use netutils::setcfg; use syscall::error::{Error, EACCES, EINVAL, EIO, EWOULDBLOCK, Result}; use syscall::flag::{EventFlags, O_NONBLOCK}; -use syscall::io::{Dma, Io, Mmio}; +use syscall::io::{Io, Mmio}; use syscall::scheme; +use common::dma::Dma; +use netutils::setcfg; + use self::regs::*; mod regs; diff --git a/e1000d/src/device.rs b/e1000d/src/device.rs index cde14975ff..45186b7695 100644 --- a/e1000d/src/device.rs +++ b/e1000d/src/device.rs @@ -6,9 +6,10 @@ use netutils::setcfg; use syscall::error::{Error, Result, EACCES, EBADF, EINVAL, EWOULDBLOCK}; use syscall::flag::{EventFlags, O_NONBLOCK}; -use syscall::io::Dma; use syscall::scheme::SchemeBlockMut; +use common::dma::Dma; + const CTRL: u32 = 0x00; const CTRL_LRST: u32 = 1 << 3; const CTRL_ASDE: u32 = 1 << 5; diff --git a/ixgbed/src/device.rs b/ixgbed/src/device.rs index c5a8a210b4..2803ccca5f 100644 --- a/ixgbed/src/device.rs +++ b/ixgbed/src/device.rs @@ -3,12 +3,13 @@ use std::convert::TryInto; use std::time::{Duration, Instant}; use std::{cmp, mem, ptr, slice, thread}; -use netutils::setcfg; use syscall::error::{Error, Result, EACCES, EBADF, EINVAL, EWOULDBLOCK}; use syscall::flag::{EventFlags, O_NONBLOCK}; -use syscall::io::Dma; use syscall::scheme::SchemeBlockMut; +use common::dma::Dma; +use netutils::setcfg; + use ixgbe::*; pub struct Intel8259x { diff --git a/ixgbed/src/main.rs b/ixgbed/src/main.rs index b1906fadc8..b192450af0 100644 --- a/ixgbed/src/main.rs +++ b/ixgbed/src/main.rs @@ -2,6 +2,9 @@ extern crate event; extern crate netutils; extern crate syscall; +// TODO: Migrate to Rust 2018/2021 +extern crate common; + use std::cell::RefCell; use std::fs::File; use std::io::{ErrorKind, Read, Result, Write}; diff --git a/rtl8139d/src/device.rs b/rtl8139d/src/device.rs index 0351b8bb95..f9bbcac38f 100644 --- a/rtl8139d/src/device.rs +++ b/rtl8139d/src/device.rs @@ -2,12 +2,14 @@ use std::mem; use std::convert::TryInto; use std::collections::BTreeMap; -use netutils::setcfg; use syscall::error::{Error, EACCES, EBADF, EINVAL, EIO, EMSGSIZE, EWOULDBLOCK, Result}; use syscall::flag::{EventFlags, O_NONBLOCK}; -use syscall::io::{Dma, Mmio, Io, ReadOnly}; +use syscall::io::{Mmio, Io, ReadOnly}; use syscall::scheme::SchemeBlockMut; +use common::dma::Dma; +use netutils::setcfg; + const RX_BUFFER_SIZE: usize = 64 * 1024; const RXSTS_ROK: u16 = 1 << 0; diff --git a/rtl8168d/src/device.rs b/rtl8168d/src/device.rs index df906089ff..a32a5199ee 100644 --- a/rtl8168d/src/device.rs +++ b/rtl8168d/src/device.rs @@ -5,12 +5,14 @@ use std::mem; use std::convert::TryInto; use std::collections::BTreeMap; -use netutils::setcfg; use syscall::error::{Error, EACCES, EBADF, EINVAL, EMSGSIZE, EWOULDBLOCK, Result}; use syscall::flag::{EventFlags, O_NONBLOCK}; -use syscall::io::{Dma, Mmio, Io, ReadOnly}; +use syscall::io::{Mmio, Io, ReadOnly}; use syscall::scheme::SchemeBlockMut; +use common::dma::Dma; +use netutils::setcfg; + #[repr(packed)] struct Regs { mac: [Mmio; 2], diff --git a/sb16d/Cargo.toml b/sb16d/Cargo.toml index bee3594214..daa3b7659a 100644 --- a/sb16d/Cargo.toml +++ b/sb16d/Cargo.toml @@ -5,6 +5,7 @@ edition = "2018" [dependencies] bitflags = "1" +common = { path = "../common" } log = "0.4" redox-daemon = "0.1" redox-log = "0.1" diff --git a/sb16d/src/device.rs b/sb16d/src/device.rs index f016cde002..1e03f877a2 100644 --- a/sb16d/src/device.rs +++ b/sb16d/src/device.rs @@ -5,9 +5,10 @@ use std::collections::BTreeMap; use std::sync::atomic::{AtomicUsize, Ordering}; use syscall::error::{Error, EACCES, EBADF, Result, EINVAL, ENODEV, ENOENT}; -use syscall::io::{Dma, PhysBox, Mmio, Pio, Io, ReadOnly, WriteOnly}; +use syscall::io::{Mmio, Pio, Io, ReadOnly, WriteOnly}; use syscall::scheme::SchemeBlockMut; +use common::dma::{Dma, PhysBox}; use spin::Mutex; const NUM_SUB_BUFFS: usize = 32; diff --git a/vboxd/src/main.rs b/vboxd/src/main.rs index de94f4ba9e..cb3bba6035 100644 --- a/vboxd/src/main.rs +++ b/vboxd/src/main.rs @@ -12,7 +12,9 @@ use std::io::{Result, Read, Write}; use syscall::call::iopl; use syscall::flag::EventFlags; -use syscall::io::{Dma, Io, Mmio, Pio}; +use syscall::io::{Io, Mmio, Pio}; + +use common::dma::Dma; use crate::bga::Bga; diff --git a/xhcid/src/xhci/context.rs b/xhcid/src/xhci/context.rs index c40f000805..d0fa24174a 100644 --- a/xhcid/src/xhci/context.rs +++ b/xhcid/src/xhci/context.rs @@ -2,7 +2,9 @@ use std::collections::BTreeMap; use log::debug; use syscall::error::Result; -use syscall::io::{Dma, Io, Mmio}; +use syscall::io::{Io, Mmio}; + +use common::dma::Dma; use super::Xhci; use super::ring::Ring; diff --git a/xhcid/src/xhci/event.rs b/xhcid/src/xhci/event.rs index 7ee17d6957..329afc0ed3 100644 --- a/xhcid/src/xhci/event.rs +++ b/xhcid/src/xhci/event.rs @@ -1,5 +1,7 @@ use syscall::error::Result; -use syscall::io::{Dma, Io, Mmio}; +use syscall::io::{Io, Mmio}; + +use common::dma::Dma; use super::Xhci; use super::ring::Ring; diff --git a/xhcid/src/xhci/mod.rs b/xhcid/src/xhci/mod.rs index d3936d51c4..aa371007d7 100644 --- a/xhcid/src/xhci/mod.rs +++ b/xhcid/src/xhci/mod.rs @@ -9,13 +9,15 @@ use std::sync::atomic::{AtomicBool, AtomicUsize}; use std::{mem, process, slice, sync::atomic, task, thread}; +use syscall::error::{Error, Result, EBADF, EBADMSG, ENOENT, EIO}; +use syscall::flag::{O_RDONLY, PhysallocFlags}; +use syscall::io::Io; + use chashmap::CHashMap; +use common::dma::{Dma, PhysBox}; use crossbeam_channel::{Receiver, Sender}; use log::{debug, error, info, trace, warn}; use serde::Deserialize; -use syscall::error::{Error, Result, EBADF, EBADMSG, ENOENT, EIO}; -use syscall::flag::{O_RDONLY, PhysallocFlags}; -use syscall::io::{Dma, Io, PhysBox}; use crate::usb; diff --git a/xhcid/src/xhci/ring.rs b/xhcid/src/xhci/ring.rs index ae7da564b4..0bb74f7098 100644 --- a/xhcid/src/xhci/ring.rs +++ b/xhcid/src/xhci/ring.rs @@ -1,7 +1,8 @@ use std::mem; use syscall::error::Result; -use syscall::io::Dma; + +use common::dma::Dma; use super::Xhci; use super::trb::Trb; diff --git a/xhcid/src/xhci/scheme.rs b/xhcid/src/xhci/scheme.rs index 95d2315437..71e1610cf7 100644 --- a/xhcid/src/xhci/scheme.rs +++ b/xhcid/src/xhci/scheme.rs @@ -4,12 +4,13 @@ use std::ops::Deref; use std::sync::atomic; use std::{cmp, fmt, io, mem, path, str}; +use common::dma::Dma; use futures::executor::block_on; use log::{debug, error, info, warn, trace}; use serde::{Deserialize, Serialize}; use smallvec::{smallvec, SmallVec}; -use syscall::io::{Dma, Io}; +use syscall::io::Io; use syscall::scheme::Scheme; use syscall::{ Error, Result, Stat, EACCES, EBADF, EBADFD, EBADMSG, EEXIST, EINVAL, EIO, EISDIR, ENOENT,