diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2022-04-14 11:11:41 +0200 | 
|---|---|---|
| committer | Mara Bos <m-ou.se@m-ou.se> | 2022-04-16 11:30:22 +0200 | 
| commit | 4212de63ab04649ac92a1b4e525d38b73dc5658c (patch) | |
| tree | d56aca6112ccc9302195467bd83a433bad8e3917 /library/std/src/sys/unix/locks/pthread_remutex.rs | |
| parent | 07bb916d44a66d2caba427c7ee132bbeb245977b (diff) | |
| download | rust-4212de63ab04649ac92a1b4e525d38b73dc5658c.tar.gz rust-4212de63ab04649ac92a1b4e525d38b73dc5658c.zip | |
Use a single ReentrantMutex implementation on all platforms.
Diffstat (limited to 'library/std/src/sys/unix/locks/pthread_remutex.rs')
| -rw-r--r-- | library/std/src/sys/unix/locks/pthread_remutex.rs | 46 | 
1 files changed, 0 insertions, 46 deletions
| diff --git a/library/std/src/sys/unix/locks/pthread_remutex.rs b/library/std/src/sys/unix/locks/pthread_remutex.rs deleted file mode 100644 index b006181ee3a..00000000000 --- a/library/std/src/sys/unix/locks/pthread_remutex.rs +++ /dev/null @@ -1,46 +0,0 @@ -use super::pthread_mutex::PthreadMutexAttr; -use crate::cell::UnsafeCell; -use crate::mem::MaybeUninit; -use crate::sys::cvt_nz; - -pub struct ReentrantMutex { - inner: UnsafeCell<libc::pthread_mutex_t>, -} - -unsafe impl Send for ReentrantMutex {} -unsafe impl Sync for ReentrantMutex {} - -impl ReentrantMutex { - pub const unsafe fn uninitialized() -> ReentrantMutex { - ReentrantMutex { inner: UnsafeCell::new(libc::PTHREAD_MUTEX_INITIALIZER) } - } - - pub unsafe fn init(&self) { - let mut attr = MaybeUninit::<libc::pthread_mutexattr_t>::uninit(); - cvt_nz(libc::pthread_mutexattr_init(attr.as_mut_ptr())).unwrap(); - let attr = PthreadMutexAttr(&mut attr); - cvt_nz(libc::pthread_mutexattr_settype(attr.0.as_mut_ptr(), libc::PTHREAD_MUTEX_RECURSIVE)) - .unwrap(); - cvt_nz(libc::pthread_mutex_init(self.inner.get(), attr.0.as_ptr())).unwrap(); - } - - pub unsafe fn lock(&self) { - let result = libc::pthread_mutex_lock(self.inner.get()); - debug_assert_eq!(result, 0); - } - - #[inline] - pub unsafe fn try_lock(&self) -> bool { - libc::pthread_mutex_trylock(self.inner.get()) == 0 - } - - pub unsafe fn unlock(&self) { - let result = libc::pthread_mutex_unlock(self.inner.get()); - debug_assert_eq!(result, 0); - } - - pub unsafe fn destroy(&self) { - let result = libc::pthread_mutex_destroy(self.inner.get()); - debug_assert_eq!(result, 0); - } -} | 
