| OLD | NEW |
| 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 NaClSrpcArg** in_args, | 45 NaClSrpcArg** in_args, |
| 46 NaClSrpcArg** out_args, | 46 NaClSrpcArg** out_args, |
| 47 NaClSrpcClosure* done) { | 47 NaClSrpcClosure* done) { |
| 48 nacl::ReverseService* service = reinterpret_cast<nacl::ReverseService*>( | 48 nacl::ReverseService* service = reinterpret_cast<nacl::ReverseService*>( |
| 49 rpc->channel->server_instance_data); | 49 rpc->channel->server_instance_data); |
| 50 NaClSrpcClosureRunner on_return(done); | 50 NaClSrpcClosureRunner on_return(done); |
| 51 | 51 |
| 52 UNREFERENCED_PARAMETER(in_args); | 52 UNREFERENCED_PARAMETER(in_args); |
| 53 | 53 |
| 54 NaClLog(4, "Entered AddChannel\n"); | 54 NaClLog(4, "Entered AddChannel\n"); |
| 55 out_args[0]->u.bval = service->Start(); | 55 out_args[0]->u.bval = service->Start(false); |
| 56 NaClLog(4, "Leaving AddChannel\n"); | 56 NaClLog(4, "Leaving AddChannel\n"); |
| 57 rpc->result = NACL_SRPC_RESULT_OK; | 57 rpc->result = NACL_SRPC_RESULT_OK; |
| 58 } | 58 } |
| 59 | 59 |
| 60 void RevLog(NaClSrpcRpc* rpc, | 60 void RevLog(NaClSrpcRpc* rpc, |
| 61 NaClSrpcArg** in_args, | 61 NaClSrpcArg** in_args, |
| 62 NaClSrpcArg** out_args, | 62 NaClSrpcArg** out_args, |
| 63 NaClSrpcClosure* done) { | 63 NaClSrpcClosure* done) { |
| 64 nacl::ReverseService* service = reinterpret_cast<nacl::ReverseService*>( | 64 nacl::ReverseService* service = reinterpret_cast<nacl::ReverseService*>( |
| 65 rpc->channel->server_instance_data); | 65 rpc->channel->server_instance_data); |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 | 395 |
| 396 ReverseService::~ReverseService() { | 396 ReverseService::~ReverseService() { |
| 397 if (thread_count_ != 0) { | 397 if (thread_count_ != 0) { |
| 398 NaClLog(LOG_FATAL, "ReverseService dtor when thread count is nonzero\n"); | 398 NaClLog(LOG_FATAL, "ReverseService dtor when thread count is nonzero\n"); |
| 399 } | 399 } |
| 400 NaClCondVarDtor(&cv_); | 400 NaClCondVarDtor(&cv_); |
| 401 NaClMutexDtor(&mu_); | 401 NaClMutexDtor(&mu_); |
| 402 } | 402 } |
| 403 | 403 |
| 404 | 404 |
| 405 bool ReverseService::Start() { | 405 static void RevServiceCbBinder(void *state, |
| 406 int server_loop_ret) { |
| 407 ReverseService *obj = reinterpret_cast<ReverseService *>(state); |
| 408 |
| 409 UNREFERENCED_PARAMETER(server_loop_ret); |
| 410 obj->reverse_interface()->ReportCrash(); |
| 411 } |
| 412 |
| 413 |
| 414 bool ReverseService::Start(bool crash_report) { |
| 406 NaClLog(4, "Entered ReverseService::Start\n"); | 415 NaClLog(4, "Entered ReverseService::Start\n"); |
| 407 return service_socket_->StartService(reinterpret_cast<void*>(this)); | 416 if (crash_report) { |
| 417 return service_socket_->StartServiceCb(RevServiceCbBinder, |
| 418 reinterpret_cast<void*>(this)); |
| 419 } else { |
| 420 return service_socket_->StartServiceCb(NULL, |
| 421 reinterpret_cast<void*>(this)); |
| 422 } |
| 408 } | 423 } |
| 409 | 424 |
| 410 void ReverseService::WaitForServiceThreadsToExit() { | 425 void ReverseService::WaitForServiceThreadsToExit() { |
| 411 NaClLog(4, "ReverseService::WaitForServiceThreadsToExit\n"); | 426 NaClLog(4, "ReverseService::WaitForServiceThreadsToExit\n"); |
| 412 NaClXMutexLock(&mu_); | 427 NaClXMutexLock(&mu_); |
| 413 while (0 != thread_count_) { | 428 while (0 != thread_count_) { |
| 414 NaClXCondVarWait(&cv_, &mu_); | 429 NaClXCondVarWait(&cv_, &mu_); |
| 415 NaClLog(5, "ReverseService::WaitForServiceThreadsToExit: woke up\n"); | 430 NaClLog(5, "ReverseService::WaitForServiceThreadsToExit: woke up\n"); |
| 416 } | 431 } |
| 417 NaClXMutexUnlock(&mu_); | 432 NaClXMutexUnlock(&mu_); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 436 ("ReverseService::DecrThreadCount:" | 451 ("ReverseService::DecrThreadCount:" |
| 437 " Decrementing thread count when count is zero\n")); | 452 " Decrementing thread count when count is zero\n")); |
| 438 } | 453 } |
| 439 if (0 == --thread_count_) { | 454 if (0 == --thread_count_) { |
| 440 NaClXCondVarBroadcast(&cv_); | 455 NaClXCondVarBroadcast(&cv_); |
| 441 } | 456 } |
| 442 NaClXMutexUnlock(&mu_); | 457 NaClXMutexUnlock(&mu_); |
| 443 } | 458 } |
| 444 | 459 |
| 445 } // namespace nacl | 460 } // namespace nacl |
| OLD | NEW |