Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/trusted/plugin/plugin.cc

Issue 5622003: Restructure the structs/unions involved in SRPC argument passing. This will... (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: '' Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright 2008 The Native Client Authors. All rights reserved. 2 * Copyright 2008 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can 3 * Use of this source code is governed by a BSD-style license that can
4 * be found in the LICENSE file. 4 * be found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/trusted/plugin/plugin.h" 7 #include "native_client/src/trusted/plugin/plugin.h"
8 8
9 #include <assert.h> 9 #include <assert.h>
10 #include <fcntl.h> 10 #include <fcntl.h>
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 plugin::SharedMemory::New(plugin, params->ins()[0]->u.ival); 59 plugin::SharedMemory::New(plugin, params->ins()[0]->u.ival);
60 plugin::ScriptableHandle* shared_memory = 60 plugin::ScriptableHandle* shared_memory =
61 plugin->browser_interface()->NewScriptableHandle(portable_shared_memory); 61 plugin->browser_interface()->NewScriptableHandle(portable_shared_memory);
62 if (NULL == shared_memory) { 62 if (NULL == shared_memory) {
63 params->set_exception_string("out of memory"); 63 params->set_exception_string("out of memory");
64 portable_shared_memory->Delete(); 64 portable_shared_memory->Delete();
65 return false; 65 return false;
66 } 66 }
67 67
68 params->outs()[0]->tag = NACL_SRPC_ARG_TYPE_OBJECT; 68 params->outs()[0]->tag = NACL_SRPC_ARG_TYPE_OBJECT;
69 params->outs()[0]->u.oval = shared_memory; 69 params->outs()[0]->arrays.oval = shared_memory;
70 return true; 70 return true;
71 } 71 }
72 72
73 bool DefaultSocketAddress(void* obj, plugin::SrpcParams* params) { 73 bool DefaultSocketAddress(void* obj, plugin::SrpcParams* params) {
74 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj); 74 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj);
75 if (NULL == plugin->socket_address()) { 75 if (NULL == plugin->socket_address()) {
76 params->set_exception_string("no socket address"); 76 params->set_exception_string("no socket address");
77 return false; 77 return false;
78 } 78 }
79 // Plug the scriptable object into the return values. 79 // Plug the scriptable object into the return values.
80 params->outs()[0]->tag = NACL_SRPC_ARG_TYPE_OBJECT; 80 params->outs()[0]->tag = NACL_SRPC_ARG_TYPE_OBJECT;
81 params->outs()[0]->u.oval = plugin->socket_address()->AddRef(); 81 params->outs()[0]->arrays.oval = plugin->socket_address()->AddRef();
82 return true; 82 return true;
83 } 83 }
84 84
85 // A method to test the cost of invoking a method in a plugin without 85 // A method to test the cost of invoking a method in a plugin without
86 // making an RPC to the service runtime. Used for performance evaluation. 86 // making an RPC to the service runtime. Used for performance evaluation.
87 bool NullPluginMethod(void* obj, plugin::SrpcParams* params) { 87 bool NullPluginMethod(void* obj, plugin::SrpcParams* params) {
88 UNREFERENCED_PARAMETER(obj); 88 UNREFERENCED_PARAMETER(obj);
89 params->outs()[0]->tag = NACL_SRPC_ARG_TYPE_INT; 89 params->outs()[0]->tag = NACL_SRPC_ARG_TYPE_INT;
90 params->outs()[0]->u.ival = 0; 90 params->outs()[0]->u.ival = 0;
91 return true; 91 return true;
(...skipping 19 matching lines...) Expand all
111 UNREFERENCED_PARAMETER(obj); 111 UNREFERENCED_PARAMETER(obj);
112 UNREFERENCED_PARAMETER(params); 112 UNREFERENCED_PARAMETER(params);
113 params->set_exception_string("__nexes is a write-only property"); 113 params->set_exception_string("__nexes is a write-only property");
114 return false; 114 return false;
115 } 115 }
116 116
117 // Update "nexes", a write-only property that computes a value to 117 // Update "nexes", a write-only property that computes a value to
118 // assign to the "src" property based on the supported sandbox. 118 // assign to the "src" property based on the supported sandbox.
119 bool SetNexesProperty(void* obj, plugin::SrpcParams* params) { 119 bool SetNexesProperty(void* obj, plugin::SrpcParams* params) {
120 return reinterpret_cast<plugin::Plugin*>(obj)-> 120 return reinterpret_cast<plugin::Plugin*>(obj)->
121 SetNexesPropertyImpl(params->ins()[0]->u.sval.str); 121 SetNexesPropertyImpl(params->ins()[0]->arrays.str);
122 } 122 }
123 123
124 bool GetSrcProperty(void* obj, plugin::SrpcParams* params) { 124 bool GetSrcProperty(void* obj, plugin::SrpcParams* params) {
125 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj); 125 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj);
126 const char* url = plugin->nacl_module_url().c_str(); 126 const char* url = plugin->nacl_module_url().c_str();
127 PLUGIN_PRINTF(("GetSrcProperty ('src'='%s')\n", url)); 127 PLUGIN_PRINTF(("GetSrcProperty ('src'='%s')\n", url));
128 if (NACL_NO_URL != plugin->nacl_module_url()) { 128 if (NACL_NO_URL != plugin->nacl_module_url()) {
129 params->outs()[0]->u.sval.str = strdup(url); 129 params->outs()[0]->arrays.str = strdup(url);
130 return true; 130 return true;
131 } else { 131 } else {
132 // No url to set 'src' to. 132 // No url to set 'src' to.
133 return false; 133 return false;
134 } 134 }
135 } 135 }
136 136
137 bool SetSrcProperty(void* obj, plugin::SrpcParams* params) { 137 bool SetSrcProperty(void* obj, plugin::SrpcParams* params) {
138 PLUGIN_PRINTF(("SetSrcProperty ()\n")); 138 PLUGIN_PRINTF(("SetSrcProperty ()\n"));
139 return reinterpret_cast<plugin::Plugin*>(obj)-> 139 return reinterpret_cast<plugin::Plugin*>(obj)->
140 SetSrcPropertyImpl(params->ins()[0]->u.sval.str); 140 SetSrcPropertyImpl(params->ins()[0]->arrays.str);
141 } 141 }
142 142
143 bool GetHeightProperty(void* obj, plugin::SrpcParams* params) { 143 bool GetHeightProperty(void* obj, plugin::SrpcParams* params) {
144 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj); 144 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj);
145 params->outs()[0]->u.ival = plugin->height(); 145 params->outs()[0]->u.ival = plugin->height();
146 return true; 146 return true;
147 } 147 }
148 148
149 bool SetHeightProperty(void* obj, plugin::SrpcParams* params) { 149 bool SetHeightProperty(void* obj, plugin::SrpcParams* params) {
150 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj); 150 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 bool Plugin::SendAsyncMessage(void* obj, SrpcParams* params, 190 bool Plugin::SendAsyncMessage(void* obj, SrpcParams* params,
191 nacl::DescWrapper** fds, int fds_count) { 191 nacl::DescWrapper** fds, int fds_count) {
192 Plugin* plugin = reinterpret_cast<Plugin*>(obj); 192 Plugin* plugin = reinterpret_cast<Plugin*>(obj);
193 if (plugin->service_runtime_ == NULL) { 193 if (plugin->service_runtime_ == NULL) {
194 params->set_exception_string("No subprocess running"); 194 params->set_exception_string("No subprocess running");
195 return false; 195 return false;
196 } 196 }
197 197
198 // TODO(mseaborn): Handle strings containing NULLs. This might 198 // TODO(mseaborn): Handle strings containing NULLs. This might
199 // involve using a different SRPC type. 199 // involve using a different SRPC type.
200 char* utf8string = params->ins()[0]->u.sval.str; 200 char* utf8string = params->ins()[0]->arrays.str;
201 char* data; 201 char* data;
202 size_t data_size; 202 size_t data_size;
203 if (!ByteStringFromUTF8(utf8string, strlen(utf8string), &data, &data_size)) { 203 if (!ByteStringFromUTF8(utf8string, strlen(utf8string), &data, &data_size)) {
204 params->set_exception_string("Invalid string"); 204 params->set_exception_string("Invalid string");
205 return false; 205 return false;
206 } 206 }
207 nacl::DescWrapper::MsgIoVec iov; 207 nacl::DescWrapper::MsgIoVec iov;
208 nacl::DescWrapper::MsgHeader message; 208 nacl::DescWrapper::MsgHeader message;
209 iov.base = data; 209 iov.base = data;
210 iov.length = static_cast<nacl_abi_size_t>(data_size); 210 iov.length = static_cast<nacl_abi_size_t>(data_size);
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 743
744 void VideoGlobalLock() { 744 void VideoGlobalLock() {
745 g_VideoMutex.Lock(); 745 g_VideoMutex.Lock();
746 } 746 }
747 747
748 void VideoGlobalUnlock() { 748 void VideoGlobalUnlock() {
749 g_VideoMutex.Unlock(); 749 g_VideoMutex.Unlock();
750 } 750 }
751 751
752 } // namespace plugin 752 } // namespace plugin
OLDNEW
« no previous file with comments | « src/trusted/plugin/npapi/scriptable_impl_npapi.cc ('k') | src/trusted/plugin/ppapi/var_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698