diff --git a/src/platform/redox/epoll.rs b/src/platform/redox/epoll.rs index 49462c4a1f1bf40ce1e112c34ec6648e22405550..3274860a1b62037d1f516f3a8a44f421d6e55cfa 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) } }