Call poll() only when it's needed in fd_{read,write}_all()

This commit is contained in:
angt
2015-11-02 12:44:57 +01:00
parent 4740089f81
commit 8e9e5d8e91

View File

@@ -269,15 +269,17 @@ static ssize_t fd_read_all (int fd, void *data, size_t size)
};
while (done<size) {
poll(&pollfd, 1, -1);
ssize_t ret = fd_read(fd, data+done, size-done);
if (!ret)
break;
if (ret>0)
done += ret;
if (ret<0) {
poll(&pollfd, 1, -1);
continue;
}
done += ret;
}
return done;
@@ -293,15 +295,17 @@ static ssize_t fd_write_all (int fd, const void *data, size_t size)
};
while (done<size) {
poll(&pollfd, 1, -1);
ssize_t ret = fd_write(fd, data+done, size-done);
if (!ret)
break;
if (ret>0)
done += ret;
if (ret<0) {
poll(&pollfd, 1, -1);
continue;
}
done += ret;
}
return done;