diff options
Diffstat (limited to 'crates/runner/src/jobserver.rs')
-rw-r--r-- | crates/runner/src/jobserver.rs | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/crates/runner/src/jobserver.rs b/crates/runner/src/jobserver.rs index 2422a75..b0b88cd 100644 --- a/crates/runner/src/jobserver.rs +++ b/crates/runner/src/jobserver.rs @@ -1,5 +1,5 @@ use std::{ - os::fd::{AsRawFd, FromRawFd, OwnedFd}, + os::fd::{AsFd, AsRawFd, OwnedFd}, slice, }; @@ -18,13 +18,10 @@ pub struct Jobserver { impl Jobserver { pub fn new(tokens: usize) -> Result<Jobserver> { - let (piper, pipew) = - unistd::pipe2(OFlag::O_CLOEXEC | OFlag::O_NONBLOCK).context("pipe()")?; - let r = unsafe { OwnedFd::from_raw_fd(piper) }; - let w = unsafe { OwnedFd::from_raw_fd(pipew) }; + let (r, w) = unistd::pipe2(OFlag::O_CLOEXEC | OFlag::O_NONBLOCK).context("pipe()")?; for _ in 0..tokens { - if unistd::write(w.as_raw_fd(), b"+").is_err() { + if unistd::write(w.as_fd(), b"+").is_err() { break; } } @@ -36,8 +33,8 @@ impl Jobserver { pub fn wait(&mut self) -> u8 { loop { poll::poll( - &mut [poll::PollFd::new(&self.r, poll::PollFlags::POLLIN)], - -1, + &mut [poll::PollFd::new(self.r.as_fd(), poll::PollFlags::POLLIN)], + poll::PollTimeout::NONE, ) .expect("poll()"); @@ -59,7 +56,7 @@ impl Jobserver { } pub fn post(&mut self, token: u8) { - let n = unistd::write(self.w.as_raw_fd(), slice::from_ref(&token)).expect("write()"); + let n = unistd::write(self.w.as_fd(), slice::from_ref(&token)).expect("write()"); assert!(n == 1); } |