diff --git a/src/sync/mod.rs b/src/sync/mod.rs index 6c2cdd784d..9f56df5939 100644 --- a/src/sync/mod.rs +++ b/src/sync/mod.rs @@ -23,7 +23,7 @@ pub use self::{ use crate::{ error::Errno, header::{ - errno::{EAGAIN, ETIMEDOUT}, + errno::{EAGAIN, EINTR, ETIMEDOUT}, time::timespec, }, out::Out, @@ -109,7 +109,7 @@ pub unsafe fn futex_wait_ptr( deadline_opt: Option<×pec>, ) -> FutexWaitResult { match unsafe { Sys::futex_wait(ptr.cast(), value.conv(), deadline_opt) } { - Ok(()) => FutexWaitResult::Waited, + Ok(()) | Err(Errno(EINTR)) => FutexWaitResult::Waited, Err(Errno(EAGAIN)) => FutexWaitResult::Stale, Err(Errno(ETIMEDOUT)) if deadline_opt.is_some() => FutexWaitResult::TimedOut, Err(other) => {