Home | History | Annotate | Download | only in nacl
      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