diff --git a/library/std/src/sync/condvar.rs b/library/std/src/sync/condvar.rs index 76a1b4a2a86cd..dcdfb427edc45 100644 --- a/library/std/src/sync/condvar.rs +++ b/library/std/src/sync/condvar.rs @@ -3,7 +3,7 @@ mod tests; use crate::fmt; use crate::sync::{mutex, poison, LockResult, MutexGuard, PoisonError}; -use crate::sys::locks as sys; +use crate::sys_common::locks as sys; use crate::time::{Duration, Instant}; /// A type indicating whether a timed wait on a condition variable returned diff --git a/library/std/src/sync/mutex.rs b/library/std/src/sync/mutex.rs index 065045f442069..cb95a35b3bbc2 100644 --- a/library/std/src/sync/mutex.rs +++ b/library/std/src/sync/mutex.rs @@ -5,7 +5,7 @@ use crate::cell::UnsafeCell; use crate::fmt; use crate::ops::{Deref, DerefMut}; use crate::sync::{poison, LockResult, TryLockError, TryLockResult}; -use crate::sys::locks as sys; +use crate::sys_common::locks as sys; /// A mutual exclusion primitive useful for protecting shared data /// diff --git a/library/std/src/sync/rwlock.rs b/library/std/src/sync/rwlock.rs index 7c409cb3e9776..e6a94f65126f4 100644 --- a/library/std/src/sync/rwlock.rs +++ b/library/std/src/sync/rwlock.rs @@ -6,7 +6,7 @@ use crate::fmt; use crate::ops::{Deref, DerefMut}; use crate::ptr::NonNull; use crate::sync::{poison, LockResult, TryLockError, TryLockResult}; -use crate::sys::locks as sys; +use crate::sys_common::locks as sys; /// A reader-writer lock /// diff --git a/library/std/src/sys/hermit/mod.rs b/library/std/src/sys/hermit/mod.rs index 6811fadb0188c..64fe210913f09 100644 --- a/library/std/src/sys/hermit/mod.rs +++ b/library/std/src/sys/hermit/mod.rs @@ -46,16 +46,6 @@ pub mod thread_local_dtor; pub mod thread_local_key; pub mod time; -#[path = "../unix/locks"] -pub mod locks { - mod futex_condvar; - mod futex_mutex; - mod futex_rwlock; - pub(crate) use futex_condvar::Condvar; - pub(crate) use futex_mutex::Mutex; - pub(crate) use futex_rwlock::RwLock; -} - use crate::io::ErrorKind; #[allow(unused_extern_crates)] diff --git a/library/std/src/sys/unix/locks/mod.rs b/library/std/src/sys/unix/locks/mod.rs index b2e0e49ad736d..c588efaabb977 100644 --- a/library/std/src/sys/unix/locks/mod.rs +++ b/library/std/src/sys/unix/locks/mod.rs @@ -1,25 +1,16 @@ +#![cfg(not(any( + target_os = "linux", + target_os = "android", + all(target_os = "emscripten", target_feature = "atomics"), + target_os = "freebsd", + target_os = "openbsd", + target_os = "dragonfly", +)))] + cfg_if::cfg_if! { - if #[cfg(any( - target_os = "linux", - target_os = "android", - all(target_os = "emscripten", target_feature = "atomics"), - target_os = "freebsd", - target_os = "openbsd", - target_os = "dragonfly", - ))] { - mod futex_mutex; - mod futex_rwlock; - mod futex_condvar; - pub(crate) use futex_mutex::Mutex; - pub(crate) use futex_rwlock::RwLock; - pub(crate) use futex_condvar::Condvar; - } else if #[cfg(target_os = "fuchsia")] { + if #[cfg(target_os = "fuchsia")] { mod fuchsia_mutex; - mod futex_rwlock; - mod futex_condvar; pub(crate) use fuchsia_mutex::Mutex; - pub(crate) use futex_rwlock::RwLock; - pub(crate) use futex_condvar::Condvar; } else { mod pthread_mutex; mod pthread_rwlock; diff --git a/library/std/src/sys/wasm/mod.rs b/library/std/src/sys/wasm/mod.rs index d68c3e5f1dfbf..655557cc70517 100644 --- a/library/std/src/sys/wasm/mod.rs +++ b/library/std/src/sys/wasm/mod.rs @@ -49,16 +49,6 @@ pub mod time; cfg_if::cfg_if! { if #[cfg(target_feature = "atomics")] { - #[path = "../unix/locks"] - pub mod locks { - #![allow(unsafe_op_in_unsafe_fn)] - mod futex_condvar; - mod futex_mutex; - mod futex_rwlock; - pub(crate) use futex_condvar::Condvar; - pub(crate) use futex_mutex::Mutex; - pub(crate) use futex_rwlock::RwLock; - } #[path = "atomics/futex.rs"] pub mod futex; #[path = "atomics/thread.rs"] diff --git a/library/std/src/sys/unix/locks/futex_condvar.rs b/library/std/src/sys_common/locks/futex_condvar.rs similarity index 100% rename from library/std/src/sys/unix/locks/futex_condvar.rs rename to library/std/src/sys_common/locks/futex_condvar.rs diff --git a/library/std/src/sys/unix/locks/futex_mutex.rs b/library/std/src/sys_common/locks/futex_mutex.rs similarity index 100% rename from library/std/src/sys/unix/locks/futex_mutex.rs rename to library/std/src/sys_common/locks/futex_mutex.rs diff --git a/library/std/src/sys/unix/locks/futex_rwlock.rs b/library/std/src/sys_common/locks/futex_rwlock.rs similarity index 100% rename from library/std/src/sys/unix/locks/futex_rwlock.rs rename to library/std/src/sys_common/locks/futex_rwlock.rs diff --git a/library/std/src/sys_common/locks/mod.rs b/library/std/src/sys_common/locks/mod.rs new file mode 100644 index 0000000000000..d317b8e0f8781 --- /dev/null +++ b/library/std/src/sys_common/locks/mod.rs @@ -0,0 +1,27 @@ +cfg_if::cfg_if! { + if #[cfg(any( + target_os = "android", + target_os = "dragonfly", + all(target_os = "emscripten", target_feature = "atomics"), + target_os = "freebsd", + target_os = "hermit", + target_os = "linux", + target_os = "openbsd", + all(any(target_arch = "wasm32", target_arch = "wasm64"), target_feature = "atomics"), + ))] { + mod futex_mutex; + mod futex_rwlock; + mod futex_condvar; + pub(crate) use futex_mutex::Mutex; + pub(crate) use futex_rwlock::RwLock; + pub(crate) use futex_condvar::Condvar; + } else if #[cfg(target_os = "fuchsia")] { + mod futex_rwlock; + mod futex_condvar; + pub(crate) use crate::sys::locks::Mutex; + pub(crate) use futex_rwlock::RwLock; + pub(crate) use futex_condvar::Condvar; + } else { + pub(crate) use crate::sys::locks::{Mutex, RwLock, Condvar}; + } +} diff --git a/library/std/src/sys_common/mod.rs b/library/std/src/sys_common/mod.rs index 069b13e9d85ea..92d6de67a8bb7 100644 --- a/library/std/src/sys_common/mod.rs +++ b/library/std/src/sys_common/mod.rs @@ -24,6 +24,7 @@ pub mod backtrace; pub mod fs; pub mod io; pub mod lazy_box; +pub mod locks; pub mod memchr; pub mod once; pub mod process; diff --git a/library/std/src/sys_common/remutex.rs b/library/std/src/sys_common/remutex.rs index 4c054da64714c..21a7db91e18af 100644 --- a/library/std/src/sys_common/remutex.rs +++ b/library/std/src/sys_common/remutex.rs @@ -5,7 +5,7 @@ use crate::cell::UnsafeCell; use crate::ops::Deref; use crate::panic::{RefUnwindSafe, UnwindSafe}; use crate::sync::atomic::{AtomicUsize, Ordering::Relaxed}; -use crate::sys::locks as sys; +use crate::sys_common::locks as sys; /// A re-entrant mutual exclusion ///