Index: mojo/nacl/monacl_sel_main.cc |
diff --git a/mojo/nacl/monacl_sel_main.cc b/mojo/nacl/monacl_sel_main.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4fbc5757b6992004b27587f64c6cdfd5ac6a658b |
--- /dev/null |
+++ b/mojo/nacl/monacl_sel_main.cc |
@@ -0,0 +1,52 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "mojo/nacl/monacl_sel_main.h" |
+ |
+#include <stdio.h> |
+ |
+#include "mojo/nacl/mojo_syscall.h" |
+#include "native_client/src/public/chrome_main.h" |
+#include "native_client/src/public/nacl_app.h" |
+#include "native_client/src/trusted/desc/nacl_desc_io.h" |
+#include "native_client/src/trusted/service_runtime/include/sys/fcntl.h" |
+ |
+namespace mojo { |
+ |
+void LaunchNaCl(const char* nexe_file, const char* irt_file, |
+ int app_argc, char* app_argv[]) { |
+ NaClChromeMainInit(); |
+ |
+ // Open the IRT. |
+ struct NaClDesc* irt_desc = (struct NaClDesc*) NaClDescIoDescOpen( |
+ irt_file, NACL_ABI_O_RDONLY, 0); |
+ if (NULL == irt_desc) { |
+ perror(irt_file); |
+ exit(1); |
+ } |
+ |
+ // Open the main executable. |
+ struct NaClDesc* nexe_desc = (struct NaClDesc*) NaClDescIoDescOpen( |
+ nexe_file, NACL_ABI_O_RDONLY, 0); |
+ if (NULL == nexe_desc) { |
+ perror(nexe_file); |
+ exit(1); |
+ } |
+ |
+ struct NaClChromeMainArgs* args = NaClChromeMainArgsCreate(); |
+ args->nexe_desc = nexe_desc; |
+ args->irt_desc = irt_desc; |
+ |
+ args->argc = app_argc; |
+ args->argv = app_argv; |
+ |
+ struct NaClApp* nap = NaClAppCreate(); |
+ InjectMojo(nap); |
+ |
+ int exit_status = 1; |
+ NaClChromeMainStart(nap, args, &exit_status); |
+ NaClExit(exit_status); |
+} |
+ |
+} // namespace mojo |