monacl_sel_main.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/nacl/monacl_sel_main.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <stdio.h> 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/nacl/mojo_syscall.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "native_client/src/public/chrome_main.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "native_client/src/public/nacl_app.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "native_client/src/trusted/desc/nacl_desc_io.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "native_client/src/trusted/service_runtime/include/sys/fcntl.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace mojo { 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid LaunchNaCl(const char* nexe_file, const char* irt_file, 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int app_argc, char* app_argv[]) { 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NaClChromeMainInit(); 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Open the IRT. 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci struct NaClDesc* irt_desc = (struct NaClDesc*) NaClDescIoDescOpen( 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci irt_file, NACL_ABI_O_RDONLY, 0); 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (NULL == irt_desc) { 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci perror(irt_file); 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci exit(1); 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Open the main executable. 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci struct NaClDesc* nexe_desc = (struct NaClDesc*) NaClDescIoDescOpen( 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci nexe_file, NACL_ABI_O_RDONLY, 0); 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (NULL == nexe_desc) { 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci perror(nexe_file); 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci exit(1); 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci struct NaClChromeMainArgs* args = NaClChromeMainArgsCreate(); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci args->nexe_desc = nexe_desc; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci args->irt_desc = irt_desc; 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci args->argc = app_argc; 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci args->argv = app_argv; 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci struct NaClApp* nap = NaClAppCreate(); 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci InjectMojo(nap); 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int exit_status = 1; 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NaClChromeMainStart(nap, args, &exit_status); 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NaClExit(exit_status); 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace mojo 53