From 733153f2e550d46fe6f794c969df91368580e0b8 Mon Sep 17 00:00:00 2001
From: Mara Bos <m-ou.se@m-ou.se>
Date: Mon, 21 Mar 2022 15:45:51 +0100
Subject: [PATCH] Move std::sys::{mutex, condvar, rwlock} to std::sys::locks.

---
 library/std/src/sys/hermit/condvar.rs         |  2 +-
 library/std/src/sys/hermit/mod.rs             | 13 ++++++++++---
 library/std/src/sys/hermit/rwlock.rs          |  3 +--
 library/std/src/sys/itron/condvar.rs          |  2 +-
 library/std/src/sys/sgx/condvar.rs            |  2 +-
 library/std/src/sys/sgx/mod.rs                | 13 ++++++++++---
 library/std/src/sys/solid/mod.rs              | 11 +++++++++--
 .../sys/unsupported/{ => locks}/condvar.rs    |  2 +-
 library/std/src/sys/unsupported/locks/mod.rs  |  6 ++++++
 .../src/sys/unsupported/{ => locks}/mutex.rs  |  0
 .../src/sys/unsupported/{ => locks}/rwlock.rs |  0
 library/std/src/sys/unsupported/mod.rs        |  4 +---
 library/std/src/sys/wasi/mod.rs               |  8 ++------
 library/std/src/sys/wasm/atomics/condvar.rs   |  2 +-
 library/std/src/sys/wasm/atomics/rwlock.rs    |  3 +--
 library/std/src/sys/wasm/mod.rs               | 19 ++++++++++---------
 .../src/sys/windows/{ => locks}/condvar.rs    |  4 ++--
 library/std/src/sys/windows/locks/mod.rs      |  6 ++++++
 .../std/src/sys/windows/{ => locks}/mutex.rs  |  0
 .../std/src/sys/windows/{ => locks}/rwlock.rs |  0
 library/std/src/sys/windows/mod.rs            |  4 +---
 21 files changed, 64 insertions(+), 40 deletions(-)
 rename library/std/src/sys/unsupported/{ => locks}/condvar.rs (95%)
 create mode 100644 library/std/src/sys/unsupported/locks/mod.rs
 rename library/std/src/sys/unsupported/{ => locks}/mutex.rs (100%)
 rename library/std/src/sys/unsupported/{ => locks}/rwlock.rs (100%)
 rename library/std/src/sys/windows/{ => locks}/condvar.rs (93%)
 create mode 100644 library/std/src/sys/windows/locks/mod.rs
 rename library/std/src/sys/windows/{ => locks}/mutex.rs (100%)
 rename library/std/src/sys/windows/{ => locks}/rwlock.rs (100%)

diff --git a/library/std/src/sys/hermit/condvar.rs b/library/std/src/sys/hermit/condvar.rs
index b62f21a9dac..f6083530005 100644
--- a/library/std/src/sys/hermit/condvar.rs
+++ b/library/std/src/sys/hermit/condvar.rs
@@ -2,7 +2,7 @@ use crate::ffi::c_void;
 use crate::ptr;
 use crate::sync::atomic::{AtomicUsize, Ordering::SeqCst};
 use crate::sys::hermit::abi;
-use crate::sys::mutex::Mutex;
+use crate::sys::locks::Mutex;
 use crate::time::Duration;
 
 // The implementation is inspired by Andrew D. Birrell's paper
diff --git a/library/std/src/sys/hermit/mod.rs b/library/std/src/sys/hermit/mod.rs
index b798c97448b..08eca423802 100644
--- a/library/std/src/sys/hermit/mod.rs
+++ b/library/std/src/sys/hermit/mod.rs
@@ -22,14 +22,12 @@ pub mod alloc;
 pub mod args;
 #[path = "../unix/cmath.rs"]
 pub mod cmath;
-pub mod condvar;
 pub mod env;
 pub mod fd;
 pub mod fs;
 #[path = "../unsupported/io.rs"]
 pub mod io;
 pub mod memchr;
-pub mod mutex;
 pub mod net;
 pub mod os;
 #[path = "../unix/os_str.rs"]
@@ -40,7 +38,6 @@ pub mod path;
 pub mod pipe;
 #[path = "../unsupported/process.rs"]
 pub mod process;
-pub mod rwlock;
 pub mod stdio;
 pub mod thread;
 pub mod thread_local_dtor;
@@ -48,6 +45,16 @@ pub mod thread_local_dtor;
 pub mod thread_local_key;
 pub mod time;
 
+mod condvar;
+mod mutex;
+mod rwlock;
+
+pub mod locks {
+    pub use super::condvar::*;
+    pub use super::mutex::*;
+    pub use super::rwlock::*;
+}
+
 use crate::io::ErrorKind;
 
 #[allow(unused_extern_crates)]
