Loading services/audioflinger/AudioFlinger.cpp +4 −9 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ #include <private/android_filesystem_config.h> //#define BUFLOG_NDEBUG 0 #include <afutils/DumpTryLock.h> #include <afutils/BufLog.h> #include <afutils/TypedLogger.h> Loading Loading @@ -858,12 +859,6 @@ void AudioFlinger::dumpPermissionDenial(int fd, const Vector<String16>& args __u write(fd, result.c_str(), result.size()); } bool AudioFlinger::dumpTryLock(Mutex& mutex) { status_t err = mutex.timedLock(kDumpLockTimeoutNs); return err == NO_ERROR; } status_t AudioFlinger::dump(int fd, const Vector<String16>& args) NO_THREAD_SAFETY_ANALYSIS // conditional try lock { Loading @@ -871,7 +866,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock dumpPermissionDenial(fd, args); } else { // get state of hardware lock bool hardwareLocked = dumpTryLock(mHardwareLock); const bool hardwareLocked = afutils::dumpTryLock(mHardwareLock); if (!hardwareLocked) { String8 result(kHardwareLockedString); write(fd, result.c_str(), result.size()); Loading @@ -879,7 +874,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock mHardwareLock.unlock(); } const bool locked = dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); // failed to lock - AudioFlinger is probably deadlocked if (!locked) { Loading @@ -887,7 +882,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock write(fd, result.c_str(), result.size()); } bool clientLocked = dumpTryLock(mClientLock); const bool clientLocked = afutils::dumpTryLock(mClientLock); if (!clientLocked) { String8 result(kClientLockedString); write(fd, result.c_str(), result.size()); Loading services/audioflinger/AudioFlinger.h +0 −5 Original line number Diff line number Diff line Loading @@ -574,11 +574,6 @@ public: // AudioFlinger::setParameters() updates, other threads read w/o lock static uint32_t mScreenState; // Internal dump utilities. static const int kDumpLockTimeoutNs = 1 * NANOS_PER_SECOND; // TODO(b/291319167) extract to afutils static bool dumpTryLock(Mutex& mutex); private: void dumpPermissionDenial(int fd, const Vector<String16>& args); void dumpClients(int fd, const Vector<String16>& args); Loading services/audioflinger/DeviceEffectManager.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -15,16 +15,17 @@ ** limitations under the License. */ #define LOG_TAG "DeviceEffectManager" //#define LOG_NDEBUG 0 #include <utils/Log.h> #include <audio_utils/primitives.h> #include "DeviceEffectManager.h" #include "AudioFlinger.h" #include "EffectConfiguration.h" #include <afutils/DumpTryLock.h> #include <audio_utils/primitives.h> #include <media/audiohal/EffectsFactoryHalInterface.h> #include <utils/Log.h> // ---------------------------------------------------------------------------- Loading Loading @@ -172,7 +173,7 @@ status_t DeviceEffectManager::createEffectHal( void DeviceEffectManager::dump(int fd) NO_THREAD_SAFETY_ANALYSIS // conditional try lock { const bool locked = AudioFlinger::dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); if (!locked) { String8 result("DeviceEffectManager may be deadlocked\n"); write(fd, result.c_str(), result.size()); Loading services/audioflinger/DeviceEffectManager.h +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,11 @@ #pragma once #include "IAfEffect.h" #include "PatchCommandThread.h" #include <utils/Mutex.h> // avoid transitive dependency namespace android { class IAfDeviceEffectManagerCallback : public virtual RefBase { Loading services/audioflinger/Effects.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <system/audio_effects/effect_ns.h> #include <system/audio_effects/effect_spatializer.h> #include <system/audio_effects/effect_visualizer.h> #include <afutils/DumpTryLock.h> #include <audio_utils/channels.h> #include <audio_utils/primitives.h> #include <media/AudioCommonTypes.h> Loading Loading @@ -507,7 +508,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock result.appendFormat("\tEffect ID %d:\n", mId); bool locked = AudioFlinger::dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); // failed to lock - AudioFlinger is probably deadlocked if (!locked) { result.append("\t\tCould not lock Fx mutex:\n"); Loading Loading @@ -1621,7 +1622,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock EffectBase::dump(fd, args); String8 result; bool locked = AudioFlinger::dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); result.append("\t\tStatus Engine:\n"); result.appendFormat("\t\t%03d %p\n", Loading Loading @@ -2095,7 +2096,7 @@ void EffectHandle::framesProcessed(int32_t frames) const void EffectHandle::dumpToBuffer(char* buffer, size_t size) const NO_THREAD_SAFETY_ANALYSIS // conditional try lock { bool locked = mCblk != NULL && AudioFlinger::dumpTryLock(mCblk->lock); const bool locked = mCblk != nullptr && afutils::dumpTryLock(mCblk->lock); snprintf(buffer, size, "\t\t\t%5d %5d %3s %3s %5u %5u\n", (mClient == 0) ? getpid() : mClient->pid(), Loading Loading @@ -2644,7 +2645,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock result.appendFormat(" %zu effects for session %d\n", numEffects, mSessionId); if (numEffects) { bool locked = AudioFlinger::dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); // failed to lock - AudioFlinger is probably deadlocked if (!locked) { result.append("\tCould not lock mutex:\n"); Loading Loading @@ -3480,7 +3481,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock const Vector<String16> args; EffectBase::dump(fd, args); const bool locked = AudioFlinger::dumpTryLock(mProxyLock); const bool locked = afutils::dumpTryLock(mProxyLock); if (!locked) { String8 result("DeviceEffectProxy may be deadlocked\n"); write(fd, result.c_str(), result.size()); Loading Loading
services/audioflinger/AudioFlinger.cpp +4 −9 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ #include <private/android_filesystem_config.h> //#define BUFLOG_NDEBUG 0 #include <afutils/DumpTryLock.h> #include <afutils/BufLog.h> #include <afutils/TypedLogger.h> Loading Loading @@ -858,12 +859,6 @@ void AudioFlinger::dumpPermissionDenial(int fd, const Vector<String16>& args __u write(fd, result.c_str(), result.size()); } bool AudioFlinger::dumpTryLock(Mutex& mutex) { status_t err = mutex.timedLock(kDumpLockTimeoutNs); return err == NO_ERROR; } status_t AudioFlinger::dump(int fd, const Vector<String16>& args) NO_THREAD_SAFETY_ANALYSIS // conditional try lock { Loading @@ -871,7 +866,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock dumpPermissionDenial(fd, args); } else { // get state of hardware lock bool hardwareLocked = dumpTryLock(mHardwareLock); const bool hardwareLocked = afutils::dumpTryLock(mHardwareLock); if (!hardwareLocked) { String8 result(kHardwareLockedString); write(fd, result.c_str(), result.size()); Loading @@ -879,7 +874,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock mHardwareLock.unlock(); } const bool locked = dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); // failed to lock - AudioFlinger is probably deadlocked if (!locked) { Loading @@ -887,7 +882,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock write(fd, result.c_str(), result.size()); } bool clientLocked = dumpTryLock(mClientLock); const bool clientLocked = afutils::dumpTryLock(mClientLock); if (!clientLocked) { String8 result(kClientLockedString); write(fd, result.c_str(), result.size()); Loading
services/audioflinger/AudioFlinger.h +0 −5 Original line number Diff line number Diff line Loading @@ -574,11 +574,6 @@ public: // AudioFlinger::setParameters() updates, other threads read w/o lock static uint32_t mScreenState; // Internal dump utilities. static const int kDumpLockTimeoutNs = 1 * NANOS_PER_SECOND; // TODO(b/291319167) extract to afutils static bool dumpTryLock(Mutex& mutex); private: void dumpPermissionDenial(int fd, const Vector<String16>& args); void dumpClients(int fd, const Vector<String16>& args); Loading
services/audioflinger/DeviceEffectManager.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -15,16 +15,17 @@ ** limitations under the License. */ #define LOG_TAG "DeviceEffectManager" //#define LOG_NDEBUG 0 #include <utils/Log.h> #include <audio_utils/primitives.h> #include "DeviceEffectManager.h" #include "AudioFlinger.h" #include "EffectConfiguration.h" #include <afutils/DumpTryLock.h> #include <audio_utils/primitives.h> #include <media/audiohal/EffectsFactoryHalInterface.h> #include <utils/Log.h> // ---------------------------------------------------------------------------- Loading Loading @@ -172,7 +173,7 @@ status_t DeviceEffectManager::createEffectHal( void DeviceEffectManager::dump(int fd) NO_THREAD_SAFETY_ANALYSIS // conditional try lock { const bool locked = AudioFlinger::dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); if (!locked) { String8 result("DeviceEffectManager may be deadlocked\n"); write(fd, result.c_str(), result.size()); Loading
services/audioflinger/DeviceEffectManager.h +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,11 @@ #pragma once #include "IAfEffect.h" #include "PatchCommandThread.h" #include <utils/Mutex.h> // avoid transitive dependency namespace android { class IAfDeviceEffectManagerCallback : public virtual RefBase { Loading
services/audioflinger/Effects.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <system/audio_effects/effect_ns.h> #include <system/audio_effects/effect_spatializer.h> #include <system/audio_effects/effect_visualizer.h> #include <afutils/DumpTryLock.h> #include <audio_utils/channels.h> #include <audio_utils/primitives.h> #include <media/AudioCommonTypes.h> Loading Loading @@ -507,7 +508,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock result.appendFormat("\tEffect ID %d:\n", mId); bool locked = AudioFlinger::dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); // failed to lock - AudioFlinger is probably deadlocked if (!locked) { result.append("\t\tCould not lock Fx mutex:\n"); Loading Loading @@ -1621,7 +1622,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock EffectBase::dump(fd, args); String8 result; bool locked = AudioFlinger::dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); result.append("\t\tStatus Engine:\n"); result.appendFormat("\t\t%03d %p\n", Loading Loading @@ -2095,7 +2096,7 @@ void EffectHandle::framesProcessed(int32_t frames) const void EffectHandle::dumpToBuffer(char* buffer, size_t size) const NO_THREAD_SAFETY_ANALYSIS // conditional try lock { bool locked = mCblk != NULL && AudioFlinger::dumpTryLock(mCblk->lock); const bool locked = mCblk != nullptr && afutils::dumpTryLock(mCblk->lock); snprintf(buffer, size, "\t\t\t%5d %5d %3s %3s %5u %5u\n", (mClient == 0) ? getpid() : mClient->pid(), Loading Loading @@ -2644,7 +2645,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock result.appendFormat(" %zu effects for session %d\n", numEffects, mSessionId); if (numEffects) { bool locked = AudioFlinger::dumpTryLock(mLock); const bool locked = afutils::dumpTryLock(mLock); // failed to lock - AudioFlinger is probably deadlocked if (!locked) { result.append("\tCould not lock mutex:\n"); Loading Loading @@ -3480,7 +3481,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock const Vector<String16> args; EffectBase::dump(fd, args); const bool locked = AudioFlinger::dumpTryLock(mProxyLock); const bool locked = afutils::dumpTryLock(mProxyLock); if (!locked) { String8 result("DeviceEffectProxy may be deadlocked\n"); write(fd, result.c_str(), result.size()); Loading