]> git.lizzy.rs Git - rust.git/blobdiff - library/std/src/sys/hermit/condvar.rs
`#![deny(unsafe_op_in_unsafe_fn)]` in sys/hermit
[rust.git] / library / std / src / sys / hermit / condvar.rs
index 52c8c3b17e8262571775b4a41b1ab543fbd78b39..662dc9394a36f228a24bee1313b3619a9ebe6afc 100644 (file)
@@ -1,3 +1,5 @@
+#![deny(unsafe_op_in_unsafe_fn)]
+
 use crate::ffi::c_void;
 use crate::ptr;
 use crate::sync::atomic::{AtomicUsize, Ordering::SeqCst};
@@ -23,33 +25,43 @@ pub const fn new() -> Condvar {
     }
 
     pub unsafe fn init(&mut self) {
-        let _ = abi::sem_init(&mut self.sem1 as *mut *const c_void, 0);
-        let _ = abi::sem_init(&mut self.sem2 as *mut *const c_void, 0);
+        unsafe {
+            let _ = abi::sem_init(&mut self.sem1 as *mut *const c_void, 0);
+            let _ = abi::sem_init(&mut self.sem2 as *mut *const c_void, 0);
+        }
     }
 
     pub unsafe fn notify_one(&self) {
         if self.counter.load(SeqCst) > 0 {
             self.counter.fetch_sub(1, SeqCst);
-            abi::sem_post(self.sem1);
-            abi::sem_timedwait(self.sem2, 0);
+            unsafe {
+                abi::sem_post(self.sem1);
+                abi::sem_timedwait(self.sem2, 0);
+            }
         }
     }
 
     pub unsafe fn notify_all(&self) {
         let counter = self.counter.swap(0, SeqCst);
         for _ in 0..counter {
-            abi::sem_post(self.sem1);
+            unsafe {
+                abi::sem_post(self.sem1);
+            }
         }
         for _ in 0..counter {
-            abi::sem_timedwait(self.sem2, 0);
+            unsafe {
+                abi::sem_timedwait(self.sem2, 0);
+            }
         }
     }
 
     pub unsafe fn wait(&self, mutex: &Mutex) {
         self.counter.fetch_add(1, SeqCst);
         mutex.unlock();
-        abi::sem_timedwait(self.sem1, 0);
-        abi::sem_post(self.sem2);
+        unsafe {
+            abi::sem_timedwait(self.sem1, 0);
+            abi::sem_post(self.sem2);
+        }
         mutex.lock();
     }
 
@@ -58,7 +70,9 @@ pub unsafe fn wait_timeout(&self, _mutex: &Mutex, _dur: Duration) -> bool {
     }
 
     pub unsafe fn destroy(&self) {
-        let _ = abi::sem_destroy(self.sem1);
-        let _ = abi::sem_destroy(self.sem2);
+        unsafe {
+            let _ = abi::sem_destroy(self.sem1);
+            let _ = abi::sem_destroy(self.sem2);
+        }
     }
 }