diff options
author | jdike <jdike> | 2003-08-29 16:45:14 +0000 |
---|---|---|
committer | jdike <jdike> | 2003-08-29 16:45:14 +0000 |
commit | ccb9dfde59193b67239438f473ab6a7043bec33f (patch) | |
tree | 6a1247c459d3cb211bd5d50957f52146d32d36d8 | |
parent | edb3890bde9f2d1095fa6948195c79d58f812d3d (diff) | |
download | uml-history-ccb9dfde59193b67239438f473ab6a7043bec33f.tar.gz |
os_{read,write}_file now handle -EINTR gracefully.
-rw-r--r-- | arch/um/os-Linux/file.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c index 93e9f93..751cdfe 100644 --- a/arch/um/os-Linux/file.c +++ b/arch/um/os-Linux/file.c @@ -120,7 +120,10 @@ int os_read_file(int fd, void *buf, int len) return(-EFAULT); #endif - n = read(fd, buf, len); + do { + n = read(fd, buf, len); + } while((n < 0) && (errno == EINTR)); + if(n < 0) return(-errno); return(n); @@ -138,7 +141,10 @@ int os_write_file(int fd, void *buf, int count) return(-EFAULT); #endif - n = write(fd, buf, count); + do { + n = write(fd, buf, count); + } while((n < 0) && (errno == EINTR)); + if(n < 0) return(-errno); return(n); |