Skip to content

Commit

Permalink
NaCl cleanup: Split out irt_interfaces.cc from irt_ppapi.cc
Browse files Browse the repository at this point in the history
The intention here is that irt_interfaces.{cc,h} should list the NaCl
IRT interfaces that we implement in Chromium but that other files
(like irt_ppapi.cc) should implement them.  This matches how the files
are organised in native_client/src/untrusted/irt/.

This is in preparation for copying the PNaCl translator IRT interfaces
to the Chromium side.  That will add a couple more interfaces to
irt_interfaces.cc (rather than to irt_ppapi.cc).

BUG=302078
TEST=NaCl tests in browser_tests

Review URL: https://codereview.chromium.org/1244533006

Cr-Commit-Position: refs/heads/master@{#339508}
  • Loading branch information
mseaborn authored and Commit bot committed Jul 20, 2015
1 parent 92701ee commit 5e66201
Show file tree
Hide file tree
Showing 8 changed files with 93 additions and 68 deletions.
2 changes: 1 addition & 1 deletion components/nacl/loader/nonsfi/nonsfi_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

#if defined(OS_NACL_NONSFI)
#include "native_client/src/public/nonsfi/elf_loader.h"
#include "ppapi/nacl_irt/irt_ppapi.h"
#include "ppapi/nacl_irt/irt_interfaces.h"
#else
#include "base/memory/scoped_ptr.h"
#include "components/nacl/loader/nonsfi/elf_loader.h"
Expand Down
70 changes: 70 additions & 0 deletions ppapi/nacl_irt/irt_interfaces.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// Copyright 2015 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 "ppapi/nacl_irt/irt_interfaces.h"

#include <unistd.h>

#include "build/build_config.h"
#include "native_client/src/public/irt_core.h"
#include "native_client/src/trusted/service_runtime/include/sys/unistd.h"
#include "native_client/src/untrusted/irt/irt.h"
#include "ppapi/nacl_irt/irt_manifest.h"
#include "ppapi/nacl_irt/public/irt_ppapi.h"
#include "ppapi/native_client/src/untrusted/pnacl_irt_shim/irt_shim_ppapi.h"

#if defined(OS_NACL_SFI)
static int ppapihook_pnacl_private_filter(void) {
int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE);
if (pnacl_mode == -1)
return 0;
return pnacl_mode;
}
#endif

static const nacl_irt_resource_open kIrtResourceOpen = {
ppapi::IrtOpenResource,
};

#if defined(OS_NACL_SFI)
static int not_pnacl_filter(void) {
int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE);
if (pnacl_mode == -1)
return 0;
return !pnacl_mode;
}
#endif

static const struct nacl_irt_interface irt_interfaces[] = {
{ NACL_IRT_PPAPIHOOK_v0_1, &nacl_irt_ppapihook, sizeof(nacl_irt_ppapihook),
NULL },
#if defined(OS_NACL_SFI)
{ NACL_IRT_PPAPIHOOK_PNACL_PRIVATE_v0_1,
&nacl_irt_ppapihook_pnacl_private, sizeof(nacl_irt_ppapihook_pnacl_private),
ppapihook_pnacl_private_filter },
#endif
{ NACL_IRT_RESOURCE_OPEN_v0_1, &kIrtResourceOpen,
sizeof(kIrtResourceOpen),
#if defined(OS_NACL_SFI)
not_pnacl_filter,
#else
// If we change PNaCl to use Non-SFI Mode on the open web,
// we should add a filter here.
NULL,
#endif
},
};

size_t chrome_irt_query(const char* interface_ident,
void* table, size_t tablesize) {
size_t result = nacl_irt_query_list(interface_ident,
table,
tablesize,
irt_interfaces,
sizeof(irt_interfaces));
if (result != 0)
return result;

return nacl_irt_query_core(interface_ident, table, tablesize);
}
15 changes: 15 additions & 0 deletions ppapi/nacl_irt/irt_interfaces.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright 2015 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.

#ifndef PPAPI_NACL_IRT_IRT_INTERFACES_H_
#define PPAPI_NACL_IRT_IRT_INTERFACES_H_

#include <stdlib.h>

extern const struct nacl_irt_ppapihook nacl_irt_ppapihook;

size_t chrome_irt_query(const char* interface_ident,
void* table, size_t tablesize);

#endif // PPAPI_NACL_IRT_IRT_INTERFACES_H_
65 changes: 2 additions & 63 deletions ppapi/nacl_irt/irt_ppapi.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <unistd.h>

