Stubdom: add support for file creation.
Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
diff -r 73ec21ad5dc7 extras/mini-os/include/fcntl.h
--- a/extras/mini-os/include/fcntl.h Tue Mar 11 16:01:04 2008 +0000
+++ b/extras/mini-os/include/fcntl.h Tue Mar 11 17:35:14 2008 +0000
@@ -1,5 +1,9 @@
#ifndef _I386_FCNTL_H
#define _I386_FCNTL_H
+
+#ifdef HAVE_LIBC
+#include_next <fcntl.h>
+#else
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
located on an ext2 file system */
@@ -90,3 +94,5 @@ int open(const char *path, int flags, ..
int open(const char *path, int flags, ...);
int fcntl(int fd, int cmd, ...);
#endif
+
+#endif
diff -r 73ec21ad5dc7 extras/mini-os/lib/sys.c
--- a/extras/mini-os/lib/sys.c Tue Mar 11 16:01:04 2008 +0000
+++ b/extras/mini-os/lib/sys.c Tue Mar 11 17:35:14 2008 +0000
@@ -172,8 +172,26 @@ int open(const char *pathname, int flags
printk("open(%s) -> %d\n", pathname, fd);
return fd;
}
- printk("open(%s)", pathname);
- fs_fd = fs_open(fs_import, (void *) pathname);
+ printk("open(%s, %x)", pathname, flags);
+ switch (flags & ~O_ACCMODE) {
+ case 0:
+ fs_fd = fs_open(fs_import, (void *) pathname);
+ break;
+ case O_CREAT|O_TRUNC:
+ {
+ va_list ap;
+ mode_t mode;
+ va_start(ap, flags);
+ mode = va_arg(ap, mode_t);
+ va_end(ap);
+ fs_fd = fs_create(fs_import, (void *) pathname, 0, mode);
+ break;
+ }
+ default:
+ printk(" unsupported flags\n");
+ stack_walk();
+ do_exit();
+ }
if (fs_fd < 0) {
errno = EIO;
return -1;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|