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

Unified Diff: third_party/mojo/src/mojo/edk/system/dispatcher.cc

Issue 1311043003: Update mojo sdk to rev c02a28868825edfa57ab77947b8cb15e741c5598 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: third_party/mojo/src/mojo/edk/system/dispatcher.cc
diff --git a/third_party/mojo/src/mojo/edk/system/dispatcher.cc b/third_party/mojo/src/mojo/edk/system/dispatcher.cc
index 24f2c264a24a5e41f380e9724f1492655d550a80..ad362fe5eacd01807a1cc3569355fff19c5ce74e 100644
--- a/third_party/mojo/src/mojo/edk/system/dispatcher.cc
+++ b/third_party/mojo/src/mojo/edk/system/dispatcher.cc
@@ -26,16 +26,18 @@ DispatcherTransport DispatcherTryStartTransport(Dispatcher* dispatcher) {
// Dispatcher ------------------------------------------------------------------
+// TODO(vtl): The thread-safety analyzer isn't smart enough to deal with the
+// fact that we give up if |TryLock()| fails.
// static
DispatcherTransport Dispatcher::HandleTableAccess::TryStartTransport(
- Dispatcher* dispatcher) {
+ Dispatcher* dispatcher) MOJO_NO_THREAD_SAFETY_ANALYSIS {
DCHECK(dispatcher);
- if (!dispatcher->lock_.Try())
+ if (!dispatcher->mutex_.TryLock())
return DispatcherTransport();
// We shouldn't race with things that close dispatchers, since closing can
- // only take place either under |handle_table_lock_| or when the handle is
+ // only take place either under |handle_table_mutex_| or when the handle is
// marked as busy.
DCHECK(!dispatcher->is_closed_);
@@ -96,7 +98,7 @@ scoped_refptr<Dispatcher> Dispatcher::TransportDataAccess::Deserialize(
}
MojoResult Dispatcher::Close() {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -113,7 +115,7 @@ MojoResult Dispatcher::WriteMessage(
(transports->size() > 0 &&
transports->size() < GetConfiguration().max_message_num_handles));
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -128,7 +130,7 @@ MojoResult Dispatcher::ReadMessage(UserPointer<void> bytes,
DCHECK(!num_dispatchers || *num_dispatchers == 0 ||
(dispatchers && dispatchers->empty()));
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -139,7 +141,7 @@ MojoResult Dispatcher::ReadMessage(UserPointer<void> bytes,
MojoResult Dispatcher::WriteData(UserPointer<const void> elements,
UserPointer<uint32_t> num_bytes,
MojoWriteDataFlags flags) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -149,7 +151,7 @@ MojoResult Dispatcher::WriteData(UserPointer<const void> elements,
MojoResult Dispatcher::BeginWriteData(UserPointer<void*> buffer,
UserPointer<uint32_t> buffer_num_bytes,
MojoWriteDataFlags flags) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -157,7 +159,7 @@ MojoResult Dispatcher::BeginWriteData(UserPointer<void*> buffer,
}
MojoResult Dispatcher::EndWriteData(uint32_t num_bytes_written) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -167,7 +169,7 @@ MojoResult Dispatcher::EndWriteData(uint32_t num_bytes_written) {
MojoResult Dispatcher::ReadData(UserPointer<void> elements,
UserPointer<uint32_t> num_bytes,
MojoReadDataFlags flags) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -177,7 +179,7 @@ MojoResult Dispatcher::ReadData(UserPointer<void> elements,
MojoResult Dispatcher::BeginReadData(UserPointer<const void*> buffer,
UserPointer<uint32_t> buffer_num_bytes,
MojoReadDataFlags flags) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -185,7 +187,7 @@ MojoResult Dispatcher::BeginReadData(UserPointer<const void*> buffer,
}
MojoResult Dispatcher::EndReadData(uint32_t num_bytes_read) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -195,7 +197,7 @@ MojoResult Dispatcher::EndReadData(uint32_t num_bytes_read) {
MojoResult Dispatcher::DuplicateBufferHandle(
UserPointer<const MojoDuplicateBufferHandleOptions> options,
scoped_refptr<Dispatcher>* new_dispatcher) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -207,7 +209,7 @@ MojoResult Dispatcher::MapBuffer(
uint64_t num_bytes,
MojoMapBufferFlags flags,
scoped_ptr<embedder::PlatformSharedBufferMapping>* mapping) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -215,7 +217,7 @@ MojoResult Dispatcher::MapBuffer(
}
HandleSignalsState Dispatcher::GetHandleSignalsState() const {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_)
return HandleSignalsState();
@@ -226,7 +228,7 @@ MojoResult Dispatcher::AddAwakable(Awakable* awakable,
MojoHandleSignals signals,
uint32_t context,
HandleSignalsState* signals_state) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_) {
if (signals_state)
*signals_state = HandleSignalsState();
@@ -238,7 +240,7 @@ MojoResult Dispatcher::AddAwakable(Awakable* awakable,
void Dispatcher::RemoveAwakable(Awakable* awakable,
HandleSignalsState* handle_signals_state) {
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
if (is_closed_) {
if (handle_signals_state)
*handle_signals_state = HandleSignalsState();
@@ -257,14 +259,14 @@ Dispatcher::~Dispatcher() {
}
void Dispatcher::CancelAllAwakablesNoLock() {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(is_closed_);
// By default, waiting isn't supported. Only dispatchers that can be waited on
// will do something nontrivial.
}
void Dispatcher::CloseImplNoLock() {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(is_closed_);
// This may not need to do anything. Dispatchers should override this to do
// any actual close-time cleanup necessary.
@@ -275,7 +277,7 @@ MojoResult Dispatcher::WriteMessageImplNoLock(
uint32_t /*num_bytes*/,
std::vector<DispatcherTransport>* /*transports*/,
MojoWriteMessageFlags /*flags*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for message pipe dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -287,7 +289,7 @@ MojoResult Dispatcher::ReadMessageImplNoLock(
DispatcherVector* /*dispatchers*/,
uint32_t* /*num_dispatchers*/,
MojoReadMessageFlags /*flags*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for message pipe dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -296,7 +298,7 @@ MojoResult Dispatcher::ReadMessageImplNoLock(
MojoResult Dispatcher::WriteDataImplNoLock(UserPointer<const void> /*elements*/,
UserPointer<uint32_t> /*num_bytes*/,
MojoWriteDataFlags /*flags*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for data pipe dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -306,14 +308,14 @@ MojoResult Dispatcher::BeginWriteDataImplNoLock(
UserPointer<void*> /*buffer*/,
UserPointer<uint32_t> /*buffer_num_bytes*/,
MojoWriteDataFlags /*flags*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for data pipe dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
}
MojoResult Dispatcher::EndWriteDataImplNoLock(uint32_t /*num_bytes_written*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for data pipe dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -322,7 +324,7 @@ MojoResult Dispatcher::EndWriteDataImplNoLock(uint32_t /*num_bytes_written*/) {
MojoResult Dispatcher::ReadDataImplNoLock(UserPointer<void> /*elements*/,
UserPointer<uint32_t> /*num_bytes*/,
MojoReadDataFlags /*flags*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for data pipe dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -332,14 +334,14 @@ MojoResult Dispatcher::BeginReadDataImplNoLock(
UserPointer<const void*> /*buffer*/,
UserPointer<uint32_t> /*buffer_num_bytes*/,
MojoReadDataFlags /*flags*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for data pipe dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
}
MojoResult Dispatcher::EndReadDataImplNoLock(uint32_t /*num_bytes_read*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for data pipe dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -348,7 +350,7 @@ MojoResult Dispatcher::EndReadDataImplNoLock(uint32_t /*num_bytes_read*/) {
MojoResult Dispatcher::DuplicateBufferHandleImplNoLock(
UserPointer<const MojoDuplicateBufferHandleOptions> /*options*/,
scoped_refptr<Dispatcher>* /*new_dispatcher*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for buffer dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
@@ -359,14 +361,14 @@ MojoResult Dispatcher::MapBufferImplNoLock(
uint64_t /*num_bytes*/,
MojoMapBufferFlags /*flags*/,
scoped_ptr<embedder::PlatformSharedBufferMapping>* /*mapping*/) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, not supported. Only needed for buffer dispatchers.
return MOJO_RESULT_INVALID_ARGUMENT;
}
HandleSignalsState Dispatcher::GetHandleSignalsStateImplNoLock() const {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, waiting isn't supported. Only dispatchers that can be waited on
// will do something nontrivial.
@@ -378,7 +380,7 @@ MojoResult Dispatcher::AddAwakableImplNoLock(
MojoHandleSignals /*signals*/,
uint32_t /*context*/,
HandleSignalsState* signals_state) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, waiting isn't supported. Only dispatchers that can be waited on
// will do something nontrivial.
@@ -389,7 +391,7 @@ MojoResult Dispatcher::AddAwakableImplNoLock(
void Dispatcher::RemoveAwakableImplNoLock(Awakable* /*awakable*/,
HandleSignalsState* signals_state) {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// By default, waiting isn't supported. Only dispatchers that can be waited on
// will do something nontrivial.
@@ -419,7 +421,7 @@ bool Dispatcher::EndSerializeAndCloseImplNoLock(
}
bool Dispatcher::IsBusyNoLock() const {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
// Most dispatchers support only "atomic" operations, so they are never busy
// (in this sense).
@@ -427,7 +429,7 @@ bool Dispatcher::IsBusyNoLock() const {
}
void Dispatcher::CloseNoLock() {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
is_closed_ = true;
@@ -437,7 +439,7 @@ void Dispatcher::CloseNoLock() {
scoped_refptr<Dispatcher>
Dispatcher::CreateEquivalentDispatcherAndCloseNoLock() {
- lock_.AssertAcquired();
+ mutex_.AssertHeld();
DCHECK(!is_closed_);
is_closed_ = true;
@@ -475,7 +477,7 @@ bool Dispatcher::EndSerializeAndClose(
// See the comment above |EndSerializeAndCloseImplNoLock()|. In brief: Locking
// isn't actually needed, but we need to satisfy assertions (which we don't
// want to remove or weaken).
- base::AutoLock locker(lock_);
+ MutexLocker locker(&mutex_);
#endif
return EndSerializeAndCloseImplNoLock(channel, destination, actual_size,
@@ -486,7 +488,7 @@ bool Dispatcher::EndSerializeAndClose(
void DispatcherTransport::End() {
DCHECK(dispatcher_);
- dispatcher_->lock_.Release();
+ dispatcher_->mutex_.Unlock();
dispatcher_ = nullptr;
}

Powered by Google App Engine
This is Rietveld 408576698