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 |