diff --git a/library/std/src/sys/hermit/rwlock.rs b/library/std/src/sys/hermit/rwlock.rs
index 64eaa2fc482..1cca809764c 100644
--- a/library/std/src/sys/hermit/rwlock.rs
+++ b/library/std/src/sys/hermit/rwlock.rs
@@ -1,6 +1,5 @@
 use crate::cell::UnsafeCell;
-use crate::sys::condvar::Condvar;
-use crate::sys::mutex::Mutex;
+use crate::sys::locks::{Condvar, Mutex};
 
 pub struct RWLock {
     lock: Mutex,
diff --git a/library/std/src/sys/itron/condvar.rs b/library/std/src/sys/itron/condvar.rs
index 2992a6a5429..ed26c528027 100644
--- a/library/std/src/sys/itron/condvar.rs
+++ b/library/std/src/sys/itron/condvar.rs
@@ -1,6 +1,6 @@
 //! POSIX conditional variable implementation based on user-space wait queues.
 use super::{abi, error::expect_success_aborting, spin::SpinMutex, task, time::with_tmos_strong};
-use crate::{mem::replace, ptr::NonNull, sys::mutex::Mutex, time::Duration};
+use crate::{mem::replace, ptr::NonNull, sys::locks::Mutex, time::Duration};
 
 // The implementation is inspired by the queue-based implementation shown in
 // Andrew D. Birrell's paper "Implementing Condition Variables with Semaphores"
diff --git a/library/std/src/sys/sgx/condvar.rs b/library/std/src/sys/sgx/condvar.rs
index 55ac052d975..c9736880b08 100644
--- a/library/std/src/sys/sgx/condvar.rs
+++ b/library/std/src/sys/sgx/condvar.rs
@@ -1,4 +1,4 @@
-use crate::sys::mutex::Mutex;
+use crate::sys::locks::Mutex;
 use crate::time::Duration;
 
 use super::waitqueue::{SpinMutex, WaitQueue, WaitVariable};
diff --git a/library/std/src/sys/sgx/mod.rs b/library/std/src/sys/sgx/mod.rs
index 158c92e7a77..1333edb9881 100644
--- a/library/std/src/sys/sgx/mod.rs
+++ b/library/std/src/sys/sgx/mod.rs
@@ -15,7 +15,6 @@ pub mod alloc;
 pub mod args;
 #[path = "../unix/cmath.rs"]
 pub mod cmath;
-pub mod condvar;
 pub mod env;
 pub mod fd;
 #[path = "../unsupported/fs.rs"]
@@ -23,7 +22,6 @@ pub mod fs;
 #[path = "../unsupported/io.rs"]
 pub mod io;
 pub mod memchr;
-pub mod mutex;
 pub mod net;
 pub mod os;
 #[path = "../unix/os_str.rs"]
@@ -33,12 +31,21 @@ pub mod path;
 pub mod pipe;
 #[path = "../unsupported/process.rs"]
 pub mod process;
-pub mod rwlock;
 pub mod stdio;
 pub mod thread;
 pub mod thread_local_key;
 pub mod time;
 
+mod condvar;
+mod mutex;
+mod rwlock;
+
+pub mod locks {
+    pub use super::condvar::*;
+    pub use super::mutex::*;
+    pub use super::rwlock::*;
+}
+
 // SAFETY: must be called only once during runtime initialization.
 // NOTE: this is not guaranteed to run, for example when Rust code is called externally.
 pub unsafe fn init(argc: isize, argv: *const *const u8) {
diff --git a/library/std/src/sys/solid/mod.rs b/library/std/src/sys/solid/mod.rs
index 049460755d6..492b1a55475 100644
--- a/library/std/src/sys/solid/mod.rs
+++ b/library/std/src/sys/solid/mod.rs
@@ -37,14 +37,21 @@ pub mod path;
 pub mod pipe;
 #[path = "../unsupported/process.rs"]
 pub mod process;
-pub mod rwlock;
 pub mod stdio;
-pub use self::itron::{condvar, mutex, thread};
+pub use self::itron::thread;
 pub mod memchr;
 pub mod thread_local_dtor;
 pub mod thread_local_key;
 pub mod time;
 
+mod rwlock;
+
+pub mod locks {
+    pub use super::itron::condvar::*;
+    pub use super::itron::mutex::*;
+    pub use super::rwlock::*;
+}
+
 // SAFETY: must be called only once during runtime initialization.
 // NOTE: this is not guaranteed to run, for example when Rust code is called externally.
 pub unsafe fn init(_argc: isize, _argv: *const *const u8) {}
diff --git a/library/std/src/sys/unsupported/condvar.rs b/library/std/src/sys/unsupported/locks/condvar.rs
similarity index 95%
rename from library/std/src/sys/unsupported/condvar.rs
rename to library/std/src/sys/unsupported/locks/condvar.rs
index 35d12a69c8a..8dbe03bad9b 100644
--- a/library/std/src/sys/unsupported/condvar.rs
+++ b/library/std/src/sys/unsupported/locks/condvar.rs
@@ -1,4 +1,4 @@
-use crate::sys::mutex::Mutex;
+use crate::sys::locks::Mutex;
 use crate::time::Duration;
 
 pub struct Condvar {}
diff --git a/library/std/src/sys/unsupported/locks/mod.rs b/library/std/src/sys/unsupported/locks/mod.rs
new file mode 100644
index 00000000000..5634f106339
--- /dev/null
+++ b/library/std/src/sys/unsupported/locks/mod.rs
@@ -0,0 +1,6 @@
+mod condvar;
+mod mutex;
+mod rwlock;
+pub use condvar::{Condvar, MovableCondvar};
+pub use mutex::{MovableMutex, Mutex, ReentrantMutex};
+pub use rwlock::{MovableRWLock, RWLock};
diff --git a/library/std/src/sys/unsupported/mutex.rs b/library/std/src/sys/unsupported/locks/mutex.rs
similarity index 100%
rename from library/std/src/sys/unsupported/mutex.rs
rename to library/std/src/sys/unsupported/locks/mutex.rs
diff --git a/library/std/src/sys/unsupported/rwlock.rs b/library/std/src/sys/unsupported/locks/rwlock.rs
similarity index 100%
rename from library/std/src/sys/unsupported/rwlock.rs
rename to library/std/src/sys/unsupported/locks/rwlock.rs
diff --git a/library/std/src/sys/unsupported/mod.rs b/library/std/src/sys/unsupported/mod.rs
index a1276193bda..7bf6d40b76d 100644
--- a/library/std/src/sys/unsupported/mod.rs
+++ b/library/std/src/sys/unsupported/mod.rs
@@ -4,11 +4,10 @@ pub mod alloc;
 pub mod args;
 #[path = "../unix/cmath.rs"]
 pub mod cmath;
-pub mod condvar;
 pub mod env;
 pub mod fs;
 pub mod io;
-pub mod mutex;
+pub mod locks;
 pub mod net;
 pub mod os;
 #[path = "../unix/os_str.rs"]
@@ -17,7 +16,6 @@ pub mod os_str;
 pub mod path;
 pub mod pipe;
 pub mod process;
-pub mod rwlock;
 pub mod stdio;
 pub mod thread;
 #[cfg(target_thread_local)]
diff --git a/library/std/src/sys/wasi/mod.rs b/library/std/src/sys/wasi/mod.rs
index f878941939c..683a07a34dc 100644
--- a/library/std/src/sys/wasi/mod.rs
+++ b/library/std/src/sys/wasi/mod.rs
@@ -22,14 +22,12 @@ pub mod alloc;
 pub mod args;
 #[path = "../unix/cmath.rs"]
 pub mod cmath;
-#[path = "../unsupported/condvar.rs"]
-pub mod condvar;
 pub mod env;
 pub mod fd;
 pub mod fs;
 pub mod io;
-#[path = "../unsupported/mutex.rs"]
-pub mod mutex;
+#[path = "../unsupported/locks/mod.rs"]
+pub mod locks;
 pub mod net;
 pub mod os;
 #[path = "../unix/os_str.rs"]
@@ -40,8 +38,6 @@ pub mod path;
 pub mod pipe;
 #[path = "../unsupported/process.rs"]
 pub mod process;
-#[path = "../unsupported/rwlock.rs"]
-pub mod rwlock;
 pub mod stdio;
 pub mod thread;
 #[path = "../unsupported/thread_local_dtor.rs"]
diff --git a/library/std/src/sys/wasm/atomics/condvar.rs b/library/std/src/sys/wasm/atomics/condvar.rs
index 0c1c076cc91..f06c07c5409 100644
--- a/library/std/src/sys/wasm/atomics/condvar.rs
+++ b/library/std/src/sys/wasm/atomics/condvar.rs
@@ -2,7 +2,7 @@ use crate::arch::wasm32;
 use crate::cmp;
 use crate::mem;
 use crate::sync::atomic::{AtomicUsize, Ordering::SeqCst};
-use crate::sys::mutex::Mutex;
+use crate::sys::locks::Mutex;
 use crate::time::Duration;
 
 pub struct Condvar {
diff --git a/library/std/src/sys/wasm/atomics/rwlock.rs b/library/std/src/sys/wasm/atomics/rwlock.rs
index 64eaa2fc482..1cca809764c 100644
--- a/library/std/src/sys/wasm/atomics/rwlock.rs
+++ b/library/std/src/sys/wasm/atomics/rwlock.rs
@@ -1,6 +1,5 @@
 use crate::cell::UnsafeCell;
-use crate::sys::condvar::Condvar;
-use crate::sys::mutex::Mutex;
+use crate::sys::locks::{Condvar, Mutex};
 
 pub struct RWLock {
     lock: Mutex,
diff --git a/library/std/src/sys/wasm/mod.rs b/library/std/src/sys/wasm/mod.rs
index c81d653a5e3..9f6700caf14 100644
--- a/library/std/src/sys/wasm/mod.rs
+++ b/library/std/src/sys/wasm/mod.rs
@@ -50,22 +50,23 @@ pub mod time;
 cfg_if::cfg_if! {
     if #[cfg(target_feature = "atomics")] {
         #[path = "atomics/condvar.rs"]
-        pub mod condvar;
+        mod condvar;
         #[path = "atomics/mutex.rs"]
-        pub mod mutex;
+        mod mutex;
         #[path = "atomics/rwlock.rs"]
-        pub mod rwlock;
+        mod rwlock;
+        pub mod locks {
+            pub use super::condvar::*;
+            pub use super::mutex::*;
+            pub use super::rwlock::*;
+        }
         #[path = "atomics/futex.rs"]
         pub mod futex;
         #[path = "atomics/thread.rs"]
         pub mod thread;
     } else {
-        #[path = "../unsupported/condvar.rs"]
-        pub mod condvar;
-        #[path = "../unsupported/mutex.rs"]
-        pub mod mutex;
-        #[path = "../unsupported/rwlock.rs"]
-        pub mod rwlock;
+        #[path = "../unsupported/locks/mod.rs"]
+        pub mod locks;
         #[path = "../unsupported/thread.rs"]
         pub mod thread;
     }
diff --git a/library/std/src/sys/windows/condvar.rs b/library/std/src/sys/windows/locks/condvar.rs
similarity index 93%
rename from library/std/src/sys/windows/condvar.rs
rename to library/std/src/sys/windows/locks/condvar.rs
index 44547a5c51a..dfd8cfdceee 100644
--- a/library/std/src/sys/windows/condvar.rs
+++ b/library/std/src/sys/windows/locks/condvar.rs
@@ -1,6 +1,6 @@
 use crate::cell::UnsafeCell;
 use crate::sys::c;
-use crate::sys::mutex::{self, Mutex};
+use crate::sys::locks::{mutex, Mutex};
 use crate::sys::os;
 use crate::time::Duration;
 
@@ -31,7 +31,7 @@ impl Condvar {
         let r = c::SleepConditionVariableSRW(
             self.inner.get(),
             mutex::raw(mutex),
-            super::dur2timeout(dur),
+            crate::sys::windows::dur2timeout(dur),
             0,
         );
         if r == 0 {
diff --git a/library/std/src/sys/windows/locks/mod.rs b/library/std/src/sys/windows/locks/mod.rs
new file mode 100644
index 00000000000..5634f106339
--- /dev/null
+++ b/library/std/src/sys/windows/locks/mod.rs
@@ -0,0 +1,6 @@
+mod condvar;
+mod mutex;
+mod rwlock;
+pub use condvar::{Condvar, MovableCondvar};
+pub use mutex::{MovableMutex, Mutex, ReentrantMutex};
+pub use rwlock::{MovableRWLock, RWLock};
diff --git a/library/std/src/sys/windows/mutex.rs b/library/std/src/sys/windows/locks/mutex.rs
similarity index 100%
rename from library/std/src/sys/windows/mutex.rs
rename to library/std/src/sys/windows/locks/mutex.rs
diff --git a/library/std/src/sys/windows/rwlock.rs b/library/std/src/sys/windows/locks/rwlock.rs
similarity index 100%
rename from library/std/src/sys/windows/rwlock.rs
rename to library/std/src/sys/windows/locks/rwlock.rs
diff --git a/library/std/src/sys/windows/mod.rs b/library/std/src/sys/windows/mod.rs
index 6097e628768..62814eaaa56 100644
--- a/library/std/src/sys/windows/mod.rs
+++ b/library/std/src/sys/windows/mod.rs
@@ -16,13 +16,12 @@ pub mod alloc;
 pub mod args;
 pub mod c;
 pub mod cmath;
-pub mod condvar;
 pub mod env;
 pub mod fs;
 pub mod handle;
 pub mod io;
+pub mod locks;
 pub mod memchr;
-pub mod mutex;
 pub mod net;
 pub mod os;
 pub mod os_str;
@@ -30,7 +29,6 @@ pub mod path;
 pub mod pipe;
 pub mod process;
 pub mod rand;
-pub mod rwlock;
 pub mod thread;
 pub mod thread_local_dtor;
 pub mod thread_local_key;