unix: handle EINTR in uv_resident_set_memory on AIX and SunOS
This commit is contained in:
parent
12d0dd48e3
commit
ff645d3aa2
@ -997,6 +997,7 @@ void uv__process_title_cleanup(void) {
|
|||||||
int uv_resident_set_memory(size_t* rss) {
|
int uv_resident_set_memory(size_t* rss) {
|
||||||
char pp[64];
|
char pp[64];
|
||||||
psinfo_t psinfo;
|
psinfo_t psinfo;
|
||||||
|
ssize_t nread;
|
||||||
int err;
|
int err;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
@ -1006,11 +1007,16 @@ int uv_resident_set_memory(size_t* rss) {
|
|||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
return UV__ERR(errno);
|
return UV__ERR(errno);
|
||||||
|
|
||||||
/* FIXME(bnoordhuis) Handle EINTR. */
|
do
|
||||||
|
nread = read(fd, &psinfo, sizeof(psinfo));
|
||||||
|
while (nread == -1 && errno == EINTR);
|
||||||
|
|
||||||
err = UV_EINVAL;
|
err = UV_EINVAL;
|
||||||
if (read(fd, &psinfo, sizeof(psinfo)) == sizeof(psinfo)) {
|
if (nread == (ssize_t) sizeof(psinfo)) {
|
||||||
*rss = (size_t)psinfo.pr_rssize * 1024;
|
*rss = (size_t)psinfo.pr_rssize * 1024;
|
||||||
err = 0;
|
err = 0;
|
||||||
|
} else if (nread < 0) {
|
||||||
|
err = UV__ERR(errno);
|
||||||
}
|
}
|
||||||
uv__close(fd);
|
uv__close(fd);
|
||||||
|
|
||||||
|
|||||||
@ -612,6 +612,7 @@ void uv__fs_event_close(uv_fs_event_t* handle) {
|
|||||||
|
|
||||||
int uv_resident_set_memory(size_t* rss) {
|
int uv_resident_set_memory(size_t* rss) {
|
||||||
psinfo_t psinfo;
|
psinfo_t psinfo;
|
||||||
|
ssize_t nread;
|
||||||
int err;
|
int err;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
@ -619,11 +620,16 @@ int uv_resident_set_memory(size_t* rss) {
|
|||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
return UV__ERR(errno);
|
return UV__ERR(errno);
|
||||||
|
|
||||||
/* FIXME(bnoordhuis) Handle EINTR. */
|
do
|
||||||
|
nread = read(fd, &psinfo, sizeof(psinfo));
|
||||||
|
while (nread == -1 && errno == EINTR);
|
||||||
|
|
||||||
err = UV_EINVAL;
|
err = UV_EINVAL;
|
||||||
if (read(fd, &psinfo, sizeof(psinfo)) == sizeof(psinfo)) {
|
if (nread == (ssize_t) sizeof(psinfo)) {
|
||||||
*rss = (size_t)psinfo.pr_rssize * 1024;
|
*rss = (size_t)psinfo.pr_rssize * 1024;
|
||||||
err = 0;
|
err = 0;
|
||||||
|
} else if (nread < 0) {
|
||||||
|
err = UV__ERR(errno);
|
||||||
}
|
}
|
||||||
uv__close(fd);
|
uv__close(fd);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user