Commit eaa3c5bf authored by yusukes's avatar yusukes Committed by Commit bot

Increase MessageAttachmentSet::kMaxDescriptorsPerMessage to 128

so that dynamically linked NaCl applications like ARC (App Runtime
for Chrome) start faster.

ARC is a dynamically linked NaCl application which lists more than
70 DSO files in its nmf file. crrev.com/319931 allowed Chrome to
pre-open up to 2 DSO files when it spawns a NaCl plugin process so
that the plugin process can open/read/map the DSO files without
issuing any Chrome IPC. This CL increase the number of DSO files
Chrome can pre-open from 2 to 120+.

BUG=348232
BUG=nativeclient:3802
TEST=ipc_tests, browser_tests (*PackagedAppTest.SuccessfulLoad)
TEST=manually tested non-SFI ARC apps

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

Cr-Commit-Position: refs/heads/master@{#320831}
parent c9704788
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "content/public/browser/plugin_service.h" #include "content/public/browser/plugin_service.h"
#include "content/public/browser/render_process_host.h" #include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "ipc/ipc_message_attachment_set.h"
#include "ipc/ipc_platform_file.h" #include "ipc/ipc_platform_file.h"
#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h" #include "net/url_request/url_request_context_getter.h"
...@@ -25,9 +26,15 @@ namespace nacl { ...@@ -25,9 +26,15 @@ namespace nacl {
namespace { namespace {
// The maximum number of resource file handles NaClProcessMsg_Start message // The maximum number of resource file handles NaClProcessMsg_Start message
// can have. // can have. Currently IPC::MessageAttachmentSet::kMaxDescriptorsPerMessage
// TODO(yusukes): Increase the number. // is 128 and NaCl sends 5 handles for other purposes, hence 123.
const size_t kMaxPreOpenResourceFiles = 2; const size_t kMaxPreOpenResourceFiles = 123;
#if defined(OS_POSIX)
static_assert(kMaxPreOpenResourceFiles ==
IPC::MessageAttachmentSet::kMaxDescriptorsPerMessage - 5,
"kMaxPreOpenResourceFiles is not up to date");
#endif
ppapi::PpapiPermissions GetNaClPermissions( ppapi::PpapiPermissions GetNaClPermissions(
uint32 permission_bits, uint32 permission_bits,
......
...@@ -37,7 +37,7 @@ bool ReadDataOnReaderThread(int pipe, MessageContents* contents) { ...@@ -37,7 +37,7 @@ bool ReadDataOnReaderThread(int pipe, MessageContents* contents) {
return false; return false;
contents->data.resize(Channel::kReadBufferSize); contents->data.resize(Channel::kReadBufferSize);
contents->fds.resize(MessageAttachmentSet::kMaxDescriptorsPerMessage); contents->fds.resize(NACL_ABI_IMC_DESC_MAX);
NaClAbiNaClImcMsgIoVec iov = { &contents->data[0], contents->data.size() }; NaClAbiNaClImcMsgIoVec iov = { &contents->data[0], contents->data.size() };
NaClAbiNaClImcMsgHdr msg = { NaClAbiNaClImcMsgHdr msg = {
......
...@@ -65,7 +65,7 @@ class IPC_EXPORT MessageAttachmentSet ...@@ -65,7 +65,7 @@ class IPC_EXPORT MessageAttachmentSet
// //
// In debugging mode, it's a fatal error to try and add more than this number // In debugging mode, it's a fatal error to try and add more than this number
// of descriptors to a MessageAttachmentSet. // of descriptors to a MessageAttachmentSet.
static const size_t kMaxDescriptorsPerMessage = 7; static const size_t kMaxDescriptorsPerMessage = 128;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Interfaces for transmission... // Interfaces for transmission...
......
...@@ -33,8 +33,8 @@ extern "C" { ...@@ -33,8 +33,8 @@ extern "C" {
namespace { namespace {
const unsigned kNumFDsToSend = 7; // per message const unsigned kNumFDsToSend = 128; // per message
const unsigned kNumMessages = 20; const unsigned kNumMessages = 3;
const char* kDevZeroPath = "/dev/zero"; const char* kDevZeroPath = "/dev/zero";
#if defined(OS_POSIX) #if defined(OS_POSIX)
......
...@@ -69,8 +69,9 @@ ...@@ -69,8 +69,9 @@
'packaged_app/test_file2.txt', 'packaged_app/test_file2.txt',
], ],
'create_nmf_args_portable': [ 'create_nmf_args_portable': [
# Add lots of "files" entries to make sure that open_resource can # Add 129 "files" entries to make sure that open_resource can handle
# handle more files than FileDescriptorSet::kMaxDescriptorsPerMessage. # more files than IPC::MessageAttachmentSet::kMaxDescriptorsPerMessage
# which is currently 128.
'-xtest_file0:test_file.txt', '-xtest_file0:test_file.txt',
'-xtest_file1:test_file2.txt', '-xtest_file1:test_file2.txt',
'-xtest_file2:test_file.txt', '-xtest_file2:test_file.txt',
...@@ -79,6 +80,127 @@ ...@@ -79,6 +80,127 @@
'-xtest_file5:test_file2.txt', '-xtest_file5:test_file2.txt',
'-xtest_file6:test_file.txt', '-xtest_file6:test_file.txt',
'-xtest_file7:test_file2.txt', '-xtest_file7:test_file2.txt',
'-xtest_file8:test_file.txt',
'-xtest_file9:test_file2.txt',
'-xtest_file10:test_file.txt',
'-xtest_file11:test_file2.txt',
'-xtest_file12:test_file.txt',
'-xtest_file13:test_file2.txt',
'-xtest_file14:test_file.txt',
'-xtest_file15:test_file2.txt',
'-xtest_file16:test_file.txt',
'-xtest_file17:test_file2.txt',
'-xtest_file18:test_file.txt',
'-xtest_file19:test_file2.txt',
'-xtest_file20:test_file.txt',
'-xtest_file21:test_file2.txt',
'-xtest_file22:test_file.txt',
'-xtest_file23:test_file2.txt',
'-xtest_file24:test_file.txt',
'-xtest_file25:test_file2.txt',
'-xtest_file26:test_file.txt',
'-xtest_file27:test_file2.txt',
'-xtest_file28:test_file.txt',
'-xtest_file29:test_file2.txt',
'-xtest_file30:test_file.txt',
'-xtest_file31:test_file2.txt',
'-xtest_file32:test_file.txt',
'-xtest_file33:test_file2.txt',
'-xtest_file34:test_file.txt',
'-xtest_file35:test_file2.txt',
'-xtest_file36:test_file.txt',
'-xtest_file37:test_file2.txt',
'-xtest_file38:test_file.txt',
'-xtest_file39:test_file2.txt',
'-xtest_file40:test_file.txt',
'-xtest_file41:test_file2.txt',
'-xtest_file42:test_file.txt',
'-xtest_file43:test_file2.txt',
'-xtest_file44:test_file.txt',
'-xtest_file45:test_file2.txt',
'-xtest_file46:test_file.txt',
'-xtest_file47:test_file2.txt',
'-xtest_file48:test_file.txt',
'-xtest_file49:test_file2.txt',
'-xtest_file50:test_file.txt',
'-xtest_file51:test_file2.txt',
'-xtest_file52:test_file.txt',
'-xtest_file53:test_file2.txt',
'-xtest_file54:test_file.txt',
'-xtest_file55:test_file2.txt',
'-xtest_file56:test_file.txt',
'-xtest_file57:test_file2.txt',
'-xtest_file58:test_file.txt',
'-xtest_file59:test_file2.txt',
'-xtest_file60:test_file.txt',
'-xtest_file61:test_file2.txt',
'-xtest_file62:test_file.txt',
'-xtest_file63:test_file2.txt',
'-xtest_file64:test_file.txt',
'-xtest_file65:test_file2.txt',
'-xtest_file66:test_file.txt',
'-xtest_file67:test_file2.txt',
'-xtest_file68:test_file.txt',
'-xtest_file69:test_file2.txt',
'-xtest_file70:test_file.txt',
'-xtest_file71:test_file2.txt',
'-xtest_file72:test_file.txt',
'-xtest_file73:test_file2.txt',
'-xtest_file74:test_file.txt',
'-xtest_file75:test_file2.txt',
'-xtest_file76:test_file.txt',
'-xtest_file77:test_file2.txt',
'-xtest_file78:test_file.txt',
'-xtest_file79:test_file2.txt',
'-xtest_file80:test_file.txt',
'-xtest_file81:test_file2.txt',
'-xtest_file82:test_file.txt',
'-xtest_file83:test_file2.txt',
'-xtest_file84:test_file.txt',
'-xtest_file85:test_file2.txt',
'-xtest_file86:test_file.txt',
'-xtest_file87:test_file2.txt',
'-xtest_file88:test_file.txt',
'-xtest_file89:test_file2.txt',
'-xtest_file90:test_file.txt',
'-xtest_file91:test_file2.txt',
'-xtest_file92:test_file.txt',
'-xtest_file93:test_file2.txt',
'-xtest_file94:test_file.txt',
'-xtest_file95:test_file2.txt',
'-xtest_file96:test_file.txt',
'-xtest_file97:test_file2.txt',
'-xtest_file98:test_file.txt',
'-xtest_file99:test_file2.txt',
'-xtest_file100:test_file.txt',
'-xtest_file101:test_file2.txt',
'-xtest_file102:test_file.txt',
'-xtest_file103:test_file2.txt',
'-xtest_file104:test_file.txt',
'-xtest_file105:test_file2.txt',
'-xtest_file106:test_file.txt',
'-xtest_file107:test_file2.txt',
'-xtest_file108:test_file.txt',
'-xtest_file109:test_file2.txt',
'-xtest_file110:test_file.txt',
'-xtest_file111:test_file2.txt',
'-xtest_file112:test_file.txt',
'-xtest_file113:test_file2.txt',
'-xtest_file114:test_file.txt',
'-xtest_file115:test_file2.txt',
'-xtest_file116:test_file.txt',
'-xtest_file117:test_file2.txt',
'-xtest_file118:test_file.txt',
'-xtest_file119:test_file2.txt',
'-xtest_file120:test_file.txt',
'-xtest_file121:test_file2.txt',
'-xtest_file122:test_file.txt',
'-xtest_file123:test_file2.txt',
'-xtest_file124:test_file.txt',
'-xtest_file125:test_file2.txt',
'-xtest_file126:test_file.txt',
'-xtest_file127:test_file2.txt',
'-xtest_file128:test_file.txt',
], ],
}, },
'conditions': [ 'conditions': [
......
...@@ -22,11 +22,11 @@ namespace { ...@@ -22,11 +22,11 @@ namespace {
std::string g_last_error; std::string g_last_error;
pp::Instance* g_instance = NULL; pp::Instance* g_instance = NULL;
// This should be the same as FileDescriptorSet::kMaxDescriptorsPerMessage in // This should be the same as MessageAttachmentSet::kMaxDescriptorsPerMessage in
// ipc/file_descriptor_set_posix.h. // ipc/ipc_message_attachment_set.h.
// TODO(yusukes): Once all the NaCl toolchains support C++11, Add // TODO(yusukes): Once all the NaCl toolchains support C++11, Add
// #include "ipc/file_descriptor_set_posix.h" and remove the constant. // #include "ipc/file_descriptor_set_posix.h" and remove the constant.
const size_t kMaxDescriptorsPerMessage = 7; const size_t kMaxDescriptorsPerMessage = 128;
// Returns true if the resource file whose name is |key| exists and its content // Returns true if the resource file whose name is |key| exists and its content
// matches |content|. // matches |content|.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment