"%s: Acquire on an acquired exclusive lock\n",
__FUNCTION__);
}
+ }
#if defined(MXUSER_STATS)
- MXUserAcquisitionSample(&lock->acquisitionStats, success, FALSE, 0ULL);
+ MXUserAcquisitionSample(&lock->acquisitionStats, success, !success, 0ULL);
#endif
- }
return success;
}
} MXUserBasicStats;
typedef struct {
- uint64 numContended; // Number of contended acquires
- uint64 timeContended; // Time spent contended on acquires
- uint64 numUncontended; // Number of uncontended acquires
- uint64 timeUncontended; // Time spent uncontended on acquires
+ uint64 numAttempts;
+ uint64 numSuccesses;
+ uint64 numSuccessesContended;
+ uint64 successContentionTime;
+ uint64 totalContentionTime;
MXUserBasicStats basicStats;
} MXUserAcquisitionStats;
success = MXRecLockTryAcquire(&lock->recursiveLock, GetReturnAddress());
if (success) {
-#if defined(MXUSER_STATS)
- if (MXRecLockCount(&lock->recursiveLock) == 1) {
- MXUserAcquisitionSample(&lock->acquisitionStats, success, FALSE,
- 0ULL);
- }
-#endif
-
MXUserAcquisitionTracking(&lock->header, FALSE);
}
+
+#if defined(MXUSER_STATS)
+ MXUserAcquisitionSample(&lock->acquisitionStats, success,
+ !success, 0ULL);
+#endif
}
return success;
__FUNCTION__, err);
}
+#if defined(MXUSER_STATS)
+ MXUserAcquisitionSample(&sema->acquisitionStats, downOccurred,
+ !downOccurred, 0ULL);
+#endif
+
Atomic_Dec(&sema->activeUserCount);
return downOccurred;
* MXUser_UpSemaphore --
*
* Perform an up (V; verhogen; "increase") operation on a semaphore.
- *
+ *
* Results:
* The semaphore count is incremented. Any thread waiting on the
* semaphore is awoken.