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

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

Issue 8825007: Native Client side changes for debugging support: stdout/err -> postmessage. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 9 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 (c) 2011 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2011 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "native_client/src/trusted/reverse_service/reverse_service.h" 9 #include "native_client/src/trusted/reverse_service/reverse_service.h"
10 10
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 if (NULL == service->reverse_interface()) { 117 if (NULL == service->reverse_interface()) {
118 NaClLog(4, "ModuleExitRpc: no reverse_interface. Nothing to do.\n"); 118 NaClLog(4, "ModuleExitRpc: no reverse_interface. Nothing to do.\n");
119 } else { 119 } else {
120 NaClLog(4, "ModuleExitRpc: invoking ReportExitStatus\n"); 120 NaClLog(4, "ModuleExitRpc: invoking ReportExitStatus\n");
121 service->reverse_interface()->ReportExitStatus(exit_status); 121 service->reverse_interface()->ReportExitStatus(exit_status);
122 } 122 }
123 NaClLog(4, "Leaving ModuleExitRpc\n"); 123 NaClLog(4, "Leaving ModuleExitRpc\n");
124 rpc->result = NACL_SRPC_RESULT_OK; 124 rpc->result = NACL_SRPC_RESULT_OK;
125 } 125 }
126 126
127 void PostMessageRpc(NaClSrpcRpc* rpc,
128 NaClSrpcArg** in_args,
129 NaClSrpcArg** out_args,
130 NaClSrpcClosure* done) {
131 nacl::ReverseService* service = reinterpret_cast<nacl::ReverseService*>(
132 rpc->channel->server_instance_data);
133 char* message = in_args[0]->arrays.carr;
134 nacl_abi_size_t nbytes = in_args[0]->u.count;
135 NaClSrpcClosureRunner on_return(done);
136
137 NaClLog(4, "Entered PostMessageRpc\n");
138 if (NULL == service->reverse_interface()) {
139 NaClLog(1, "PostMessage RPC, no reverse_interface. Message: %s\n",
140 message);
141 } else {
142 service->reverse_interface()->PostMessage(std::string(message, nbytes));
143 }
144 out_args[0]->u.ival = (int32_t) nbytes;
145 NaClLog(4, "Leaving PostMessageRpc\n");
146 rpc->result = NACL_SRPC_RESULT_OK;
147 }
148
127 // Manifest name service, internal APIs. 149 // Manifest name service, internal APIs.
128 // 150 //
129 // Manifest file lookups result in read-only file descriptors with a 151 // Manifest file lookups result in read-only file descriptors with a
130 // handle. When the descriptor is closed, the service runtime must 152 // handle. When the descriptor is closed, the service runtime must
131 // inform the plugin of this using the handle, so that the File object 153 // inform the plugin of this using the handle, so that the File object
132 // reference can be closed (thereby allowing the browser to delete or 154 // reference can be closed (thereby allowing the browser to delete or
133 // otherwise garbage collect the file). Files, being from the 155 // otherwise garbage collect the file). Files, being from the
134 // manifest, cannot be deleted. The manifest is also a read-only 156 // manifest, cannot be deleted. The manifest is also a read-only
135 // object, so no new entries can be made to it. 157 // object, so no new entries can be made to it.
136 // 158 //
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 // 287 //
266 // TODO(bsy): replace with real code. 288 // TODO(bsy): replace with real code.
267 out_args[0]->u.ival = 0; // ok 289 out_args[0]->u.ival = 0; // ok
268 rpc->result = NACL_SRPC_RESULT_OK; 290 rpc->result = NACL_SRPC_RESULT_OK;
269 } 291 }
270 292
271 } // namespace 293 } // namespace
272 294
273 namespace nacl { 295 namespace nacl {
274 296
297 // TODO(bsy): this is a temporary cross-repo hack; should be removed
298 // when the interface is made pure virtual again
299 void ReverseInterface::PostMessage(nacl::string message) {
300 NaClLog(0, "ReverseInterface::PostMessage(NACL_OUTPUT_TAG:%s)\n",
301 message.c_str());
302 }
303
275 // need NaClThreadIfFactoryFunction that keeps "this" to do counting 304 // need NaClThreadIfFactoryFunction that keeps "this" to do counting
276 305
277 struct ReverseCountingThreadInterface { 306 struct ReverseCountingThreadInterface {
278 struct NaClThreadInterface base NACL_IS_REFCOUNT_SUBCLASS; 307 struct NaClThreadInterface base NACL_IS_REFCOUNT_SUBCLASS;
279 nacl::ReverseService* rev; 308 nacl::ReverseService* rev;
280 }; 309 };
281 310
282 /* fwd */ extern NaClThreadInterfaceVtbl const kReverseThreadInterfaceVtbl; 311 /* fwd */ extern NaClThreadInterfaceVtbl const kReverseThreadInterfaceVtbl;
283 312
284 int ReverseThreadIfFactoryFn( 313 int ReverseThreadIfFactoryFn(
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 ReverseThreadIfLaunchCallback, 416 ReverseThreadIfLaunchCallback,
388 ReverseThreadIfExit, 417 ReverseThreadIfExit,
389 }; 418 };
390 419
391 NaClSrpcHandlerDesc const ReverseService::handlers[] = { 420 NaClSrpcHandlerDesc const ReverseService::handlers[] = {
392 { NACL_REVERSE_CONTROL_TEST, Test, }, 421 { NACL_REVERSE_CONTROL_TEST, Test, },
393 { NACL_REVERSE_CONTROL_LOG, RevLog, }, 422 { NACL_REVERSE_CONTROL_LOG, RevLog, },
394 { NACL_REVERSE_CONTROL_ADD_CHANNEL, AddChannel, }, 423 { NACL_REVERSE_CONTROL_ADD_CHANNEL, AddChannel, },
395 { NACL_REVERSE_CONTROL_INIT_DONE, ModuleInitDoneRpc, }, 424 { NACL_REVERSE_CONTROL_INIT_DONE, ModuleInitDoneRpc, },
396 { NACL_REVERSE_CONTROL_REPORT_STATUS, ModuleExitRpc, }, 425 { NACL_REVERSE_CONTROL_REPORT_STATUS, ModuleExitRpc, },
426 { NACL_REVERSE_CONTROL_POST_MESSAGE, PostMessageRpc, },
397 { NACL_MANIFEST_LIST, ManifestListRpc, }, 427 { NACL_MANIFEST_LIST, ManifestListRpc, },
398 { NACL_MANIFEST_LOOKUP, ManifestLookupRpc, }, 428 { NACL_MANIFEST_LOOKUP, ManifestLookupRpc, },
399 { NACL_MANIFEST_UNREF, ManifestUnrefRpc, }, 429 { NACL_MANIFEST_UNREF, ManifestUnrefRpc, },
400 { NULL, NULL, }, 430 { NULL, NULL, },
401 }; 431 };
402 432
403 ReverseService::ReverseService(nacl::DescWrapper* conn_cap, 433 ReverseService::ReverseService(nacl::DescWrapper* conn_cap,
404 ReverseInterface* rif) 434 ReverseInterface* rif)
405 : service_socket_(NULL), 435 : service_socket_(NULL),
406 reverse_interface_(rif), 436 reverse_interface_(rif),
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 ("ReverseService::DecrThreadCount:" 508 ("ReverseService::DecrThreadCount:"
479 " Decrementing thread count when count is zero\n")); 509 " Decrementing thread count when count is zero\n"));
480 } 510 }
481 if (0 == --thread_count_) { 511 if (0 == --thread_count_) {
482 NaClXCondVarBroadcast(&cv_); 512 NaClXCondVarBroadcast(&cv_);
483 } 513 }
484 NaClXMutexUnlock(&mu_); 514 NaClXMutexUnlock(&mu_);
485 } 515 }
486 516
487 } // namespace nacl 517 } // namespace nacl
OLDNEW
« no previous file with comments | « src/trusted/reverse_service/reverse_service.h ('k') | src/trusted/service_runtime/arch/x86_64/sel_ldr_x86_64.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698