summaryrefslogtreecommitdiffstats
path: root/crates/runner/src/jobserver.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/runner/src/jobserver.rs')
-rw-r--r--crates/runner/src/jobserver.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/crates/runner/src/jobserver.rs b/crates/runner/src/jobserver.rs
index 3b6c856..d4c670c 100644
--- a/crates/runner/src/jobserver.rs
+++ b/crates/runner/src/jobserver.rs
@@ -1,4 +1,7 @@
-use std::{os::unix::prelude::RawFd, slice};
+use std::{
+ os::{fd::BorrowedFd, unix::prelude::RawFd},
+ slice,
+};
use nix::{errno::Errno, fcntl::OFlag, poll, unistd};
@@ -27,10 +30,14 @@ impl Jobserver {
Ok(Jobserver { tokens, r, w })
}
+ fn read_fd(&self) -> BorrowedFd<'_> {
+ unsafe { BorrowedFd::borrow_raw(self.r) }
+ }
+
pub fn wait(&mut self) -> u8 {
loop {
poll::poll(
- &mut [poll::PollFd::new(self.r, poll::PollFlags::POLLIN)],
+ &mut [poll::PollFd::new(&self.read_fd(), poll::PollFlags::POLLIN)],
-1,
)
.expect("poll()");