OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 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 "mojo/nacl/nonsfi/irt_mojo_nonsfi.h" | 5 #include "mojo/nacl/nonsfi/irt_mojo_nonsfi.h" |
6 | 6 |
7 #include "mojo/public/c/system/functions.h" | 7 #include "mojo/public/c/system/functions.h" |
8 #include "mojo/public/platform/nacl/mojo_irt.h" | 8 #include "mojo/public/platform/nacl/mojo_irt.h" |
9 #include "native_client/src/public/irt_core.h" | 9 #include "native_client/src/public/irt_core.h" |
10 #include "native_client/src/untrusted/irt/irt_dev.h" | |
10 | 11 |
11 namespace { | 12 namespace { |
12 | 13 |
13 MojoHandle g_mojo_handle = MOJO_HANDLE_INVALID; | 14 MojoHandle g_mojo_handle = MOJO_HANDLE_INVALID; |
14 | 15 |
15 MojoResult _MojoGetInitialHandle(MojoHandle* handle) { | |
16 *handle = g_mojo_handle; | |
17 return MOJO_RESULT_OK; | |
18 } | |
19 | |
20 const struct nacl_irt_mojo kIrtMojo = { | 16 const struct nacl_irt_mojo kIrtMojo = { |
21 MojoCreateSharedBuffer, | 17 MojoCreateSharedBuffer, |
22 MojoDuplicateBufferHandle, | 18 MojoDuplicateBufferHandle, |
23 MojoMapBuffer, | 19 MojoMapBuffer, |
24 MojoUnmapBuffer, | 20 MojoUnmapBuffer, |
25 MojoCreateDataPipe, | 21 MojoCreateDataPipe, |
26 MojoWriteData, | 22 MojoWriteData, |
27 MojoBeginWriteData, | 23 MojoBeginWriteData, |
28 MojoEndWriteData, | 24 MojoEndWriteData, |
29 MojoReadData, | 25 MojoReadData, |
30 MojoBeginReadData, | 26 MojoBeginReadData, |
31 MojoEndReadData, | 27 MojoEndReadData, |
32 MojoGetTimeTicksNow, | 28 MojoGetTimeTicksNow, |
33 MojoClose, | 29 MojoClose, |
34 MojoWait, | 30 MojoWait, |
35 MojoWaitMany, | 31 MojoWaitMany, |
36 MojoCreateMessagePipe, | 32 MojoCreateMessagePipe, |
37 MojoWriteMessage, | 33 MojoWriteMessage, |
38 MojoReadMessage, | 34 MojoReadMessage, |
39 _MojoGetInitialHandle, | 35 nacl::_MojoGetInitialHandle, |
40 }; | 36 }; |
41 | 37 |
42 const struct nacl_irt_interface kIrtInterfaces[] = { | 38 static const struct nacl_irt_interface kIrtInterfaces[] = { |
Mark Seaborn
2015/10/20 21:32:40
Nit: 'static' not needed: this is in an anon names
Sean Klein
2015/10/22 21:50:00
Done.
| |
43 {NACL_IRT_MOJO_v0_1, &kIrtMojo, sizeof(kIrtMojo), nullptr}}; | 39 /* Interface to call Mojo functions */ |
Mark Seaborn
2015/10/20 21:32:40
Nit: Use C++-style comments
Sean Klein
2015/10/22 21:50:00
Done.
| |
40 { NACL_IRT_MOJO_v0_1, | |
41 &kIrtMojo, | |
42 sizeof(kIrtMojo), | |
43 nullptr }, | |
44 /* Interface to call PNaCl translation */ | |
45 { NACL_IRT_PRIVATE_PNACL_TRANSLATOR_COMPILE_v0_1, | |
46 &nacl_irt_private_pnacl_translator_compile, | |
47 sizeof(nacl_irt_private_pnacl_translator_compile), | |
48 nullptr }, | |
Mark Seaborn
2015/10/20 22:28:58
Can you conditionalise the 3 new interfaces so tha
Sean Klein
2015/10/22 21:50:00
Done.
| |
49 /* Interface to call PNaCl linking */ | |
50 { NACL_IRT_PRIVATE_PNACL_TRANSLATOR_LINK_v0_1, | |
51 &nacl_irt_private_pnacl_translator_link, | |
52 sizeof(nacl_irt_private_pnacl_translator_link), | |
53 nullptr }, | |
54 /* Adds mechanism for opening object files, like crtbegin.o */ | |
55 { NACL_IRT_RESOURCE_OPEN_v0_1, | |
56 &nacl_irt_resource_open, | |
57 sizeof(nacl_irt_resource_open), | |
58 nullptr }, | |
59 }; | |
44 | 60 |
45 } // namespace | 61 } // namespace |
46 | 62 |
47 namespace nacl { | 63 namespace nacl { |
48 | 64 |
65 MojoResult _MojoGetInitialHandle(MojoHandle* handle) { | |
66 *handle = g_mojo_handle; | |
67 return MOJO_RESULT_OK; | |
68 } | |
69 | |
49 void MojoSetInitialHandle(MojoHandle handle) { | 70 void MojoSetInitialHandle(MojoHandle handle) { |
50 g_mojo_handle = handle; | 71 g_mojo_handle = handle; |
51 } | 72 } |
52 | 73 |
53 size_t MojoIrtNonsfiQuery(const char* interface_ident, | 74 size_t MojoIrtNonsfiQuery(const char* interface_ident, |
54 void* table, | 75 void* table, |
55 size_t tablesize) { | 76 size_t tablesize) { |
56 size_t result = nacl_irt_query_list(interface_ident, table, tablesize, | 77 size_t result = nacl_irt_query_list(interface_ident, table, tablesize, |
57 kIrtInterfaces, sizeof(kIrtInterfaces)); | 78 kIrtInterfaces, sizeof(kIrtInterfaces)); |
58 if (result != 0) | 79 if (result != 0) |
59 return result; | 80 return result; |
60 return nacl_irt_query_core(interface_ident, table, tablesize); | 81 return nacl_irt_query_core(interface_ident, table, tablesize); |
61 } | 82 } |
62 | 83 |
63 } // namespace nacl | 84 } // namespace nacl |
OLD | NEW |