summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-10-24 20:13:13 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-10-24 20:15:15 +0200
commit4604ddfb40c10d8f33fa2993c2c3c84bbe993e55 (patch)
tree7729954d8bde192030c6241f44efe011aa4792a8
parent1cee8a8ca62f49a4308b25b21b4653fb4c0ed697 (diff)
downloadrebel-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.rs4
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,