OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. | 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. |
3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
5 */ | 5 */ |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include "native_client/src/include/nacl_macros.h" | 9 #include "native_client/src/include/nacl_macros.h" |
10 #include "native_client/src/untrusted/irt/irt.h" | 10 #include "native_client/src/untrusted/irt/irt.h" |
11 #include "native_client/src/untrusted/irt/irt_shim.h" | |
11 #include "native_client/src/untrusted/irt/irt_interfaces.h" | 12 #include "native_client/src/untrusted/irt/irt_interfaces.h" |
12 | 13 |
13 struct nacl_interface_table { | 14 struct nacl_interface_table { |
14 const char *name; | 15 const char *name; |
15 const void *table; | 16 const void *table; |
16 size_t size; | 17 size_t size; |
17 }; | 18 }; |
18 | 19 |
19 static const struct nacl_interface_table irt_interfaces[] = { | 20 static const struct nacl_interface_table irt_interfaces[] = { |
20 { NACL_IRT_BASIC_v0_1, &nacl_irt_basic, sizeof(nacl_irt_basic) }, | 21 { NACL_IRT_BASIC_v0_1, &nacl_irt_basic, sizeof(nacl_irt_basic) }, |
21 { NACL_IRT_FDIO_v0_1, &nacl_irt_fdio, sizeof(nacl_irt_fdio) }, | 22 { NACL_IRT_FDIO_v0_1, &nacl_irt_fdio, sizeof(nacl_irt_fdio) }, |
22 { NACL_IRT_FILENAME_v0_1, &nacl_irt_filename, sizeof(nacl_irt_filename) }, | 23 { NACL_IRT_FILENAME_v0_1, &nacl_irt_filename, sizeof(nacl_irt_filename) }, |
23 { NACL_IRT_MEMORY_v0_1, &nacl_irt_memory, sizeof(nacl_irt_memory) }, | 24 { NACL_IRT_MEMORY_v0_1, &nacl_irt_memory, sizeof(nacl_irt_memory) }, |
24 { NACL_IRT_DYNCODE_v0_1, &nacl_irt_dyncode, sizeof(nacl_irt_dyncode) }, | 25 { NACL_IRT_DYNCODE_v0_1, &nacl_irt_dyncode, sizeof(nacl_irt_dyncode) }, |
25 { NACL_IRT_THREAD_v0_1, &nacl_irt_thread, sizeof(nacl_irt_thread) }, | 26 { NACL_IRT_THREAD_v0_1, &nacl_irt_thread, sizeof(nacl_irt_thread) }, |
26 { NACL_IRT_MUTEX_v0_1, &nacl_irt_mutex, sizeof(nacl_irt_mutex) }, | 27 { NACL_IRT_MUTEX_v0_1, &nacl_irt_mutex, sizeof(nacl_irt_mutex) }, |
27 { NACL_IRT_COND_v0_1, &nacl_irt_cond, sizeof(nacl_irt_cond) }, | 28 { NACL_IRT_COND_v0_1, &nacl_irt_cond, sizeof(nacl_irt_cond) }, |
28 { NACL_IRT_SEM_v0_1, &nacl_irt_sem, sizeof(nacl_irt_sem) }, | 29 { NACL_IRT_SEM_v0_1, &nacl_irt_sem, sizeof(nacl_irt_sem) }, |
29 { NACL_IRT_TLS_v0_1, &nacl_irt_tls, sizeof(nacl_irt_tls) }, | 30 { NACL_IRT_TLS_v0_1, &nacl_irt_tls, sizeof(nacl_irt_tls) }, |
30 { NACL_IRT_BLOCKHOOK_v0_1, &nacl_irt_blockhook, sizeof(nacl_irt_blockhook) }, | 31 { NACL_IRT_BLOCKHOOK_v0_1, &nacl_irt_blockhook, sizeof(nacl_irt_blockhook) }, |
31 { NACL_IRT_RESOURCE_OPEN_v0_1, &nacl_irt_resource_open, | 32 { NACL_IRT_RESOURCE_OPEN_v0_1, &nacl_irt_resource_open, |
32 sizeof(nacl_irt_resource_open) }, | 33 sizeof(nacl_irt_resource_open) }, |
34 /* @IGNORE_LINES_FOR_CODE_HYGIENE[1] */ | |
Mark Seaborn
2012/08/28 20:41:00
Please indent by 2 spaces to match the surrounding
Mark Seaborn
2012/08/28 21:32:00
Ping?
Please do this for the comment below too.
| |
33 #ifdef IRT_PPAPI | 35 #ifdef IRT_PPAPI |
34 { NACL_IRT_PPAPIHOOK_v0_1, &nacl_irt_ppapihook, sizeof(nacl_irt_ppapihook) }, | 36 { NACL_IRT_PPAPIHOOK_v0_1, &nacl_irt_ppapihook, sizeof(nacl_irt_ppapihook) }, |
37 /* This ifdef should be removed once the IRT build has migrated to the Chrome tr ee. */ | |
Mark Seaborn
2012/08/28 20:41:00
Please add a TODO(robertm) in this comment. Also,
| |
38 /* @IGNORE_LINES_FOR_CODE_HYGIENE[1] */ | |
39 #ifdef ENABLE_NACL_IRT_PPAPIHOOK_SHIMMED | |
40 { NACL_IRT_PPAPIHOOK_SHIMMED_v0_1, &nacl_irt_ppapihook_shimmed, | |
41 sizeof(nacl_irt_ppapihook) }, | |
42 #endif | |
35 #endif | 43 #endif |
36 { NACL_IRT_RANDOM_v0_1, &nacl_irt_random, sizeof(nacl_irt_random) }, | 44 { NACL_IRT_RANDOM_v0_1, &nacl_irt_random, sizeof(nacl_irt_random) }, |
37 { NACL_IRT_CLOCK_v0_1, &nacl_irt_clock, sizeof(nacl_irt_clock) }, | 45 { NACL_IRT_CLOCK_v0_1, &nacl_irt_clock, sizeof(nacl_irt_clock) }, |
38 { NACL_IRT_DEV_EXCEPTION_HANDLING_v0_1, &nacl_irt_dev_exception_handling, | 46 { NACL_IRT_DEV_EXCEPTION_HANDLING_v0_1, &nacl_irt_dev_exception_handling, |
39 sizeof(nacl_irt_dev_exception_handling) }, | 47 sizeof(nacl_irt_dev_exception_handling) }, |
40 }; | 48 }; |
41 | 49 |
42 size_t nacl_irt_interface(const char *interface_ident, | 50 size_t nacl_irt_interface(const char *interface_ident, |
43 void *table, size_t tablesize) { | 51 void *table, size_t tablesize) { |
44 int i; | 52 int i; |
45 for (i = 0; i < NACL_ARRAY_SIZE(irt_interfaces); ++i) { | 53 for (i = 0; i < NACL_ARRAY_SIZE(irt_interfaces); ++i) { |
46 if (0 == strcmp(interface_ident, irt_interfaces[i].name)) { | 54 if (0 == strcmp(interface_ident, irt_interfaces[i].name)) { |
47 const size_t size = irt_interfaces[i].size; | 55 const size_t size = irt_interfaces[i].size; |
48 if (size <= tablesize) { | 56 if (size <= tablesize) { |
49 memcpy(table, irt_interfaces[i].table, size); | 57 memcpy(table, irt_interfaces[i].table, size); |
50 return size; | 58 return size; |
51 } | 59 } |
52 break; | 60 break; |
53 } | 61 } |
54 } | 62 } |
55 return 0; | 63 return 0; |
56 } | 64 } |
OLD | NEW |