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

Side by Side Diff: components/nacl/loader/nacl_ipc_adapter.cc

Issue 533823003: Signal condition variable in the critical section. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/nacl/loader/nacl_ipc_adapter.h" 5 #include "components/nacl/loader/nacl_ipc_adapter.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 base::AutoLock lock(lock_); 430 base::AutoLock lock(lock_);
431 while (locked_data_.to_be_received_.empty() && 431 while (locked_data_.to_be_received_.empty() &&
432 !locked_data_.channel_closed_) 432 !locked_data_.channel_closed_)
433 cond_var_.Wait(); 433 cond_var_.Wait();
434 if (locked_data_.channel_closed_) { 434 if (locked_data_.channel_closed_) {
435 retval = -1; 435 retval = -1;
436 } else { 436 } else {
437 retval = LockedReceive(msg); 437 retval = LockedReceive(msg);
438 DCHECK(retval > 0); 438 DCHECK(retval > 0);
439 } 439 }
440 cond_var_.Signal();
440 } 441 }
441 cond_var_.Signal();
442 return retval; 442 return retval;
443 } 443 }
444 444
445 void NaClIPCAdapter::CloseChannel() { 445 void NaClIPCAdapter::CloseChannel() {
446 { 446 {
447 base::AutoLock lock(lock_); 447 base::AutoLock lock(lock_);
448 locked_data_.channel_closed_ = true; 448 locked_data_.channel_closed_ = true;
449 cond_var_.Signal();
449 } 450 }
450 cond_var_.Signal();
451 451
452 task_runner_->PostTask(FROM_HERE, 452 task_runner_->PostTask(FROM_HERE,
453 base::Bind(&NaClIPCAdapter::CloseChannelOnIOThread, this)); 453 base::Bind(&NaClIPCAdapter::CloseChannelOnIOThread, this));
454 } 454 }
455 455
456 NaClDesc* NaClIPCAdapter::MakeNaClDesc() { 456 NaClDesc* NaClIPCAdapter::MakeNaClDesc() {
457 return MakeNaClDescCustom(this); 457 return MakeNaClDescCustom(this);
458 } 458 }
459 459
460 #if defined(OS_POSIX) 460 #if defined(OS_POSIX)
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 } 544 }
545 // No default, so the compiler will warn us if new types get added. 545 // No default, so the compiler will warn us if new types get added.
546 } 546 }
547 if (nacl_desc.get()) 547 if (nacl_desc.get())
548 rewritten_msg->AddDescriptor(nacl_desc.release()); 548 rewritten_msg->AddDescriptor(nacl_desc.release());
549 } 549 }
550 if (new_msg) 550 if (new_msg)
551 SaveMessage(*new_msg, rewritten_msg.get()); 551 SaveMessage(*new_msg, rewritten_msg.get());
552 else 552 else
553 SaveMessage(msg, rewritten_msg.get()); 553 SaveMessage(msg, rewritten_msg.get());
554 cond_var_.Signal();
554 } 555 }
555 cond_var_.Signal();
556 return true; 556 return true;
557 } 557 }
558 558
559 void NaClIPCAdapter::OnChannelConnected(int32 peer_pid) { 559 void NaClIPCAdapter::OnChannelConnected(int32 peer_pid) {
560 } 560 }
561 561
562 void NaClIPCAdapter::OnChannelError() { 562 void NaClIPCAdapter::OnChannelError() {
563 CloseChannel(); 563 CloseChannel();
564 } 564 }
565 565
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 header.flags = msg.flags(); 683 header.flags = msg.flags();
684 header.num_fds = static_cast<int>(rewritten_msg->desc_count()); 684 header.num_fds = static_cast<int>(rewritten_msg->desc_count());
685 685
686 rewritten_msg->SetData(header, msg.payload(), msg.payload_size()); 686 rewritten_msg->SetData(header, msg.payload(), msg.payload_size());
687 locked_data_.to_be_received_.push(rewritten_msg); 687 locked_data_.to_be_received_.push(rewritten_msg);
688 } 688 }
689 689
690 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) { 690 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) {
691 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags); 691 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags);
692 } 692 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698