summaryrefslogtreecommitdiffstats
path: root/include/all-io.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/all-io.h')
-rw-r--r--include/all-io.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/include/all-io.h b/include/all-io.h
index 424ab7d3f..2546cff1b 100644
--- a/include/all-io.h
+++ b/include/all-io.h
@@ -29,7 +29,7 @@ static inline int write_all(int fd, const void *buf, size_t count)
} else if (errno != EINTR && errno != EAGAIN)
return -1;
if (errno == EAGAIN) /* Try later, *sigh* */
- usleep(10000);
+ xusleep(250000);
}
return 0;
}
@@ -49,7 +49,7 @@ static inline int fwrite_all(const void *ptr, size_t size,
} else if (errno != EINTR && errno != EAGAIN)
return -1;
if (errno == EAGAIN) /* Try later, *sigh* */
- usleep(10000);
+ xusleep(250000);
}
return 0;
}
@@ -65,8 +65,10 @@ static inline ssize_t read_all(int fd, char *buf, size_t count)
ret = read(fd, buf, count);
if (ret <= 0) {
if ((errno == EAGAIN || errno == EINTR || ret == 0) &&
- (tries++ < 5))
+ (tries++ < 5)) {
+ xusleep(250000);
continue;
+ }
return c ? c : -1;
}
if (ret > 0)