| OLD | NEW |
| (Empty) |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "ppapi/nacl_irt/irt_interfaces.h" | |
| 6 | |
| 7 #include <unistd.h> | |
| 8 | |
| 9 #include "build/build_config.h" | |
| 10 #include "native_client/src/public/irt_core.h" | |
| 11 #include "native_client/src/trusted/service_runtime/include/sys/unistd.h" | |
| 12 #include "native_client/src/untrusted/irt/irt.h" | |
| 13 #include "ppapi/nacl_irt/irt_manifest.h" | |
| 14 #include "ppapi/nacl_irt/public/irt_ppapi.h" | |
| 15 #include "ppapi/native_client/src/untrusted/pnacl_irt_shim/irt_shim_ppapi.h" | |
| 16 | |
| 17 #if defined(OS_NACL_SFI) | |
| 18 static int ppapihook_pnacl_private_filter(void) { | |
| 19 int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE); | |
| 20 if (pnacl_mode == -1) | |
| 21 return 0; | |
| 22 return pnacl_mode; | |
| 23 } | |
| 24 #endif | |
| 25 | |
| 26 static const nacl_irt_resource_open kIrtResourceOpen = { | |
| 27 ppapi::IrtOpenResource, | |
| 28 }; | |
| 29 | |
| 30 #if defined(OS_NACL_SFI) | |
| 31 static int not_pnacl_filter(void) { | |
| 32 int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE); | |
| 33 if (pnacl_mode == -1) | |
| 34 return 0; | |
| 35 return !pnacl_mode; | |
| 36 } | |
| 37 #endif | |
| 38 | |
| 39 static const struct nacl_irt_interface irt_interfaces[] = { | |
| 40 { NACL_IRT_PPAPIHOOK_v0_1, &nacl_irt_ppapihook, sizeof(nacl_irt_ppapihook), | |
| 41 NULL }, | |
| 42 #if defined(OS_NACL_SFI) | |
| 43 { NACL_IRT_PPAPIHOOK_PNACL_PRIVATE_v0_1, | |
| 44 &nacl_irt_ppapihook_pnacl_private, sizeof(nacl_irt_ppapihook_pnacl_private), | |
| 45 ppapihook_pnacl_private_filter }, | |
| 46 #endif | |
| 47 { NACL_IRT_RESOURCE_OPEN_v0_1, &kIrtResourceOpen, | |
| 48 sizeof(kIrtResourceOpen), | |
| 49 #if defined(OS_NACL_SFI) | |
| 50 not_pnacl_filter, | |
| 51 #else | |
| 52 // If we change PNaCl to use Non-SFI Mode on the open web, | |
| 53 // we should add a filter here. | |
| 54 NULL, | |
| 55 #endif | |
| 56 }, | |
| 57 }; | |
| 58 | |
| 59 size_t chrome_irt_query(const char* interface_ident, | |
| 60 void* table, size_t tablesize) { | |
| 61 size_t result = nacl_irt_query_list(interface_ident, | |
| 62 table, | |
| 63 tablesize, | |
| 64 irt_interfaces, | |
| 65 sizeof(irt_interfaces)); | |
| 66 if (result != 0) | |
| 67 return result; | |
| 68 | |
| 69 return nacl_irt_query_core(interface_ident, table, tablesize); | |
| 70 } | |
| OLD | NEW |