about summary refs log tree commit diff
path: root/library/std/src/sys/unix/locks/mod.rs
diff options
context:
space:
mode:
authorMara Bos <m-ou.se@m-ou.se>2022-03-17 12:29:07 +0100
committerMara Bos <m-ou.se@m-ou.se>2022-03-23 14:58:44 +0100
commit7f26adeac19f78f0277637d1e798439d8f89b853 (patch)
tree697bbce1e056a1734cbb271f44622a7c0e44dc02 /library/std/src/sys/unix/locks/mod.rs
parent73d63488e4a23de46a6312525ccb7b4d04a7c55f (diff)
downloadrust-7f26adeac19f78f0277637d1e798439d8f89b853.tar.gz
rust-7f26adeac19f78f0277637d1e798439d8f89b853.zip
Replace Linux Mutex and Condvar with futex based ones.
Diffstat (limited to 'library/std/src/sys/unix/locks/mod.rs')
-rw-r--r--library/std/src/sys/unix/locks/mod.rs32
1 files changed, 24 insertions, 8 deletions
diff --git a/library/std/src/sys/unix/locks/mod.rs b/library/std/src/sys/unix/locks/mod.rs
index f07a9f93b79..30e9f407eec 100644
--- a/library/std/src/sys/unix/locks/mod.rs
+++ b/library/std/src/sys/unix/locks/mod.rs
@@ -1,8 +1,24 @@
-mod pthread_condvar;
-mod pthread_mutex;
-mod pthread_remutex;
-mod pthread_rwlock;
-pub use pthread_condvar::{Condvar, MovableCondvar};
-pub use pthread_mutex::{MovableMutex, Mutex};
-pub use pthread_remutex::ReentrantMutex;
-pub use pthread_rwlock::{MovableRWLock, RWLock};
+cfg_if::cfg_if! {
+    if #[cfg(any(
+        target_os = "linux",
+        target_os = "android",
+    ))] {
+        mod futex;
+        #[allow(dead_code)]
+        mod pthread_mutex; // Only used for PthreadMutexAttr, needed by pthread_remutex.
+        mod pthread_remutex; // FIXME: Implement this using a futex
+        mod pthread_rwlock; // FIXME: Implement this using a futex
+        pub use futex::{Mutex, MovableMutex, Condvar, MovableCondvar};
+        pub use pthread_remutex::ReentrantMutex;
+        pub use pthread_rwlock::{RWLock, MovableRWLock};
+    } else {
+        mod pthread_mutex;
+        mod pthread_remutex;
+        mod pthread_rwlock;
+        mod pthread_condvar;
+        pub use pthread_mutex::{Mutex, MovableMutex};
+        pub use pthread_remutex::ReentrantMutex;
+        pub use pthread_rwlock::{RWLock, MovableRWLock};
+        pub use pthread_condvar::{Condvar, MovableCondvar};
+    }
+}