diff options
Diffstat (limited to 'include/all-io.h')
-rw-r--r-- | include/all-io.h | 8 |
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) |