diff --git a/src/header/assert/mod.rs b/src/header/assert/mod.rs index 2b65a328922a5e262fccae50194ddd76332f3ca3..64af2af769a96340933d343cef0d0ff901c123bf 100644 --- a/src/header/assert/mod.rs +++ b/src/header/assert/mod.rs @@ -1,10 +1,6 @@ //! assert implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xsh/assert.h.html -use crate::{ - c_str::CStr, - header::{stdio, stdlib}, - platform::types::*, -}; +use crate::{c_str::CStr, platform::types::*}; #[no_mangle] pub unsafe extern "C" fn __assert_fail( diff --git a/src/header/bits_pthread/mod.rs b/src/header/bits_pthread/mod.rs index 27446c010e4b9006c65480b16111c4872e820685..b5b6de646ebf5bf3312627bf907f398f582288dd 100644 --- a/src/header/bits_pthread/mod.rs +++ b/src/header/bits_pthread/mod.rs @@ -2,11 +2,6 @@ use crate::platform::types::*; -use crate::header::sched::sched_param; - -use crate::sync::AtomicLock; -use core::sync::atomic::{AtomicI32 as AtomicInt, AtomicU32 as AtomicUint}; - // XXX: https://github.com/eqrion/cbindgen/issues/685 // // We need to write the opaque types ourselves, and apparently cbindgen doesn't even support diff --git a/src/header/bits_sched/mod.rs b/src/header/bits_sched/mod.rs index 149fc8eb0956c93b019f29e22ecf1999fb69d1a4..918c3c7f23d3b5281d5a19cb5866995f394c88ba 100644 --- a/src/header/bits_sched/mod.rs +++ b/src/header/bits_sched/mod.rs @@ -1,3 +1 @@ #![allow(non_camel_case_types)] - -use crate::platform::types::*; diff --git a/src/header/inttypes/mod.rs b/src/header/inttypes/mod.rs index 089ac5e7c9e4905c0974adbafaf252b8f439bf49..526e5af62ab1fe6a4c6d88fd25dc9a5098ba36ee 100644 --- a/src/header/inttypes/mod.rs +++ b/src/header/inttypes/mod.rs @@ -1,7 +1,5 @@ -use core::{convert::TryInto, ptr}; - use crate::{ - header::{ctype, errno::*, stdlib::*, wctype::iswspace}, + header::{ctype, errno::*, stdlib::*}, platform::{self, types::*}, }; @@ -10,7 +8,6 @@ pub extern "C" fn imaxabs(i: intmax_t) -> intmax_t { i.abs() } -#[no_mangle] #[repr(C)] pub struct imaxdiv_t { quot: intmax_t, diff --git a/src/header/locale/mod.rs b/src/header/locale/mod.rs index 1f275ed4d7a2488e512a28d8c475e0c739873fe8..130d5be28096ea4f0421118e676daa77a3b08b67 100644 --- a/src/header/locale/mod.rs +++ b/src/header/locale/mod.rs @@ -9,7 +9,6 @@ const EMPTY_PTR: *const c_char = "\0" as *const _ as *const c_char; static mut C_LOCALE: [c_char; 2] = [b'C' as c_char, 0]; #[repr(C)] -#[no_mangle] pub struct lconv { currency_symbol: *const c_char, decimal_point: *const c_char, diff --git a/src/header/netdb/dns/mod.rs b/src/header/netdb/dns/mod.rs index 30847ddf884300306b42afaaf585bd36102fca82..2d73281b61676af14c42afefcd381b36c563fc1b 100644 --- a/src/header/netdb/dns/mod.rs +++ b/src/header/netdb/dns/mod.rs @@ -11,46 +11,10 @@ pub use self::{answer::DnsAnswer, query::DnsQuery}; use alloc::{string::String, vec::Vec}; -use core::{slice, u16}; mod answer; mod query; -#[allow(non_camel_case_types)] -#[derive(Copy, Clone, Debug, Default)] -#[repr(packed)] -pub struct n16 { - inner: u16, -} - -impl n16 { - pub fn as_bytes(&self) -> &[u8] { - unsafe { slice::from_raw_parts(core::ptr::addr_of!(self.inner).cast::<u8>(), 2) } - } - - pub fn from_bytes(bytes: &[u8]) -> Self { - n16 { - inner: unsafe { - slice::from_raw_parts(bytes.as_ptr() as *const u16, bytes.len() / 2)[0] - }, - } - } -} - -impl From<u16> for n16 { - fn from(value: u16) -> Self { - n16 { - inner: value.to_be(), - } - } -} - -impl From<n16> for u16 { - fn from(value: n16) -> Self { - u16::from_be(value.inner) - } -} - #[derive(Clone, Debug)] pub struct Dns { pub transaction_id: u16, @@ -67,13 +31,13 @@ impl Dns { ($value:expr) => { data.push($value); }; - }; + } macro_rules! push_n16 { ($value:expr) => { - data.extend_from_slice(n16::from($value).as_bytes()); + data.extend_from_slice(&u16::to_be_bytes($value)); }; - }; + } push_n16!(self.transaction_id); push_n16!(self.flags); @@ -106,17 +70,19 @@ impl Dns { } data[i - 1] }}; - }; + } macro_rules! pop_n16 { () => {{ + use core::convert::TryInto; i += 2; if i > data.len() { return Err(format!("{}: {}: pop_n16", file!(), line!())); } - u16::from(n16::from_bytes(&data[i - 2..i])) + let bytes: [u8; 2] = data[i - 2..i].try_into().unwrap(); + u16::from_be_bytes(bytes) }}; - }; + } macro_rules! pop_data { () => {{ @@ -129,7 +95,7 @@ impl Dns { data }}; - }; + } macro_rules! pop_name { () => {{ @@ -160,7 +126,7 @@ impl Dns { name }}; - }; + } let transaction_id = pop_n16!(); let flags = pop_n16!(); diff --git a/src/header/pthread/mod.rs b/src/header/pthread/mod.rs index 253dd656b3e3317c0406fb5ca6bdb66a0d0ea814..b4bd9ab9eef0865263930b2eb8e52e609264371e 100644 --- a/src/header/pthread/mod.rs +++ b/src/header/pthread/mod.rs @@ -1,10 +1,10 @@ //! pthread.h implementation for Redox, following https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html -use core::{cell::Cell, ptr::NonNull}; +use core::cell::Cell; use crate::{ header::{sched::*, time::timespec}, - platform::{self, types::*, Pal, Sys}, + platform::{types::*, Pal, Sys}, pthread, }; diff --git a/src/header/pthread/mutex.rs b/src/header/pthread/mutex.rs index d24f6b7ccde46d7cefccfae63902b47270cff3a7..6b89f266c847cbf7d3fb009944f8c3ec0322e0b6 100644 --- a/src/header/pthread/mutex.rs +++ b/src/header/pthread/mutex.rs @@ -1,8 +1,6 @@ use super::*; -use crate::{header::errno::*, pthread::Errno}; - -use core::sync::atomic::AtomicI32 as AtomicInt; +use crate::pthread::Errno; // PTHREAD_MUTEX_INITIALIZER is defined in bits_pthread/cbindgen.toml diff --git a/src/header/signal/mod.rs b/src/header/signal/mod.rs index a80ae0d4321e80803b8dda5e2aafdb80f406a987..a071ad7dafceee3e61d7d82bafd2f2237fddd26c 100644 --- a/src/header/signal/mod.rs +++ b/src/header/signal/mod.rs @@ -352,7 +352,7 @@ pub extern "C" fn sigwait(set: *const sigset_t, sig: *mut c_int) -> c_int { return -1; } unsafe { - let mut info = pinfo.assume_init(); + let info = pinfo.assume_init(); (*sig) = info.si_signo; } 0 diff --git a/src/header/stdio/mod.rs b/src/header/stdio/mod.rs index 6148e6fb15b043f2c29fa41a781a91af453d79b7..5a43bd8d35145ff39c32ee66a6062e644d9a61ba 100644 --- a/src/header/stdio/mod.rs +++ b/src/header/stdio/mod.rs @@ -1238,7 +1238,7 @@ pub unsafe extern "C" fn vsscanf(s: *const c_char, format: *const c_char, ap: va pub unsafe fn flush_io_streams() { let flush = |stream: *mut FILE| { let stream = &mut *stream; - stream.flush() + let _ = stream.flush(); }; flush(stdout); flush(stderr); diff --git a/src/header/stdio/scanf.rs b/src/header/stdio/scanf.rs index 4a8b63c937fd4862322fdd25bc80ea6bc9244a28..c96c0ddfccc44ea8945d11db6061f2ace913e05c 100644 --- a/src/header/stdio/scanf.rs +++ b/src/header/stdio/scanf.rs @@ -239,13 +239,13 @@ unsafe fn inner_scanf( } }}; (c_double) => { - parse_type!(noformat c_double); + parse_type!(noformat c_double) }; (c_float) => { - parse_type!(noformat c_float); + parse_type!(noformat c_float) }; ($type:ident) => { - parse_type!($type, $type); + parse_type!($type, $type) }; ($type:ident, $final:ty) => {{ let n = if n.is_empty() { diff --git a/src/ld_so/mod.rs b/src/ld_so/mod.rs index f9c474f839436519faa48ac49b0d8e98d242e025..809dad7ebd4e5d18aed04d30792e6cfc3df944b8 100644 --- a/src/ld_so/mod.rs +++ b/src/ld_so/mod.rs @@ -31,9 +31,7 @@ static mut STATIC_TCB_MASTER: Master = Master { fn panic_notls(msg: impl core::fmt::Display) -> ! { eprintln!("panicked in ld.so: {}", msg); - unsafe { - core::intrinsics::abort(); - } + core::intrinsics::abort(); } pub trait ExpectTlsFree { @@ -140,12 +138,14 @@ pub fn static_init(sp: &'static Stack) { #[cfg(any(target_os = "linux", target_os = "redox"))] pub unsafe fn init(sp: &'static Stack) { - let mut tp = 0usize; + let tp: usize; #[cfg(target_os = "linux")] { const ARCH_GET_FS: usize = 0x1003; - syscall!(ARCH_PRCTL, ARCH_GET_FS, &mut tp as *mut usize); + let mut val = 0usize; + syscall!(ARCH_PRCTL, ARCH_GET_FS, &mut val as *mut usize); + tp = val; } #[cfg(all(target_os = "redox", target_arch = "aarch64"))] { diff --git a/src/platform/redox/clone.rs b/src/platform/redox/clone.rs index 5f32f0207ebd21ca35723353192a1ee711f90736..f35a41fec9651398e91024c56a9da1f5630a7e11 100644 --- a/src/platform/redox/clone.rs +++ b/src/platform/redox/clone.rs @@ -1,10 +1,6 @@ -use core::{arch::global_asm, mem::size_of}; - -use alloc::{boxed::Box, vec::Vec}; - use syscall::{ data::Map, - error::{Error, Result, EINVAL, ENAMETOOLONG}, + error::Result, flag::{MapFlags, O_CLOEXEC}, SIGCONT, }; diff --git a/src/platform/redox/exec.rs b/src/platform/redox/exec.rs index a8b97ec9ff5d5cf57c42e6e1640ddd910f6ef757..77cb697733328e83d8c8fd42fe896b24147d0878 100644 --- a/src/platform/redox/exec.rs +++ b/src/platform/redox/exec.rs @@ -2,7 +2,7 @@ use crate::{ c_str::{CStr, CString}, core_io::{prelude::*, BufReader, SeekFrom}, fs::File, - header::{fcntl, string::strlen}, + header::string::strlen, platform::{ sys::{S_ISGID, S_ISUID}, types::*, diff --git a/src/platform/redox/extra.rs b/src/platform/redox/extra.rs index 597e2c7eb6d5afb68abb97ae1e21b83812713c2f..9ed051cfeb603b71b7e4943e993fad3b97a72fff 100644 --- a/src/platform/redox/extra.rs +++ b/src/platform/redox/extra.rs @@ -1,4 +1,4 @@ -use core::{mem::size_of, ptr, slice}; +use core::{ptr, slice}; use crate::platform::{sys::e, types::*}; diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs index 767b94b72dd64f2492b29f9ba2c55e60f419fd68..ab190bc96628fc584e78b762b3be07f4597f95c2 100644 --- a/src/platform/redox/mod.rs +++ b/src/platform/redox/mod.rs @@ -1,4 +1,4 @@ -use core::{arch::asm, convert::TryFrom, mem, ptr, result::Result as CoreResult, slice, str}; +use core::{convert::TryFrom, mem, ptr, result::Result as CoreResult, slice, str}; use syscall::{ self, @@ -13,7 +13,6 @@ use crate::{ dirent::dirent, errno::{EINVAL, EIO, ENOMEM, ENOSYS, EPERM, ERANGE}, fcntl, - string::strlen, sys_mman::{MAP_ANONYMOUS, PROT_READ, PROT_WRITE}, sys_random, sys_resource::{rlimit, RLIM_INFINITY}, @@ -25,7 +24,7 @@ use crate::{ time::timespec, unistd::{F_OK, R_OK, W_OK, X_OK}, }, - io::{self, prelude::*, BufReader, SeekFrom}, + io::{self, prelude::*, BufReader}, }; pub use redox_exec::FdGuard; diff --git a/src/platform/redox/path.rs b/src/platform/redox/path.rs index 31d2537554fcfb0b868910593163e6d1a48e5873..eb97b42f21147adac05a6a544e85b7d84b8625c2 100644 --- a/src/platform/redox/path.rs +++ b/src/platform/redox/path.rs @@ -1,11 +1,6 @@ use syscall::{data::Stat, error::*, flag::*}; -use alloc::{ - borrow::{Cow, ToOwned}, - boxed::Box, - string::String, - vec::Vec, -}; +use alloc::{borrow::ToOwned, boxed::Box, string::String, vec::Vec}; use super::FdGuard; use crate::sync::Mutex; diff --git a/src/platform/redox/ptrace.rs b/src/platform/redox/ptrace.rs index 4216922180079ea3e48f7ed7b3d35119bb68417a..3d8dba4f329d4cd6e1103d439e3dbcbbf49e9501 100644 --- a/src/platform/redox/ptrace.rs +++ b/src/platform/redox/ptrace.rs @@ -14,7 +14,7 @@ use crate::{ fs::File, header::{errno as errnoh, fcntl, signal, sys_ptrace}, io::{self, prelude::*}, - sync::{Mutex, Once}, + sync::Mutex, }; use alloc::collections::{btree_map::Entry, BTreeMap}; diff --git a/src/platform/redox/redox-exec/src/lib.rs b/src/platform/redox/redox-exec/src/lib.rs index 768dfa681410ef51179f3c97158e11f12c2ba2e9..f7527e4627b50bf05b9aa216cec84db8074777dc 100644 --- a/src/platform/redox/redox-exec/src/lib.rs +++ b/src/platform/redox/redox-exec/src/lib.rs @@ -1,5 +1,5 @@ #![no_std] -#![feature(array_chunks, map_first_last)] +#![feature(array_chunks)] extern crate alloc; diff --git a/src/pthread/mod.rs b/src/pthread/mod.rs index 99a36251e4c86e3055e826ed00576a2254292f47..ce380d92dbddd400f071e5bb497d3ff161148167 100644 --- a/src/pthread/mod.rs +++ b/src/pthread/mod.rs @@ -3,10 +3,10 @@ use core::{ cell::{Cell, UnsafeCell}, ptr::NonNull, - sync::atomic::{AtomicBool, AtomicU32, AtomicUsize, Ordering}, + sync::atomic::{AtomicBool, AtomicUsize, Ordering}, }; -use alloc::{boxed::Box, collections::BTreeMap, vec::Vec}; +use alloc::{boxed::Box, collections::BTreeMap}; use crate::{ header::{errno::*, pthread as header, sched::sched_param, sys_mman}, @@ -84,8 +84,6 @@ pub struct OsTid { unsafe impl Send for Pthread {} unsafe impl Sync for Pthread {} -use crate::header::bits_pthread::pthread_attr_t; - /// Positive error codes (EINVAL, not -EINVAL). #[derive(Debug, Eq, PartialEq)] // TODO: Move to a more generic place. diff --git a/src/sync/barrier.rs b/src/sync/barrier.rs index 6e027364a90400576db9a4f92e73ca929540efbd..9ae84a60efcccc74d4eb69ca0c0e160da0931045 100644 --- a/src/sync/barrier.rs +++ b/src/sync/barrier.rs @@ -1,8 +1,4 @@ -use core::{ - cmp, - num::NonZeroU32, - sync::atomic::{AtomicU32 as AtomicUint, Ordering}, -}; +use core::num::NonZeroU32; pub struct Barrier { original_count: NonZeroU32, diff --git a/src/sync/cond.rs b/src/sync/cond.rs index 43b620fee81748d0ae5c826f49645f43bb5a0795..ee7ff97bd2eefaf8e3252d96faaa6f08cdf8a4b3 100644 --- a/src/sync/cond.rs +++ b/src/sync/cond.rs @@ -1,7 +1,7 @@ // Used design from https://www.remlab.net/op/futex-condvar.shtml use crate::{ - header::{bits_pthread::*, pthread::*, time::timespec}, + header::{pthread::*, time::timespec}, pthread::Errno, }; diff --git a/src/sync/once.rs b/src/sync/once.rs index b554f24bc90247c441a5ab0160f2e008697eed49..293ab84cb9a2c5c62dca09a281060d8a26b85a08 100644 --- a/src/sync/once.rs +++ b/src/sync/once.rs @@ -1,4 +1,4 @@ -use super::{AtomicLock, AttemptStatus}; +use super::AttemptStatus; use crate::platform::types::*; use core::{ cell::UnsafeCell, diff --git a/src/sync/pthread_mutex.rs b/src/sync/pthread_mutex.rs index 05d75daccc2bb96a1847f5d4919e6e35d955a52a..cb08dde8cc2ca5da7a7f665bf20f61fb4b4ba74a 100644 --- a/src/sync/pthread_mutex.rs +++ b/src/sync/pthread_mutex.rs @@ -4,7 +4,7 @@ use core::{ }; use crate::{ - header::{errno::*, pthread::*, sys_wait::*, time::timespec}, + header::{errno::*, pthread::*, time::timespec}, pthread::*, }; diff --git a/src/sync/semaphore.rs b/src/sync/semaphore.rs index 1bad9e30a5b04c7cb4aecb6703a1214feff622ca..c0a0b3a2ad7a4dc9ddc9ef10bc573c9368a1018d 100644 --- a/src/sync/semaphore.rs +++ b/src/sync/semaphore.rs @@ -1,10 +1,9 @@ // From https://www.remlab.net/op/futex-misc.shtml //TODO: improve implementation -use super::AtomicLock; use crate::{ header::time::{clock_gettime, timespec, CLOCK_MONOTONIC}, - platform::{types::*, Pal, Sys}, + platform::types::*, }; use core::sync::atomic::{AtomicU32, Ordering};