libutils: Fix thread safety annotations in Mutex

The annotations for Mutex::tryLock and timedLock were
incorrectly specifying the return value for the successful
acquisition.

Test: make libutils_test
Change-Id: I9729b6555ede5cb1d6db046e33c35bf5926c7755
This commit is contained in:
Mikhail Naganov 2019-03-29 11:13:11 -07:00
parent 0a887aa14c
commit e1a285ddc1
2 changed files with 19 additions and 3 deletions

View file

@ -29,4 +29,20 @@ TEST(Mutex, compile) {
android::Mutex::Autolock _l(mLock);
i = 0;
modifyLockedVariable();
}
}
TEST(Mutex, tryLock) {
if (mLock.tryLock() != 0) {
return;
}
mLock.unlock();
}
#if defined(__ANDROID__)
TEST(Mutex, timedLock) {
if (mLock.timedLock(1) != 0) {
return;
}
mLock.unlock();
}
#endif

View file

@ -108,7 +108,7 @@ class CAPABILITY("mutex") Mutex {
void unlock() RELEASE();
// lock if possible; returns 0 on success, error otherwise
status_t tryLock() TRY_ACQUIRE(true);
status_t tryLock() TRY_ACQUIRE(0);
#if defined(__ANDROID__)
// Lock the mutex, but don't wait longer than timeoutNs (relative time).
@ -122,7 +122,7 @@ class CAPABILITY("mutex") Mutex {
// which is subject to NTP adjustments, and includes time during suspend,
// so a timeout may occur even though no processes could run.
// Not holding a partial wakelock may lead to a system suspend.
status_t timedLock(nsecs_t timeoutNs) TRY_ACQUIRE(true);
status_t timedLock(nsecs_t timeoutNs) TRY_ACQUIRE(0);
#endif
// Manages the mutex automatically. It'll be locked when Autolock is