diff --git a/runtime/hsa-runtime/core/inc/signal.h b/runtime/hsa-runtime/core/inc/signal.h index 39e5321867..a1096ddde5 100644 --- a/runtime/hsa-runtime/core/inc/signal.h +++ b/runtime/hsa-runtime/core/inc/signal.h @@ -407,7 +407,7 @@ class Signal { core::Agent* async_copy_agent_; private: - static KernelMutex ipcLock_; + static HybridMutex ipcLock_; static std::map ipcMap_; static Signal* lookupIpc(hsa_signal_t signal); diff --git a/runtime/hsa-runtime/core/runtime/signal.cpp b/runtime/hsa-runtime/core/runtime/signal.cpp index 017d24689d..1ad41e2ff6 100644 --- a/runtime/hsa-runtime/core/runtime/signal.cpp +++ b/runtime/hsa-runtime/core/runtime/signal.cpp @@ -52,7 +52,7 @@ namespace rocr { namespace core { -KernelMutex Signal::ipcLock_; +HybridMutex Signal::ipcLock_; std::map Signal::ipcMap_; void SharedSignalPool_t::clear() { @@ -128,7 +128,7 @@ LocalSignal::LocalSignal(hsa_signal_value_t initial_value, bool exportable) } void Signal::registerIpc() { - ScopedAcquire lock(&ipcLock_); + ScopedAcquire lock(&ipcLock_); auto handle = Convert(this); assert(ipcMap_.find(handle.handle) == ipcMap_.end() && "Can't register the same IPC signal twice."); @@ -136,7 +136,7 @@ void Signal::registerIpc() { } bool Signal::deregisterIpc() { - ScopedAcquire lock(&ipcLock_); + ScopedAcquire lock(&ipcLock_); if (refcount_ != 0) return false; auto handle = Convert(this); const auto& it = ipcMap_.find(handle.handle); @@ -146,14 +146,14 @@ bool Signal::deregisterIpc() { } Signal* Signal::lookupIpc(hsa_signal_t signal) { - ScopedAcquire lock(&ipcLock_); + ScopedAcquire lock(&ipcLock_); const auto& it = ipcMap_.find(signal.handle); if (it == ipcMap_.end()) return nullptr; return it->second; } Signal* Signal::duplicateIpc(hsa_signal_t signal) { - ScopedAcquire lock(&ipcLock_); + ScopedAcquire lock(&ipcLock_); const auto& it = ipcMap_.find(signal.handle); if (it == ipcMap_.end()) return nullptr; it->second->refcount_++;