monacl_sel_main.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
16f56ab789cb470620554d624c37f488285b3b04eDan Albert// Copyright 2014 The Chromium Authors. All rights reserved. 26f56ab789cb470620554d624c37f488285b3b04eDan Albert// Use of this source code is governed by a BSD-style license that can be 36f56ab789cb470620554d624c37f488285b3b04eDan Albert// found in the LICENSE file. 46f56ab789cb470620554d624c37f488285b3b04eDan Albert 56f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "mojo/nacl/monacl_sel_main.h" 66f56ab789cb470620554d624c37f488285b3b04eDan Albert 76f56ab789cb470620554d624c37f488285b3b04eDan Albert#include <stdio.h> 86f56ab789cb470620554d624c37f488285b3b04eDan Albert 96f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "mojo/nacl/mojo_syscall.h" 106f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "native_client/src/public/chrome_main.h" 116f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "native_client/src/public/nacl_app.h" 126f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "native_client/src/trusted/desc/nacl_desc_io.h" 136f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "native_client/src/trusted/service_runtime/include/sys/fcntl.h" 146f56ab789cb470620554d624c37f488285b3b04eDan Albert 156f56ab789cb470620554d624c37f488285b3b04eDan Albertnamespace mojo { 166f56ab789cb470620554d624c37f488285b3b04eDan Albert 176f56ab789cb470620554d624c37f488285b3b04eDan Albertvoid LaunchNaCl(const char* nexe_file, const char* irt_file, 186f56ab789cb470620554d624c37f488285b3b04eDan Albert int app_argc, char* app_argv[]) { 196f56ab789cb470620554d624c37f488285b3b04eDan Albert NaClChromeMainInit(); 206f56ab789cb470620554d624c37f488285b3b04eDan Albert 216f56ab789cb470620554d624c37f488285b3b04eDan Albert // Open the IRT. 226f56ab789cb470620554d624c37f488285b3b04eDan Albert struct NaClDesc* irt_desc = (struct NaClDesc*) NaClDescIoDescOpen( 236f56ab789cb470620554d624c37f488285b3b04eDan Albert 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