Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: mojo/nacl/monacl_shell_nonsfi.cc

Issue 1323823002: Adding nonsfi content handler (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <fcntl.h> 5 #include <fcntl.h>
6 #include <iostream> 6 #include <iostream>
7 7
8 #include "mojo/edk/embedder/embedder.h" 8 #include "mojo/edk/embedder/embedder.h"
9 #include "mojo/edk/embedder/simple_platform_support.h" 9 #include "mojo/edk/embedder/simple_platform_support.h"
10 #include "mojo/public/platform/nacl/mojo_irt.h" 10 #include "mojo/nacl/irt_mojo_nonsfi.h"
11 #include "native_client/src/public/irt_core.h" 11 #include "native_client/src/public/irt_core.h"
12 #include "native_client/src/public/nonsfi/elf_loader.h" 12 #include "native_client/src/public/nonsfi/elf_loader.h"
13 13
14 namespace {
15
16 const struct nacl_irt_mojo kIrtMojo = {
17 MojoCreateSharedBuffer,
18 MojoDuplicateBufferHandle,
19 MojoMapBuffer,
20 MojoUnmapBuffer,
21 MojoCreateDataPipe,
22 MojoWriteData,
23 MojoBeginWriteData,
24 MojoEndWriteData,
25 MojoReadData,
26 MojoBeginReadData,
27 MojoEndReadData,
28 MojoGetTimeTicksNow,
29 MojoClose,
30 MojoWait,
31 MojoWaitMany,
32 MojoCreateMessagePipe,
33 MojoWriteMessage,
34 MojoReadMessage,
35 nullptr, // TODO(smklein): Add _MojoGetInitialHandle.
36 };
37
38 const struct nacl_irt_interface kIrtInterfaces[] = {
39 { NACL_IRT_MOJO_v0_1, &kIrtMojo, sizeof(kIrtMojo), nullptr }
40 };
41
42 size_t mojo_irt_nonsfi_query(const char* interface_ident,
43 void* table, size_t tablesize) {
44 size_t result = nacl_irt_query_list(interface_ident,
45 table,
46 tablesize,
47 kIrtInterfaces,
48 sizeof(kIrtInterfaces));
49 if (result != 0)
50 return result;
51 return nacl_irt_query_core(interface_ident, table, tablesize);
52 }
53
54 } // namespace
55
56 int main(int argc, char** argv, char** environ) { 14 int main(int argc, char** argv, char** environ) {
57 nacl_irt_nonsfi_allow_dev_interfaces(); 15 nacl_irt_nonsfi_allow_dev_interfaces();
58 if (argc < 2) { 16 if (argc < 2) {
59 std::cerr << "Usage: " << argv[0] << " <executable> <args...>\n"; 17 std::cerr << "Usage: " << argv[0] << " <executable> <args...>\n";
60 return 1; 18 return 1;
61 } 19 }
62 const char* nexe_filename = argv[1]; 20 const char* nexe_filename = argv[1];
63 int fd = open(nexe_filename, O_RDONLY); 21 int fd = open(nexe_filename, O_RDONLY);
64 if (fd < 0) { 22 if (fd < 0) {
65 std::cerr << "Failed to open " << nexe_filename << ": " << 23 std::cerr << "Failed to open " << nexe_filename << ": " <<
66 strerror(errno) << "\n"; 24 strerror(errno) << "\n";
67 return 1; 25 return 1;
68 } 26 }
69 uintptr_t entry = NaClLoadElfFile(fd); 27 uintptr_t entry = NaClLoadElfFile(fd);
70 28
71 mojo::embedder::Init(scoped_ptr<mojo::embedder::PlatformSupport>( 29 mojo::embedder::Init(scoped_ptr<mojo::embedder::PlatformSupport>(
72 new mojo::embedder::SimplePlatformSupport())); 30 new mojo::embedder::SimplePlatformSupport()));
73 31
74 return nacl_irt_nonsfi_entry(argc - 1, argv + 1, environ, 32 return nacl_irt_nonsfi_entry(argc - 1, argv + 1, environ,
75 reinterpret_cast<nacl_entry_func_t>(entry), 33 reinterpret_cast<nacl_entry_func_t>(entry),
76 mojo_irt_nonsfi_query); 34 mojo_irt_nonsfi_query);
77 } 35 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698