diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-10-24 20:13:13 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-10-24 20:15:15 +0200 |
commit | 4604ddfb40c10d8f33fa2993c2c3c84bbe993e55 (patch) | |
tree | 7729954d8bde192030c6241f44efe011aa4792a8 | |
parent | 1cee8a8ca62f49a4308b25b21b4653fb4c0ed697 (diff) | |
download | rebel-4604ddfb40c10d8f33fa2993c2c3c84bbe993e55.tar rebel-4604ddfb40c10d8f33fa2993c2c3c84bbe993e55.zip |
jobserver: always make the reading pipe end nonblocking
Match the behaviour of GNU Make.
-rw-r--r-- | src/runner/container/jobserver.rs | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/runner/container/jobserver.rs b/src/runner/container/jobserver.rs index 57a402b..29fb064 100644 --- a/src/runner/container/jobserver.rs +++ b/src/runner/container/jobserver.rs @@ -13,9 +13,8 @@ pub struct Jobserver { impl Jobserver { pub fn new(tokens: usize) -> Result<Jobserver> { - let (r, w) = unistd::pipe2(OFlag::O_CLOEXEC).context("pipe()")?; + let (r, w) = unistd::pipe2(OFlag::O_CLOEXEC | OFlag::O_NONBLOCK).context("pipe()")?; - unix::set_blocking(w, false)?; for _ in 0..tokens { if let Err(_) = unistd::write(w, b"+") { break; @@ -28,7 +27,6 @@ impl Jobserver { pub fn wait(&mut self) -> u8 { loop { - // Make sets the jobserver FD to nonblocking mode poll::poll( &mut [poll::PollFd::new(self.r, poll::PollFlags::POLLIN)], -1, |