2011-12-02 21:25:29 +01:00
|
|
|
changeset: 24211:8ddac056a89e
|
|
|
|
user: Olaf Hering <olaf@aepfle.de>
|
|
|
|
date: Sun Nov 20 17:01:39 2011 +0100
|
|
|
|
files: tools/xenpaging/file_ops.c
|
|
|
|
description:
|
2011-11-03 23:59:30 +01:00
|
|
|
xenpaging: simplify file_op
|
|
|
|
|
2011-12-02 21:25:29 +01:00
|
|
|
Catch lseek() errors.
|
2011-11-03 23:59:30 +01:00
|
|
|
Use -1 as return value and let caller read errno.
|
|
|
|
Remove const casts from buffer pointers, the page is writeable.
|
|
|
|
Use wrapper for write() which matches the read() prototype.
|
|
|
|
Remove unused stdarg.h inclusion.
|
|
|
|
Remove unused macro.
|
|
|
|
|
|
|
|
Signed-off-by: Olaf Hering <olaf@aepfle.de>
|
2011-12-02 21:25:29 +01:00
|
|
|
Committed-by: Ian Jackson <ian.jackson.citrix.com>
|
|
|
|
|
2011-11-03 23:59:30 +01:00
|
|
|
|
|
|
|
---
|
|
|
|
tools/xenpaging/file_ops.c | 29 +++++++++--------------------
|
|
|
|
1 file changed, 9 insertions(+), 20 deletions(-)
|
|
|
|
|
|
|
|
Index: xen-4.1.2-testing/tools/xenpaging/file_ops.c
|
|
|
|
===================================================================
|
|
|
|
--- xen-4.1.2-testing.orig/tools/xenpaging/file_ops.c
|
|
|
|
+++ xen-4.1.2-testing/tools/xenpaging/file_ops.c
|
|
|
|
@@ -21,55 +21,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
#include <unistd.h>
|
|
|
|
-#include <stdarg.h>
|
|
|
|
#include <xc_private.h>
|
|
|
|
|
|
|
|
-
|
|
|
|
-#define page_offset(_pfn) (((off_t)(_pfn)) << PAGE_SHIFT)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
static int file_op(int fd, void *page, int i,
|
|
|
|
- ssize_t (*fn)(int, const void *, size_t))
|
|
|
|
+ ssize_t (*fn)(int, void *, size_t))
|
|
|
|
{
|
|
|
|
off_t seek_ret;
|
|
|
|
- int total;
|
|
|
|
+ int total = 0;
|
|
|
|
int bytes;
|
|
|
|
- int ret;
|
|
|
|
|
|
|
|
seek_ret = lseek(fd, i << PAGE_SHIFT, SEEK_SET);
|
|
|
|
+ if ( seek_ret == (off_t)-1 )
|
|
|
|
+ return -1;
|
|
|
|
|
|
|
|
- total = 0;
|
|
|
|
while ( total < PAGE_SIZE )
|
|
|
|
{
|
|
|
|
bytes = fn(fd, page + total, PAGE_SIZE - total);
|
|
|
|
if ( bytes <= 0 )
|
|
|
|
- {
|
|
|
|
- ret = -errno;
|
|
|
|
- goto err;
|
|
|
|
- }
|
|
|
|
+ return -1;
|
|
|
|
|
|
|
|
total += bytes;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
-
|
|
|
|
- err:
|
|
|
|
- return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
-static ssize_t my_read(int fd, const void *buf, size_t count)
|
|
|
|
+static ssize_t my_write(int fd, void *buf, size_t count)
|
|
|
|
{
|
|
|
|
- return read(fd, (void *)buf, count);
|
|
|
|
+ return write(fd, buf, count);
|
|
|
|
}
|
|
|
|
|
|
|
|
int read_page(int fd, void *page, int i)
|
|
|
|
{
|
|
|
|
- return file_op(fd, page, i, &my_read);
|
|
|
|
+ return file_op(fd, page, i, &read);
|
|
|
|
}
|
|
|
|
|
|
|
|
int write_page(int fd, void *page, int i)
|
|
|
|
{
|
|
|
|
- return file_op(fd, page, i, &write);
|
|
|
|
+ return file_op(fd, page, i, &my_write);
|
|
|
|
}
|
|
|
|
|
|
|
|
|