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 <dirent.h> | 5 #include "nacl_mounts/kernel_proxy.h" |
| 6 |
6 #include <errno.h> | 7 #include <errno.h> |
7 #include <fcntl.h> | 8 #include <fcntl.h> |
8 #include <pthread.h> | 9 #include <pthread.h> |
9 #include <stdint.h> | 10 #include <string.h> |
10 #include <sys/stat.h> | |
11 | |
12 #include <string> | 11 #include <string> |
13 | 12 |
14 #include "nacl_mounts/kernel_handle.h" | 13 #include "nacl_mounts/kernel_handle.h" |
15 #include "nacl_mounts/kernel_proxy.h" | |
16 #include "nacl_mounts/mount.h" | 14 #include "nacl_mounts/mount.h" |
17 #include "nacl_mounts/mount_mem.h" | 15 #include "nacl_mounts/mount_mem.h" |
18 #include "nacl_mounts/mount_node.h" | 16 #include "nacl_mounts/mount_node.h" |
19 #include "nacl_mounts/mount_url.h" | 17 #include "nacl_mounts/osstat.h" |
| 18 // TODO(binji): implement MountURL |
| 19 //#include "nacl_mounts/mount_url.h" |
20 #include "nacl_mounts/path.h" | 20 #include "nacl_mounts/path.h" |
21 | |
22 #include "utils/auto_lock.h" | 21 #include "utils/auto_lock.h" |
23 #include "utils/ref_object.h" | 22 #include "utils/ref_object.h" |
24 | 23 |
25 #ifndef MAXPATHLEN | 24 #ifndef MAXPATHLEN |
26 #define MAXPATHLEN 256 | 25 #define MAXPATHLEN 256 |
27 #endif | 26 #endif |
28 | 27 |
29 // TODO(noelallen) : Grab/Redefine these in the kernel object once available. | 28 // TODO(noelallen) : Grab/Redefine these in the kernel object once available. |
30 #define USR_ID 1002 | 29 #define USR_ID 1002 |
31 #define GRP_ID 1003 | 30 #define GRP_ID 1003 |
32 | 31 |
33 | 32 |
34 KernelProxy::KernelProxy() : dev_(0) {} | 33 KernelProxy::KernelProxy() : dev_(0) {} |
35 KernelProxy::~KernelProxy() {} | 34 KernelProxy::~KernelProxy() {} |
36 | 35 |
37 void KernelProxy::Init() { | 36 void KernelProxy::Init() { |
38 cwd_ = "/"; | 37 cwd_ = "/"; |
39 dev_ = 1; | 38 dev_ = 1; |
40 | 39 |
41 factories_["memfs"] = MountMem::Create; | 40 factories_["memfs"] = MountMem::Create; |
42 factories_["urlfs"] = MountURL::Create; | 41 // TODO(binji): implement MountURL |
| 42 //factories_["urlfs"] = MountURL::Create; |
43 | 43 |
44 // Create memory mount at root | 44 // Create memory mount at root |
45 StringMap_t smap; | 45 StringMap_t smap; |
46 mounts_["/"] = MountMem::Create(dev_++, smap); | 46 mounts_["/"] = MountMem::Create(dev_++, smap); |
47 } | 47 } |
48 | 48 |
49 | 49 |
50 int KernelProxy::open(const char *path, int oflags) { | 50 int KernelProxy::open(const char *path, int oflags) { |
51 Path rel; | 51 Path rel; |
52 | 52 |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 | 287 |
288 int KernelProxy::fstat(int fd, struct stat* buf) { | 288 int KernelProxy::fstat(int fd, struct stat* buf) { |
289 KernelHandle* handle = AcquireHandle(fd); | 289 KernelHandle* handle = AcquireHandle(fd); |
290 | 290 |
291 // check if fd is valid and handle exists | 291 // check if fd is valid and handle exists |
292 if (NULL == handle) return -1; | 292 if (NULL == handle) return -1; |
293 | 293 |
294 int ret = handle->node_->GetStat(buf); | 294 int ret = handle->node_->GetStat(buf); |
295 ReleaseHandle(handle); | 295 ReleaseHandle(handle); |
296 return ret; | 296 return ret; |
297 }; | 297 } |
298 | 298 |
299 int KernelProxy::getdents(int fd, void* buf, unsigned int count) { | 299 int KernelProxy::getdents(int fd, void* buf, unsigned int count) { |
300 KernelHandle* handle = AcquireHandle(fd); | 300 KernelHandle* handle = AcquireHandle(fd); |
301 | 301 |
302 // check if fd is valid and handle exists | 302 // check if fd is valid and handle exists |
303 if (NULL == handle) return -1; | 303 if (NULL == handle) return -1; |
304 | 304 |
305 AutoLock lock(&handle->lock_); | 305 AutoLock lock(&handle->lock_); |
306 int cnt = handle->node_->GetDents(handle->offs_, | 306 int cnt = handle->node_->GetDents(handle->offs_, |
307 static_cast<dirent *>(buf), count); | 307 static_cast<dirent *>(buf), count); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 return -1; | 348 return -1; |
349 } | 349 } |
350 int KernelProxy::access(const char*path, int amode) { | 350 int KernelProxy::access(const char*path, int amode) { |
351 errno = EINVAL; | 351 errno = EINVAL; |
352 return -1; | 352 return -1; |
353 } | 353 } |
354 off_t KernelProxy::lseek(int fd, off_t offset, int whence) { | 354 off_t KernelProxy::lseek(int fd, off_t offset, int whence) { |
355 errno = EINVAL; | 355 errno = EINVAL; |
356 return -1; | 356 return -1; |
357 } | 357 } |
OLD | NEW |