about summary refs log tree commit diff
path: root/library/std/src/sys
diff options
context:
space:
mode:
authorMartin Kröning <martin.kroening@eonerc.rwth-aachen.de>2024-08-25 20:49:23 +0200
committerMartin Kröning <martin.kroening@eonerc.rwth-aachen.de>2024-08-25 20:49:23 +0200
commit687c8a1eabf039be5cccc9cfefb55dd825378b02 (patch)
treee12d565d6d8e1e27a56ab636baf3e87ab379a206 /library/std/src/sys
parent1a94d839be8b248b972b9e022cb940d56de72fa1 (diff)
downloadrust-687c8a1eabf039be5cccc9cfefb55dd825378b02.tar.gz
rust-687c8a1eabf039be5cccc9cfefb55dd825378b02.zip
pal/hermit: correctly round up microseconds in `Thread::sleep`
Signed-off-by: Martin Kröning <martin.kroening@eonerc.rwth-aachen.de>
Diffstat (limited to 'library/std/src/sys')
-rw-r--r--library/std/src/sys/pal/hermit/thread.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/library/std/src/sys/pal/hermit/thread.rs b/library/std/src/sys/pal/hermit/thread.rs
index 6321f92e3d9..bc70b3ac170 100644
--- a/library/std/src/sys/pal/hermit/thread.rs
+++ b/library/std/src/sys/pal/hermit/thread.rs
@@ -77,8 +77,10 @@ impl Thread {
 
     #[inline]
     pub fn sleep(dur: Duration) {
+        let micros = dur.as_micros() + if dur.subsec_nanos() % 1_000 > 0 { 1 } else { 0 };
+
         unsafe {
-            hermit_abi::usleep(dur.as_micros() as u64);
+            hermit_abi::usleep(micros as u64);
         }
     }