Fixed problem with open() mode flags not matching
authorKevin Klues <klueska@ros-dev.(none)>
Tue, 6 Apr 2010 03:53:57 +0000 (20:53 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:40 +0000 (17:35 -0700)
We want the ROS mode flags and the appserver mode flags
to match.  This commit makes them that way.

kern/src/syscall.c
tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/bits/fcntl.h

index 975e00a..d62c1f5 100644 (file)
@@ -765,10 +765,15 @@ intreg_t sys_pread(struct proc* p, int fd, void* buf, int len, int offset)
 
 intreg_t sys_open(struct proc* p, const char* path, int oflag, int mode)
 {
+       printd("File Open, p: %p, path: %s, oflag: %d, mode: 0x%x\n", p, path, oflag, mode);
        char* fn = user_strdup_errno(p,path,PGSIZE);
-       if(fn == NULL)
+       if(fn == NULL) {
+               printd("File Open, user_strdup_errno failed\n");
                return -1;
+       }
+       printd("File Open, About to open\n");
        int ret = ufe(open,PADDR(fn),oflag,mode,0);
+       printd("File Open, res=%d\n", ret);
        user_memdup_free(p,fn);
        return ret;
 }
index 934b972..f5a751d 100644 (file)
 #define        O_RDONLY        0       /* Open read-only.  */
 #define        O_WRONLY        1       /* Open write-only.  */
 #define        O_RDWR          2       /* Open read/write.  */
-
+#define O_ACCMODE   3
 
 /* Bits OR'd into the second argument to open.  */
-#define        O_CREAT         0x0200  /* Create file if it doesn't exist.  */
-#define        O_EXCL          0x0800  /* Fail if file already exists.  */
-#define        O_TRUNC         0x0400  /* Truncate file to zero length.  */
-#define        O_NOCTTY        0x0100  /* Don't assign a controlling terminal.  */
-
-/* File status flags for `open' and `fcntl'.  */
-#define        O_APPEND        0x0008  /* Writes append to the file.  */
-#define        O_NONBLOCK      0x0004  /* Non-blocking I/O.  */
+#define O_CREAT        0100 /* not fcntl */
+#define O_EXCL         0200 /* not fcntl */
+#define O_NOCTTY       0400 /* not fcntl */
+#define O_TRUNC       01000 /* not fcntl */
+#define O_APPEND      02000
+#define O_NONBLOCK    04000
+#define O_SYNC       010000
+#define O_FSYNC      O_SYNC
+#define O_ASYNC      020000
 
 #ifdef __USE_BSD
 # define O_NDELAY      O_NONBLOCK