summaryrefslogtreecommitdiff
path: root/src/sys/select.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/sys/select.rs')
-rw-r--r--src/sys/select.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/sys/select.rs b/src/sys/select.rs
index 28b664aa..c9e925dd 100644
--- a/src/sys/select.rs
+++ b/src/sys/select.rs
@@ -1,6 +1,6 @@
use std::ptr::null_mut;
use std::os::unix::io::RawFd;
-use libc::c_int;
+use libc::{c_int, timeval};
use {Errno, Result};
use sys::time::TimeVal;
@@ -56,8 +56,7 @@ impl FdSet {
}
mod ffi {
- use libc::c_int;
- use sys::time::TimeVal;
+ use libc::{c_int, timeval};
use super::FdSet;
extern {
@@ -65,7 +64,7 @@ mod ffi {
readfds: *mut FdSet,
writefds: *mut FdSet,
errorfds: *mut FdSet,
- timeout: *mut TimeVal) -> c_int;
+ timeout: *mut timeval) -> c_int;
}
}
@@ -77,7 +76,8 @@ pub fn select(nfds: c_int,
let readfds = readfds.map(|set| set as *mut FdSet).unwrap_or(null_mut());
let writefds = writefds.map(|set| set as *mut FdSet).unwrap_or(null_mut());
let errorfds = errorfds.map(|set| set as *mut FdSet).unwrap_or(null_mut());
- let timeout = timeout.map(|tv| tv as *mut TimeVal).unwrap_or(null_mut());
+ let timeout = timeout.map(|tv| &mut tv.timeval() as *mut timeval)
+ .unwrap_or(null_mut());
let res = unsafe {
ffi::select(nfds, readfds, writefds, errorfds, timeout)