OLD | NEW |
1 // Copyright (c) 2012 The Native Client Authors. All rights reserved. | 1 // Copyright (c) 2012 The Native Client 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 <limits> | 5 #include <limits> |
6 #include <new> | 6 #include <new> |
7 #include "native_client/src/include/portability.h" | 7 #include "native_client/src/include/portability.h" |
8 #include "native_client/src/include/portability_string.h" | 8 #include "native_client/src/include/portability_string.h" |
9 #include "native_client/src/public/imc_types.h" | 9 #include "native_client/src/public/imc_types.h" |
10 #include "native_client/src/shared/imc/nacl_imc_c.h" | 10 #include "native_client/src/shared/imc/nacl_imc_c.h" |
11 #include "native_client/src/shared/platform/nacl_check.h" | 11 #include "native_client/src/shared/platform/nacl_check.h" |
12 #include "native_client/src/shared/platform/nacl_log.h" | 12 #include "native_client/src/shared/platform/nacl_log.h" |
13 #include "native_client/src/shared/platform/nacl_sync_checked.h" | 13 #include "native_client/src/shared/platform/nacl_sync_checked.h" |
14 #if defined(NACL_LINUX) | 14 #if defined(NACL_LINUX) |
15 #include "native_client/src/trusted/desc/linux/nacl_desc_sysv_shm.h" | 15 #include "native_client/src/trusted/desc/linux/nacl_desc_sysv_shm.h" |
16 #endif // defined(NACL_LINUX) | 16 #endif // defined(NACL_LINUX) |
17 #include "native_client/src/trusted/desc/nacl_desc_base.h" | 17 #include "native_client/src/trusted/desc/nacl_desc_base.h" |
18 #include "native_client/src/trusted/desc/nacl_desc_conn_cap.h" | 18 #include "native_client/src/trusted/desc/nacl_desc_conn_cap.h" |
| 19 #include "native_client/src/trusted/desc/nacl_desc_file_token.h" |
19 #include "native_client/src/trusted/desc/nacl_desc_imc.h" | 20 #include "native_client/src/trusted/desc/nacl_desc_imc.h" |
20 #include "native_client/src/trusted/desc/nacl_desc_imc_shm.h" | 21 #include "native_client/src/trusted/desc/nacl_desc_imc_shm.h" |
21 #include "native_client/src/trusted/desc/nacl_desc_invalid.h" | 22 #include "native_client/src/trusted/desc/nacl_desc_invalid.h" |
22 #include "native_client/src/trusted/desc/nacl_desc_io.h" | 23 #include "native_client/src/trusted/desc/nacl_desc_io.h" |
23 #include "native_client/src/trusted/desc/nacl_desc_quota.h" | 24 #include "native_client/src/trusted/desc/nacl_desc_quota.h" |
24 #include "native_client/src/trusted/desc/nacl_desc_rng.h" | 25 #include "native_client/src/trusted/desc/nacl_desc_rng.h" |
25 #include "native_client/src/trusted/desc/nacl_desc_sync_socket.h" | 26 #include "native_client/src/trusted/desc/nacl_desc_sync_socket.h" |
26 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h" | 27 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h" |
27 #include "native_client/src/trusted/desc/nrd_xfer.h" | 28 #include "native_client/src/trusted/desc/nrd_xfer.h" |
28 #include "native_client/src/trusted/nacl_base/nacl_refcount.h" | 29 #include "native_client/src/trusted/nacl_base/nacl_refcount.h" |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 } | 309 } |
309 | 310 |
310 DescWrapper* DescWrapperFactory::MakeFileDesc(int host_os_desc, int mode) { | 311 DescWrapper* DescWrapperFactory::MakeFileDesc(int host_os_desc, int mode) { |
311 struct NaClDesc* desc = ImportHostDescCommon(host_os_desc, mode); | 312 struct NaClDesc* desc = ImportHostDescCommon(host_os_desc, mode); |
312 if (NULL == desc) { | 313 if (NULL == desc) { |
313 return NULL; | 314 return NULL; |
314 } | 315 } |
315 return MakeGenericCleanup(desc); | 316 return MakeGenericCleanup(desc); |
316 } | 317 } |
317 | 318 |
| 319 DescWrapper* DescWrapperFactory::MakeFileDescMetadata(struct NaClFileInfo info, |
| 320 int mode) { |
| 321 struct NaClDesc* desc = ImportHostDescCommon(info.desc, mode); |
| 322 if (NULL == desc) { |
| 323 return NULL; |
| 324 } |
| 325 if (NaClFileTokenIsValid(&info.file_token)) { |
| 326 if (!NaClDescSetFileToken(desc, &info.file_token)) { |
| 327 NaClDescSafeUnref(desc); |
| 328 return NULL; |
| 329 } |
| 330 } |
| 331 return MakeGenericCleanup(desc); |
| 332 } |
| 333 |
318 DescWrapper* DescWrapperFactory::MakeFileDescQuota(int host_os_desc, | 334 DescWrapper* DescWrapperFactory::MakeFileDescQuota(int host_os_desc, |
319 int mode, | 335 int mode, |
320 const uint8_t* file_id) { | 336 const uint8_t* file_id) { |
321 struct NaClDesc* desc = ImportHostDescCommon(host_os_desc, mode); | 337 struct NaClDesc* desc = ImportHostDescCommon(host_os_desc, mode); |
322 if (NULL == desc) { | 338 if (NULL == desc) { |
323 return NULL; | 339 return NULL; |
324 } | 340 } |
325 struct NaClDesc* desc_quota = MakeQuotaCommon(file_id, desc); | 341 struct NaClDesc* desc_quota = MakeQuotaCommon(file_id, desc); |
326 if (desc_quota == NULL) { | 342 if (desc_quota == NULL) { |
327 NaClDescSafeUnref(desc); | 343 NaClDescSafeUnref(desc); |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 return reinterpret_cast<struct NaClDescVtbl const *>(desc_->base.vtbl)-> | 646 return reinterpret_cast<struct NaClDescVtbl const *>(desc_->base.vtbl)-> |
631 SemWait(desc_); | 647 SemWait(desc_); |
632 } | 648 } |
633 | 649 |
634 int DescWrapper::GetValue() { | 650 int DescWrapper::GetValue() { |
635 return reinterpret_cast<struct NaClDescVtbl const *>(desc_->base.vtbl)-> | 651 return reinterpret_cast<struct NaClDescVtbl const *>(desc_->base.vtbl)-> |
636 GetValue(desc_); | 652 GetValue(desc_); |
637 } | 653 } |
638 | 654 |
639 } // namespace nacl | 655 } // namespace nacl |
OLD | NEW |