]> git.proxmox.com Git - rustc.git/blame - src/libstd/sys/hermit/rwlock.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / src / libstd / sys / hermit / rwlock.rs
CommitLineData
e74abb32
XL
1use super::mutex::Mutex;
2
3pub struct RWLock {
60c5eb7d 4 mutex: Mutex,
e74abb32
XL
5}
6
7unsafe impl Send for RWLock {}
8unsafe impl Sync for RWLock {}
9
10impl RWLock {
11 pub const fn new() -> RWLock {
60c5eb7d 12 RWLock { mutex: Mutex::new() }
e74abb32
XL
13 }
14
15 #[inline]
16 pub unsafe fn read(&self) {
17 self.mutex.lock();
18 }
19
20 #[inline]
21 pub unsafe fn try_read(&self) -> bool {
22 self.mutex.try_lock()
23 }
24
25 #[inline]
26 pub unsafe fn write(&self) {
27 self.mutex.lock();
28 }
29
30 #[inline]
31 pub unsafe fn try_write(&self) -> bool {
32 self.mutex.try_lock()
33 }
34
35 #[inline]
36 pub unsafe fn read_unlock(&self) {
37 self.mutex.unlock();
38 }
39
40 #[inline]
41 pub unsafe fn write_unlock(&self) {
42 self.mutex.unlock();
43 }
44
45 #[inline]
46 pub unsafe fn destroy(&self) {
47 self.mutex.destroy();
48 }
49}