// 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 #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