1 // Copyright 2014 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 "mojo/nacl/monacl_sel_main.h" 6 7 #include <stdio.h> 8 9 #include "mojo/nacl/mojo_syscall.h" 10 #include "native_client/src/public/chrome_main.h" 11 #include "native_client/src/public/nacl_app.h" 12 #include "native_client/src/trusted/desc/nacl_desc_io.h" 13 #include "native_client/src/trusted/service_runtime/include/sys/fcntl.h" 14 15 namespace mojo { 16 17 void LaunchNaCl(const char* nexe_file, const char* irt_file, 18 int app_argc, char* app_argv[]) { 19 NaClChromeMainInit(); 20 21 // Open the IRT. 22 struct NaClDesc* irt_desc = (struct NaClDesc*) NaClDescIoDescOpen( 23 irt_file, NACL_ABI_O_RDONLY, 0); 24 if (NULL == irt_desc) { 25 perror(irt_file); 26 exit(1); 27 } 28 29 // Open the main executable. 30 struct NaClDesc* nexe_desc = (struct NaClDesc*) NaClDescIoDescOpen( 31 nexe_file, NACL_ABI_O_RDONLY, 0); 32 if (NULL == nexe_desc) { 33 perror(nexe_file); 34 exit(1); 35 } 36 37 struct NaClChromeMainArgs* args = NaClChromeMainArgsCreate(); 38 args->nexe_desc = nexe_desc; 39 args->irt_desc = irt_desc; 40 41 args->argc = app_argc; 42 args->argv = app_argv; 43 44 struct NaClApp* nap = NaClAppCreate(); 45 InjectMojo(nap); 46 47 int exit_status = 1; 48 NaClChromeMainStart(nap, args, &exit_status); 49 NaClExit(exit_status); 50 } 51 52 } // namespace mojo 53