summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjdike <jdike>2003-08-29 16:45:14 +0000
committerjdike <jdike>2003-08-29 16:45:14 +0000
commitccb9dfde59193b67239438f473ab6a7043bec33f (patch)
tree6a1247c459d3cb211bd5d50957f52146d32d36d8
parentedb3890bde9f2d1095fa6948195c79d58f812d3d (diff)
downloaduml-history-ccb9dfde59193b67239438f473ab6a7043bec33f.tar.gz
os_{read,write}_file now handle -EINTR gracefully.
-rw-r--r--arch/um/os-Linux/file.c10
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);