#include "build/build_config.h"
#include "native_client/src/public/irt_core.h"
#include "native_client/src/trusted/service_runtime/include/sys/unistd.h"
#include "native_client/src/untrusted/irt/irt.h"
#include "ppapi/nacl_irt/irt_manifest.h"
#include "ppapi/nacl_irt/irt_interfaces.h"
#include "ppapi/nacl_irt/irt_ppapi.h"
#include "ppapi/nacl_irt/plugin_main.h"
#include "ppapi/nacl_irt/public/irt_ppapi.h"
#include "ppapi/native_client/src/untrusted/pnacl_irt_shim/irt_shim_ppapi.h"

static struct PP_StartFunctions g_pp_functions;

Expand All @@ -34,62 +28,7 @@ const void* PPP_GetInterface(const char* interface_name) {
return g_pp_functions.PPP_GetInterface(interface_name);
}

static const struct nacl_irt_ppapihook nacl_irt_ppapihook = {
const struct nacl_irt_ppapihook nacl_irt_ppapihook = {
irt_ppapi_start,
PpapiPluginRegisterThreadCreator,
};

#if defined(OS_NACL_SFI)
static int ppapihook_pnacl_private_filter(void) {
int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE);
if (pnacl_mode == -1)
return 0;
return pnacl_mode;
}
#endif

static const nacl_irt_resource_open kIrtResourceOpen = {
ppapi::IrtOpenResource,
};

#if defined(OS_NACL_SFI)
static int not_pnacl_filter(void) {
int pnacl_mode = sysconf(NACL_ABI__SC_NACL_PNACL_MODE);
if (pnacl_mode == -1)
return 0;
return !pnacl_mode;
}
#endif

static const struct nacl_irt_interface irt_interfaces[] = {
{ NACL_IRT_PPAPIHOOK_v0_1, &nacl_irt_ppapihook, sizeof(nacl_irt_ppapihook),
NULL },
#if defined(OS_NACL_SFI)
{ NACL_IRT_PPAPIHOOK_PNACL_PRIVATE_v0_1,
&nacl_irt_ppapihook_pnacl_private, sizeof(nacl_irt_ppapihook_pnacl_private),
ppapihook_pnacl_private_filter },
#endif
{ NACL_IRT_RESOURCE_OPEN_v0_1, &kIrtResourceOpen,
sizeof(kIrtResourceOpen),
#if defined(OS_NACL_SFI)
not_pnacl_filter,
#else
// If we change PNaCl to use Non-SFI Mode on the open web,
// we should add a filter here.
NULL,
#endif
},
};

size_t chrome_irt_query(const char* interface_ident,
void* table, size_t tablesize) {
size_t result = nacl_irt_query_list(interface_ident,
table,
tablesize,
irt_interfaces,
sizeof(irt_interfaces));
if (result != 0)
return result;

return nacl_irt_query_core(interface_ident, table, tablesize);
}
3 changes: 0 additions & 3 deletions ppapi/nacl_irt/irt_ppapi.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,4 @@

extern "C" int irt_ppapi_start(const struct PP_StartFunctions* funcs);

size_t chrome_irt_query(const char* interface_ident,
void* table, size_t tablesize);

#endif // PPAPI_NACL_IRT_IRT_PPAPI_H_
2 changes: 1 addition & 1 deletion ppapi/nacl_irt/irt_start.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#include "base/at_exit.h"
#include "native_client/src/public/chrome_main.h"
#include "native_client/src/public/irt_core.h"
#include "ppapi/nacl_irt/irt_ppapi.h"
#include "ppapi/nacl_irt/irt_interfaces.h"
#include "ppapi/nacl_irt/plugin_startup.h"

void nacl_irt_start(uint32_t* info) {
Expand Down
2 changes: 2 additions & 0 deletions ppapi/ppapi_proxy.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,8 @@
'target_conditions': [
['>(nacl_untrusted_build)==1', {
'sources': [
'nacl_irt/irt_interfaces.cc',
'nacl_irt/irt_interfaces.h',
'nacl_irt/irt_ppapi.cc',
'nacl_irt/irt_ppapi.h',
'nacl_irt/irt_start.cc',
Expand Down
2 changes: 2 additions & 0 deletions ppapi/proxy/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ component("proxy") {

if (is_nacl) {
sources += [
"../nacl_irt/irt_interfaces.cc",
"../nacl_irt/irt_interfaces.h",
"../nacl_irt/irt_ppapi.cc",
"../nacl_irt/irt_ppapi.h",
"../nacl_irt/irt_start.cc",
Expand Down

0 comments on commit 5e66201

Please sign in to comment.