| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "nacl_io/kernel_proxy.h" | 5 #include "nacl_io/kernel_proxy.h" |
| 6 | 6 |
| 7 #include <assert.h> | 7 #include <assert.h> |
| 8 #include <errno.h> | 8 #include <errno.h> |
| 9 #include <fcntl.h> | 9 #include <fcntl.h> |
| 10 #include <limits.h> | 10 #include <limits.h> |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 delete i->second; | 70 delete i->second; |
| 71 } | 71 } |
| 72 } | 72 } |
| 73 | 73 |
| 74 Error KernelProxy::Init(PepperInterface* ppapi) { | 74 Error KernelProxy::Init(PepperInterface* ppapi) { |
| 75 Error rtn = 0; | 75 Error rtn = 0; |
| 76 ppapi_ = ppapi; | 76 ppapi_ = ppapi; |
| 77 dev_ = 1; | 77 dev_ = 1; |
| 78 | 78 |
| 79 factories_["memfs"] = new TypedFsFactory<MemFs>; | 79 factories_["memfs"] = new TypedFsFactory<MemFs>; |
| 80 factories_["dev"] = new TypedFsFactory<DevFs>; | 80 factories_["devfs"] = new TypedFsFactory<DevFs>; |
| 81 factories_["html5fs"] = new TypedFsFactory<Html5Fs>; | 81 factories_["html5fs"] = new TypedFsFactory<Html5Fs>; |
| 82 factories_["httpfs"] = new TypedFsFactory<HttpFs>; | 82 factories_["httpfs"] = new TypedFsFactory<HttpFs>; |
| 83 factories_["passthroughfs"] = new TypedFsFactory<PassthroughFs>; | 83 factories_["passthroughfs"] = new TypedFsFactory<PassthroughFs>; |
| 84 | 84 |
| 85 ScopedFilesystem root_fs; | 85 ScopedFilesystem root_fs; |
| 86 rtn = MountInternal("", "/", "passthroughfs", 0, NULL, false, &root_fs); | 86 rtn = MountInternal("", "/", "memfs", 0, NULL, false, &root_fs); |
| 87 if (rtn != 0) |
| 88 return rtn; |
| 89 rtn = this->mkdir("/dev", 0777); |
| 87 if (rtn != 0) | 90 if (rtn != 0) |
| 88 return rtn; | 91 return rtn; |
| 89 | 92 |
| 90 ScopedFilesystem fs; | 93 ScopedFilesystem fs; |
| 91 rtn = MountInternal("", "/dev", "dev", 0, NULL, false, &fs); | 94 rtn = MountInternal("", "/dev", "devfs", 0, NULL, false, &fs); |
| 92 if (rtn != 0) | 95 if (rtn != 0) |
| 93 return rtn; | 96 return rtn; |
| 94 dev_fs_ = sdk_util::static_scoped_ref_cast<DevFs>(fs); | 97 dev_fs_ = sdk_util::static_scoped_ref_cast<DevFs>(fs); |
| 95 | 98 |
| 96 // Create the filesystem nodes for / and /dev afterward. They can't be | 99 // Create the filesystem nodes for / and /dev afterward. They can't be |
| 97 // created the normal way because the dev filesystem didn't exist yet. | 100 // created the normal way because the dev filesystem didn't exist yet. |
| 98 rtn = CreateFsNode(root_fs); | 101 rtn = CreateFsNode(root_fs); |
| 99 if (rtn != 0) | 102 if (rtn != 0) |
| 100 return rtn; | 103 return rtn; |
| 101 | 104 |
| 102 rtn = CreateFsNode(dev_fs_); | 105 rtn = CreateFsNode(dev_fs_); |
| 103 if (rtn != 0) | 106 if (rtn != 0) |
| 104 return rtn; | 107 return rtn; |
| 105 | 108 |
| 106 // Open the first three in order to get STDIN, STDOUT, STDERR | 109 // Open the first three in order to get STDIN, STDOUT, STDERR |
| 107 int fd; | 110 int fd; |
| 108 fd = open("/dev/stdin", O_RDONLY, 0); | 111 fd = this->open("/dev/stdin", O_RDONLY, 0); |
| 109 if (fd < 0) { | 112 if (fd < 0) { |
| 110 LOG_ERROR("failed to open /dev/stdin: %s", strerror(errno)); | 113 LOG_ERROR("failed to open /dev/stdin: %s", strerror(errno)); |
| 111 return errno; | 114 return errno; |
| 112 } | 115 } |
| 113 assert(fd == 0); | 116 assert(fd == 0); |
| 114 | 117 |
| 115 fd = open("/dev/stdout", O_WRONLY, 0); | 118 fd = this->open("/dev/stdout", O_WRONLY, 0); |
| 116 if (fd < 0) { | 119 if (fd < 0) { |
| 117 LOG_ERROR("failed to open /dev/stdout: %s", strerror(errno)); | 120 LOG_ERROR("failed to open /dev/stdout: %s", strerror(errno)); |
| 118 return errno; | 121 return errno; |
| 119 } | 122 } |
| 120 assert(fd == 1); | 123 assert(fd == 1); |
| 121 | 124 |
| 122 fd = open("/dev/stderr", O_WRONLY, 0); | 125 fd = this->open("/dev/stderr", O_WRONLY, 0); |
| 123 if (fd < 0) { | 126 if (fd < 0) { |
| 124 LOG_ERROR("failed to open /dev/sterr: %s", strerror(errno)); | 127 LOG_ERROR("failed to open /dev/sterr: %s", strerror(errno)); |
| 125 return errno; | 128 return errno; |
| 126 } | 129 } |
| 127 assert(fd == 2); | 130 assert(fd == 2); |
| 128 | 131 |
| 129 #ifdef PROVIDES_SOCKET_API | 132 #ifdef PROVIDES_SOCKET_API |
| 130 host_resolver_.Init(ppapi_); | 133 host_resolver_.Init(ppapi_); |
| 131 #endif | 134 #endif |
| 132 | 135 |
| (...skipping 1709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1842 errno = ENOTSOCK; | 1845 errno = ENOTSOCK; |
| 1843 return -1; | 1846 return -1; |
| 1844 } | 1847 } |
| 1845 | 1848 |
| 1846 return 0; | 1849 return 0; |
| 1847 } | 1850 } |
| 1848 | 1851 |
| 1849 #endif // PROVIDES_SOCKET_API | 1852 #endif // PROVIDES_SOCKET_API |
| 1850 | 1853 |
| 1851 } // namespace_nacl_io | 1854 } // namespace_nacl_io |
| OLD | NEW |