From d2cb0959f3ce23b4e2fceffe6dbfdff806ce4800 Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jeremy@system76.com> Date: Sun, 28 Apr 2019 13:10:34 -0600 Subject: [PATCH] Fix redox epoll timeout --- src/platform/redox/epoll.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/platform/redox/epoll.rs b/src/platform/redox/epoll.rs index 49462c4a..3274860a 100644 --- a/src/platform/redox/epoll.rs +++ b/src/platform/redox/epoll.rs @@ -68,15 +68,6 @@ impl PalEpoll for Sys { match File::open(c_str!("time:4"), O_RDWR) { Err(_) => return -1, Ok(mut timer) => { - let mut time = TimeSpec::default(); - if let Err(err) = timer.read(&mut time) { - return -1; - } - time.tv_nsec += timeout; - if let Err(err) = timer.write(&time) { - return -1; - } - if Sys::write( epfd, &Event { @@ -89,6 +80,16 @@ impl PalEpoll for Sys { return -1; } + let mut time = TimeSpec::default(); + if let Err(err) = timer.read(&mut time) { + return -1; + } + time.tv_sec += (timeout as i64) / 1000; + time.tv_nsec += (timeout % 1000) * 1000000; + if let Err(err) = timer.write(&time) { + return -1; + } + Some(timer) } } -- GitLab