diff options
| author | Wim Van Sebroeck <wim@iguana.be> | 2007-05-11 19:03:13 +0000 | 
|---|---|---|
| committer | Wim Van Sebroeck <wim@iguana.be> | 2007-05-11 19:03:13 +0000 | 
| commit | 5c34202b8bf942da411b6599668a76b07449bbfd (patch) | |
| tree | 5719c361321eaddc8e4f1b0c8a7994f0e9a6fdd3 /arch/um/os-Linux/file.c | |
| parent | 0d4804b31f91cfbcff6d62af0bc09a893a1c8ae0 (diff) | |
| parent | 1f8a6b658a943b4f04a1fc7b3a420360202c86cd (diff) | |
Merge /pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/um/os-Linux/file.c')
| -rw-r--r-- | arch/um/os-Linux/file.c | 47 | 
1 files changed, 7 insertions, 40 deletions
diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c index 371b4335f46..6f92f732d25 100644 --- a/arch/um/os-Linux/file.c +++ b/arch/um/os-Linux/file.c @@ -18,7 +18,6 @@  #include "os.h"  #include "user.h"  #include "kern_util.h" -#include "user_util.h"  static void copy_stat(struct uml_stat *dst, struct stat64 *src)  { @@ -291,54 +290,22 @@ int os_seek_file(int fd, __u64 offset)  	return 0;  } -static int fault_buffer(void *start, int len, -			int (*copy_proc)(void *addr, void *buf, int len)) -{ -	int page = getpagesize(), i; -	char c; - -	for(i = 0; i < len; i += page){ -		if((*copy_proc)(start + i, &c, sizeof(c))) -			return -EFAULT; -	} -	if((len % page) != 0){ -		if((*copy_proc)(start + len - 1, &c, sizeof(c))) -			return -EFAULT; -	} -	return 0; -} - -static int file_io(int fd, void *buf, int len, -		   int (*io_proc)(int fd, void *buf, int len), -		   int (*copy_user_proc)(void *addr, void *buf, int len)) +int os_read_file(int fd, void *buf, int len)  { -	int n, err; - -	do { -		n = (*io_proc)(fd, buf, len); -		if((n < 0) && (errno == EFAULT)){ -			err = fault_buffer(buf, len, copy_user_proc); -			if(err) -				return err; -			n = (*io_proc)(fd, buf, len); -		} -	} while((n < 0) && (errno == EINTR)); +	int n = read(fd, buf, len);  	if(n < 0)  		return -errno;  	return n;  } -int os_read_file(int fd, void *buf, int len) -{ -	return file_io(fd, buf, len, (int (*)(int, void *, int)) read, -		       copy_from_user_proc); -} -  int os_write_file(int fd, const void *buf, int len)  { -	return file_io(fd, (void *) buf, len, -		       (int (*)(int, void *, int)) write, copy_to_user_proc); +	int n = write(fd, (void *) buf, len); + +	if(n < 0) +		return -errno; +	return n;  }  int os_file_size(char *file, unsigned long long *size_out)  | 
