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 "base/at_exit.h"
6#include "native_client/src/public/chrome_main.h"
7#include "native_client/src/public/irt_core.h"
8#include "ppapi/nacl_irt/irt_ppapi.h"
9#include "ppapi/nacl_irt/plugin_startup.h"
10
11void nacl_irt_start(uint32_t* info) {
12  nacl_irt_init(info);
13
14  // Though it isn't referenced here, we must instantiate an AtExitManager.
15  base::AtExitManager exit_manager;
16
17  // In SFI mode, the FDs of IPC channels are NACL_CHROME_DESC_BASE and its
18  // successor, which is set in nacl_listener.cc.
19  ppapi::SetIPCFileDescriptors(
20      NACL_CHROME_DESC_BASE,
21      NACL_CHROME_DESC_BASE + 1,
22      -1);  // Currently manifest service is disabled on NaCl in SFI mode.
23  ppapi::StartUpPlugin();
24
25  nacl_irt_enter_user_code(info, chrome_irt_query);
26}
27