forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#95173 - m-ou-se:sys-locks-module, r=dtolnay
Move std::sys::{mutex, condvar, rwlock} to std::sys::locks. This cleans up the the std::sys modules a bit by putting the locks in a single module called `locks` rather than spread over the three modules `mutex`, `condvar`, and `rwlock`. This makes it easier to organise lock implementations, which helps with rust-lang#93740.
- Loading branch information
Showing
26 changed files
with
127 additions
and
92 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
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}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
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); | ||
} | ||
} |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
library/std/src/sys/unsupported/condvar.rs → .../std/src/sys/unsupported/locks/condvar.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
use crate::sys::mutex::Mutex; | ||
use crate::sys::locks::Mutex; | ||
use crate::time::Duration; | ||
|
||
pub struct Condvar {} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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}; |
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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}; |
File renamed without changes.
File renamed without changes.
Oops, something went wrong.