浏览代码

sandbox: add flags for open() call

This provides a way for callers to create files for writing. The flags
are translated at runtime, for the ones we support.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Simon Glass 13 年之前
父节点
当前提交
d9165153ca
共有 2 个文件被更改,包括 33 次插入8 次删除
  1. 22 2
      arch/sandbox/cpu/os.c
  2. 11 6
      include/os.h

+ 22 - 2
arch/sandbox/cpu/os.c

@@ -58,9 +58,29 @@ off_t os_lseek(int fd, off_t offset, int whence)
 	return lseek(fd, offset, whence);
 	return lseek(fd, offset, whence);
 }
 }
 
 
-int os_open(const char *pathname, int flags)
+int os_open(const char *pathname, int os_flags)
 {
 {
-	return open(pathname, flags);
+	int flags;
+
+	switch (os_flags & OS_O_MASK) {
+	case OS_O_RDONLY:
+	default:
+		flags = O_RDONLY;
+		break;
+
+	case OS_O_WRONLY:
+		flags = O_WRONLY;
+		break;
+
+	case OS_O_RDWR:
+		flags = O_RDWR;
+		break;
+	}
+
+	if (os_flags & OS_O_CREAT)
+		flags |= O_CREAT;
+
+	return open(pathname, flags, 0777);
 }
 }
 
 
 int os_close(int fd)
 int os_close(int fd)

+ 11 - 6
include/os.h

@@ -1,4 +1,9 @@
 /*
 /*
+ * Operating System Interface
+ *
+ * This provides access to useful OS routines for the sandbox architecture.
+ * They are kept in a separate file so we can include system headers.
+ *
  * Copyright (c) 2011 The Chromium OS Authors.
  * Copyright (c) 2011 The Chromium OS Authors.
  * See file CREDITS for list of people who contributed to this
  * See file CREDITS for list of people who contributed to this
  * project.
  * project.
@@ -19,12 +24,6 @@
  * MA 02111-1307 USA
  * MA 02111-1307 USA
  */
  */
 
 
-/*
- * Operating System Interface
- *
- * This provides access to useful OS routines from the sandbox architecture
- */
-
 #ifndef __OS_H__
 #ifndef __OS_H__
 #define __OS_H__
 #define __OS_H__
 
 
@@ -72,6 +71,12 @@ off_t os_lseek(int fd, off_t offset, int whence);
  */
  */
 int os_open(const char *pathname, int flags);
 int os_open(const char *pathname, int flags);
 
 
+#define OS_O_RDONLY	0
+#define OS_O_WRONLY	1
+#define OS_O_RDWR	2
+#define OS_O_MASK	3	/* Mask for read/write flags */
+#define OS_O_CREAT	0100
+
 /**
 /**
  * Access to the OS close() system call
  * Access to the OS close() system call
  *
  *